gatein SVN: r4038 - in epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US: icons and 1 other directory.
by do-not-reply@jboss.org
Author: smumford
Date: 2010-09-03 00:53:59 -0400 (Fri, 03 Sep 2010)
New Revision: 4038
Added:
epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/icons/
epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/icons/icon.svg
Modified:
epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/5.0.1_Release_Notes.xml
epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/Revision_History.xml
Log:
JBEPP-377: Added initial draft descriptions for RN JIRAs
Modified: epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/5.0.1_Release_Notes.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/5.0.1_Release_Notes.xml 2010-09-02 16:35:39 UTC (rev 4037)
+++ epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/5.0.1_Release_Notes.xml 2010-09-03 04:53:59 UTC (rev 4038)
@@ -16,121 +16,7 @@
<!-- <section>
<title>New Features</title>
<variablelist>
- <varlistentry>
- <term>Revamped User Interface</term>
- <listitem>
- <para>
- JBoss Enterprise Portal Platform (EPP) has replaced it's existing JSF user interface with one based upon a new framework that is an extension of the Groovy framework. This new interface includes many new features geared towards enabling more interaction and customization of portals, skins and pages by non-development resources.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Master Object Page Model </term>
- <listitem>
- <para>
- EPP has replaced the existing XML file drive page model towards a new model that treats each portlet page as an object stored in the Java Content Repository (JCR). This new model allows for pages to be highly reusable and enables simple page creation, editing and hierarchical node management within the portal.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>New Navigational Controls</term>
- <listitem>
- <para>
- EPP has implemented navigational controls that dynamically and contextually get data from the JCR. These controls are portlet based and can be customized and modified to meet a wide range of navigational options.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Site and Page Wizards</term>
- <listitem>
- <para>
- EPP has implemented wizard capabilities to simplify the creation of pages for non-development resources. These wizards enable selection of page placement in the portal, implementation of over 10 out of the box page layouts, addition of portlets and gadgets as well as page security.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Administration Portlets</term>
- <listitem>
- <para>
- EPP has implemented an entirely new set of administration portlets to simplify the management of portlets and gadgets and well as users and groups.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Right to Left Language Support</term>
- <listitem>
- <para>
- EPP supports localization and includes over 12 out of the box language localizations. This includes right to left language support.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Gadget Container</term>
- <listitem>
- <para>
- EPP has implemented the Shindig Open Social Gadget container.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Portlet Bridge 2.0</term>
- <listitem>
- <para>
- A new updated version of the Portlet Bridge Project that enables the easy creation of portlets that reuse JSF, Seam and Rich Faces applications. The new version of the bridge spans a wider range of use cases from the underlying applications as well as support for the Portlet 2.0 (JSR286) specification.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Example Portlets</term>
- <listitem>
- <para>
- EPP includes a directory with additional example and sample portlets that can be compiled and modified to meet customer requirements in projects.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>New Identity Manager</term>
- <listitem>
- <para>
- A new framework to manage users, groups and roles is implemented. This new identity manager enables attributes to utilize information from LDAP servers as well as external databases and applications
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>JBoss Enterprise Application Server 5.0</term>
- <listitem>
- <para>
- The JBoss Enterprise Application Server 5.0 (JBoss EAP 5.0) is based on the JBoss AS 5.1.x family and is the latest release of the world's most popular application server. JBoss EAP 5.0 represents the state of the art with the second generation JBoss Microcontainer-based enterprise Java run-time.
- </para>
- <para>
- In addition to supporting the latest Java EE specification (Java EE 5), JBoss EAP 5.0 integrates many of the best enterprise class services for advanced messaging, persistence, transactions, caching and high-availability.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>JBoss Microcontainer</term>
- <listitem>
- <para>
- The JBoss Microcontainer is a refactoring of the modular JBoss JMX Microkernel. It is a lightweight kernel that manages the loading, lifecycle and dependencies between POJOs. Together with a Servlet/JSP container, an EJB container, deployers, and management utilities, the JBoss Microcontainer provides a standard Java EE 5 profile.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>JBoss Cache</term>
- <listitem>
- <para>
- JBoss Cache provides replication for EJB and HTTP session state and supports distributed entity caching for JPA. It also provides superior performance and scalability with the new MultiVersion Concurrency Control (MVCC) locking scheme.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>JBoss Web Services</term>
- <listitem>
- <para>
- JBoss Web Services is a framework that provides support for the latest JAX-WS specification as well as a plugin architecture for supporting alternative Web Services Stacks.
- </para>
- </listitem>
- </varlistentry>
+
</variablelist>
</section> -->
@@ -222,7 +108,7 @@
PicketLink IDM
</entry>
<entry>
- 1.1.3
+ 1.1.5.GA
</entry>
</row>
<row>
@@ -230,7 +116,7 @@
eXoplatform JCR
</entry>
<entry>
- 1.12.1
+ 1.12.3
</entry>
</row>
<row>
@@ -257,6 +143,14 @@
1.0.1
</entry>
</row>
+ <row>
+ <entry>
+ Apache Shindig
+ </entry>
+ <entry>
+ 1.0-r790473-Patch03
+ </entry>
+ </row>
</tbody>
</tgroup>
</table>
@@ -268,7 +162,7 @@
The JBoss Enterprise Portal Platform Installation Guide contains details of software and hardware requirements as well as detailed installation instructions.
</para>
<para>
- The Installation Guide can be found online at <ulink type="http" url="http://www.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform/">www.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform/</ulink>.
+ The Installation Guide can be found online at <ulink type="http" url="http://docs.redhat.com/docs/">http://docs.redhat.com/docs/</ulink>.
</para>
</section>
@@ -277,101 +171,148 @@
Issues fixed in this release
</title>
<warning>
- <title>TODO</title>
+ <title>Draft</title>
<para>
- Following is a list of issues fixed in this release:
+ These entries are drafts. They have been drawn from comments and associated JIRAs from the list at:
+ <ulink type="http" url="https://jira.jboss.org/secure/IssueNavigator.jspa?mode=hide&amp;reque..."></ulink>.
</para>
+ <para>
+ <emphasis role="bold">They are likely not technically correct at the moment</emphasis>, but they will serve as a basis and will be corrected in subsequent iterations after technical and QE reviews.
+ </para>
</warning>
- <formalpara>
- <title>Component 1</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Issues fixed.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </formalpara>
- <formalpara>
- <title>Component 2</title>
- <para>
- <itemizedlist>
+ <para>
+ Following is a list of issues fixed in this release:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-452"></ulink></term>
<listitem>
<para>
- Issues fixed.
+ &PRODUCT; used <literal>request.getLocale()</literal> to localize a <literal>ResourceBundle</literal> which only reflected a user's <emphasis>browser</emphasis> language preference, while the rest of the portal employs a more complex logic to determine what locale is used. Under certain circumstances this mismatch caused the localization to switch incorrectly.
</para>
- </listitem>
- </itemizedlist>
- </para>
- </formalpara>
- <formalpara>
- <title>Etc</title>
- <para>
- <itemizedlist>
- <listitem>
<para>
- Issues fixed.
+ A <literal>LocalizationFilter</literal> to wrap <literal>HttpServletRequest</literal> and override <literal>getLocale()</literal> / <literal>getLocales()</literal> and return values that are in sync with the rest of the portal was installed to address this issue. This creates a universal solution for all extra-portal-page resources that are served via non-portal-page URLs, and are outside regular portal page processing pipeline.
</para>
+ <para>
+ As a result, portlets use the preferred locale of a user and not the locale from the http servlet request.
+ </para>
+ <para>
+ This fix has also corrected language issues in <ulink type="http" url="https://jira.jboss.org/browse/JBEPP-403"></ulink> (where the locale was not set correctly after a failed login attempt) and <ulink type="http" url="https://jira.jboss.org/browse/JBEPP-383"></ulink> (where language setting for languages with country variants, such as Chinese - China and Chinese - Taiwan, were lost at re-login)
+ </para>
+ <para>
+ (Information gathered from <ulink type="http" url="https://jira.jboss.org/browse/GTNPORTAL-1355"></ulink>)
+ </para>
</listitem>
- </itemizedlist>
- </para>
- </formalpara>
+ </varlistentry>
+ <varlistentry>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-451"></ulink></term>
+ <listitem>
+ <para>
+ <literal>NullPointerExceptions</literal> were being encountered when a new <literal>UIFormMultiValueInputset</literal> was created using a <literal>UIComponent</literal> without some arguments being explicitly set. <filename>UIFormMultiValueInputset.java</filename> has been modified to pass <literal>parameterTypes</literal> and <literal>parameterValues</literal> to a constructor when a new <literal>UIFormMultilValueInputset</literal> is created. This corrects the exceptions encountered when invoking a non-default constructor.
+ </para>
+ <para>
+ (Information sourced from <ulink type="http" url="https://jira.jboss.org/browse/GTNPORTAL-1223"></ulink>, <ulink type="http" url="https://jira.jboss.org/browse/GTNPORTAL-1225"></ulink> and <ulink type="http" url="https://jira.jboss.org/browse/JBEPP-405"></ulink>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-393"></ulink></term>
+ <listitem>
+ <para>
+ The Shindig Gadget Server was reporting malformed security tokens after a gadget was added to a portal. The error was originating from the <literal>org.apache.shindig.gadgets.servlet.RpcServlet</literal>'s <literal>doPost</literal> processing method. This method of reading POST requests from the servlet's input stream was being corrupted if the <literal>InputStream</literal> had already been read (in the recorded case, by <literal>RequestDumperValve</literal>).
+ </para>
+ <para>
+ This error was resolved with a component upgrade to Apache Shindig 1.0-r790473-Patch03 which allows a reset of the input stream before the <literal>doPost</literal> method is invoked.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-390"></ulink></term>
+ <listitem>
+ <para>
+ A bug in PicketLink IDM meant that changing the LDAP group membership type of a user to anything other than 'member' would appear to delete that user from the group. This was caused by the PicketLink IDM UI not showing any memberships other than 'member', even if other types were correctly retained in the underlying database.
+ </para>
+ <para>
+ This issue has been fixed with an updated PicketLink jar.
+ </para>
+ <para>
+ This fix has also resolved an issue encountered when deleting registered portal users from LDAP. Information about users deleted from LDAP would still be retained in the database and those user accounts would still appear in the portal user list. If one of these legacy accounts was then edited, the inconsistences would prevent any further login attempts from succeeding until the user session was cleared. (<ulink type="http" url="https://jira.jboss.org/browse/JBEPP-363"></ulink>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-368"></ulink></term>
+ <listitem>
+ <para>
+ The datasource defined in <filename>jboss-epp-5.0/jboss-as/docs/examples/portal/gatein-sample-portal-ds.xml</filename> has been updated from <literal>local-tx-datasourc</literal> to <literal>no-tx-datasource</literal>.
+ </para>
+ <para>
+ This update prevents exceptions being thrown by the JCR when the name of the datasource in <filename>server/default/deploy/gatein-ds.xml</filename> is changed to suit operational requirements.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-342"></ulink></term>
+ <listitem>
+ <para>
+ Node names were being dispalyed incorrectly if the name contained special characters when the site language was changed to a different locale. For example; if the site language was changed to German the SiteMap node would display as <literal>Seiten&uuml;bersicht</literal> instead of <emphasis role="bold">Seitenübersicht</emphasis>.
+ </para>
+ <para>
+ Badly escaped special characters caused these characters to render <emphasis>literally</emphasis> on the page instead of being rendered as human-readable special characters.
+ </para>
+ <para>
+ Language <filename>.properties</filename> files have been updated to escape special characters correctly and languages that contain special characters now render as expected.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-342"></ulink></term>
+ <listitem>
+ <para>
+ There is not enough information in this (or the associated JIRAs) for me to draft a description. Please assist.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-167"></ulink></term>
+ <listitem>
+ <para>
+ This release includes a copy of the <filename>jcip-annotations.jar</filename> in the <filename>/server/default/lib</filename> directory.
+ </para>
+ <para>
+ This file is needed to avoid an exception causing the <literal>HAPartition</literal> service to fail to start when using IBM JDK 1.5.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
<section id="sect-Release_Notes-_Known_Issues_with_this_release_">
<title> Known Issues with this release </title>
-
- <para>
- JBoss Enterprise Portal Platform 5.0 is based upon an entirely new JBoss community project named GateIn (<ulink type="http" url="http://www.gatein.org">www.gatein.org</ulink>). Previous releases were based upon the JBoss Portal Community Project (<ulink type="http" url="http://www.jboss.org/jbossportal">http://www.jboss.org/jbossportal</ulink>).
- </para>
- <para>
- Every reasonable effort has been made to address issues with the previous releases of Enterprise Portal Platform. However, since this is a completely new architecture it is difficult to provide a pure translation of issues from release to release.
- </para>
-
<section id="sect-Release_Notes-_Known_Issues_with_this_release_-General_Known_Issues">
<title>General Known Issues</title>
- <formalpara>
- <title><ulink url="https://jira.jboss.org/secure/IssueNavigator.jspa?mode=hide&requestId...">https://jira.jboss.org/secure/IssueNavigator.jspa?mode=hide&requestId...</ulink></title>
- <para>
- A list of general issues in this release.
- </para>
- </formalpara>
+ <para>
+ A list of general issues in this release can be found at:
+ </para>
+ <para>
+ <ulink type="http" url="https://jira.jboss.org/secure/IssueNavigator.jspa?reset=true&jqlQuery..."></ulink>
+ </para>
</section>
<section>
<title>Security Issues</title>
<variablelist>
<varlistentry>
- <term><ulink type="http" url="https://jira.jboss.org/">https://jira.jboss.org/</ulink></term>
+ <term>No issues</term>
<listitem>
<para>
- Security related JIRA issues
+ Any security related JIRA issues that need to go in here? JIRA says no.
</para>
- </listitem>
- </varlistentry>
-<!-- <varlistentry>
- <term><ulink type="http" url="https://jira.jboss.org/">https://jira.jboss.org/</ulink></term>
- <listitem>
<para>
-
+ If there aren't any JIRAs that need to be documented here, I'll remove this section.
</para>
</listitem>
</varlistentry>
- <varlistentry>
- <term> </term>
- <listitem>
- <para>
-
- </para>
- <para>
-
- </para>
-
-
- </listitem>
- </varlistentry> -->
</variablelist>
</section>
@@ -379,11 +320,14 @@
<title>Specific Known Issues</title>
<variablelist>
<varlistentry>
- <term><ulink type="http" url="https://jira.jboss.org">https://jira.jboss.org</ulink></term>
+ <term><ulink type="http" url="https://jira.jboss.org/browse/JBEPP-406"></ulink></term>
<listitem>
<para>
- Issue.
+ This issue has no information and I wasn't able to determine the problem from <ulink type="http" url="https://jira.jboss.org/browse/GTNPORTAL-756"></ulink> or <ulink type="http" url="http://jira.exoplatform.org/browse/PORTAL-3720"></ulink>.
</para>
+ <para>
+ Please supply a starter draft paragraph and I will edit it for the next burn of these Release Notes.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
@@ -401,6 +345,12 @@
<section>
<title>Recommended Practices</title>
+ <note>
+ <title>DOC TODO</title>
+ <para>
+ Is this section still required/relevant?
+ </para>
+ </note>
<para>
&PRODUCT; &VERSION; includes four pre-configured user accounts for testing and evaluation puposes. These accounts can be used for direct access to the portal.
</para>
@@ -433,10 +383,10 @@
<section>
<title>Migration from Enterprise Portal Platform 4.3</title>
<para>
- As stated in section 5 of this document, Enterprise Portal Platform 5 is based upon an entirely new core architecture and is not backwards compatible with Enterprise Portal Platform 4.3.
+ Enterprise Portal Platform 5 is based upon an entirely new core architecture and is not backwards compatible with Enterprise Portal Platform 4.3.
</para>
<para>
- As a value added part of an enterprise subscription to EPP the JBoss Portal team is working to develop a set of migration utilities (which may take the form of documentation, guides and/or scripts) to assist customers in migration. We intend to release these utilities in a future revision of JBoss Enterprise Portal Platform 5.x.
+ As a value added part of an enterprise subscription the JBoss Portal team is working to develop a set of migration utilities (which may take the form of documentation, guides and/or scripts) to assist customers in migration. We intend to release these utilities in a future revision of JBoss Enterprise Portal Platform 5.x.
</para>
<para>
For customers seeking to begin a migration prior to the availability of any Red Hat provided migration utilities, please contact Red Hat JBoss Support for migration advice. Red Hat JBoss support will be the main communication channel for migration knowledge as it is developed.
@@ -447,16 +397,21 @@
</section>
<section id="Tech-previews">
- <title>Technology Previews</title>
-
- <warning>
- <title>Support</title>
- <para>
- Technology Preview features are not fully supported under Red Hat subscription level agreements (SLAs), may not be functionally complete, and are not intended for production use. However, these features provide early access to upcoming product innovations, enabling customers to test functionality and provide feedback during the development process. As Red Hat considers making future iterations of Technology Preview features generally available, we will provide commercially reasonable efforts to resolve any reported issues that customers experience when using these features.
- </para>
- </warning>
+ <title>Technology Previews</title>
+ <warning>
+ <title>Support</title>
+ <para>
+ Technology Preview features are not fully supported under Red Hat subscription level agreements (SLAs), may not be functionally complete, and are not intended for production use. However, these features provide early access to upcoming product innovations, enabling customers to test functionality and provide feedback during the development process. As Red Hat considers making future iterations of Technology Preview features generally available, we will provide commercially reasonable efforts to resolve any reported issues that customers experience when using these features.
+ </para>
+ </warning>
<section>
<title>Site Publisher</title>
+ <note>
+ <title>DOC TODO</title>
+ <para>
+ Is this section still required/relevant?
+ </para>
+ </note>
<para>
&PRODUCT; 5.1 will include an optional web content authoring system add on called Site Publisher. A technical preview of this add on is available for download from the <ulink type="http" url="https://support.redhat.com/jbossnetwork/restricted/softwareDetail.html?so...">Red Hat Customer Support Portal</ulink>.
</para>
@@ -469,7 +424,7 @@
<section id="sect-Release_Notes-_Documentation_">
<title> Documentation </title>
<para>
- Visit <ulink type="http" url="http://www.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform/">www.redhat.com</ulink> for further documentation regarding &PRODUCT;.
+ Visit <ulink type="http" url="http://docs.redhat.com/docs/en-US/index.html">http://docs.redhat.com/docs/en-US/index.html</ulink> for further documentation regarding &PRODUCT;.
</para>
<para>
This documentation includes:
@@ -555,5 +510,4 @@
</section>
<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-</article>
-
+</article>
\ No newline at end of file
Modified: epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/Revision_History.xml 2010-09-02 16:35:39 UTC (rev 4037)
+++ epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/Revision_History.xml 2010-09-03 04:53:59 UTC (rev 4038)
@@ -7,13 +7,13 @@
<revhistory>
<revision>
<revnumber>1.0</revnumber>
- <date>Fri Jun 25 2010</date>
+ <date>Fri Sep 03 2010</date>
<author>
<firstname>Scott</firstname>
<surname>Mumford</surname>
<email>smumford(a)redhat.com</email>
</author>
- <author>
+<!-- <author>
<firstname>Luc</firstname>
<surname>Texier</surname>
<email>ltexier(a)redhat.com</email>
@@ -22,7 +22,7 @@
<firstname>Thomas</firstname>
<surname>Heute</surname>
<email>theute(a)redhat.com</email>
- </author>
+ </author> -->
<revdescription>
<simplelist>
<member>Release Notes created for Enterprise Portal Platform 5.0.1 release.</member>
Added: epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/icons/icon.svg
===================================================================
--- epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/icons/icon.svg (rev 0)
+++ epp/docs/branches/EPP_5_0_Branch/5.0.1_Release_Notes/en-US/icons/icon.svg 2010-09-03 04:53:59 UTC (rev 4038)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+ xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="32"
+ height="32"
+ id="svg3017"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ sodipodi:docname="book.svg"
+ sodipodi:docbase="/home/andy/Desktop">
+ <metadata
+ id="metadata489">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ inkscape:window-height="480"
+ inkscape:window-width="858"
+ inkscape:pageshadow="0"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ inkscape:zoom="1"
+ inkscape:cx="16"
+ inkscape:cy="15.944056"
+ inkscape:window-x="0"
+ inkscape:window-y="33"
+ inkscape:current-layer="svg3017" />
+ <defs
+ id="defs3019">
+ <linearGradient
+ id="linearGradient2381">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop2383" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop2385" />
+ </linearGradient>
+ <linearGradient
+ x1="415.73831"
+ y1="11.854"
+ x2="418.13361"
+ y2="18.8104"
+ id="XMLID_1758_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop3903" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop3905" />
+ <a:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="XMLID_1757_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3890" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3892" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_1755_">
+ <use
+ id="use3874"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_343_" />
+ </clipPath>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3877" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3879" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3881" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3883" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="471.0806"
+ y1="201.07761"
+ x2="481.91711"
+ y2="210.4977"
+ id="XMLID_1754_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#6498c1;stop-opacity:1"
+ offset="0.005618"
+ id="stop3863" />
+ <stop
+ style="stop-color:#79a9cc;stop-opacity:1"
+ offset="0.2332"
+ id="stop3865" />
+ <stop
+ style="stop-color:#a4cde2;stop-opacity:1"
+ offset="0.74049997"
+ id="stop3867" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="1"
+ id="stop3869" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="5.618000e-003" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="0.4438" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop3851" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop3853" />
+ <a:midPointStop
+ style="stop-color:#B2B2B2"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B2B2B2"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_1751_">
+ <use
+ id="use3837"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_338_" />
+ </clipPath>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3840" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3842" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3844" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3846" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="468.2915"
+ y1="204.7612"
+ x2="479.39871"
+ y2="214.4166"
+ id="XMLID_1750_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3830" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3832" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop3818" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop3820" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="501.0903"
+ y1="-19.2544"
+ x2="531.85413"
+ y2="0.72390002"
+ id="XMLID_1748_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop3803" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop3805" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop3807" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop3809" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="XMLID_2275_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9947" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9949" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9951" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9953" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="XMLID_2273_">
+ <use
+ id="use9933"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_960_" />
+ </clipPath>
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="XMLID_2274_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9936" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9938" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9940" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9942" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="478.21341"
+ y1="-131.9297"
+ x2="469.85818"
+ y2="-140.28481"
+ id="XMLID_2272_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop9917" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop9919" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop9921" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop9923" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ style="overflow:visible"
+ id="TriangleInM">
+ <path
+ d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+ transform="scale(-0.4,-0.4)"
+ style="fill:#5c5c4f"
+ id="path3197" />
+ </marker>
+ <linearGradient
+ x1="200.7363"
+ y1="100.4028"
+ x2="211.99519"
+ y2="89.143997"
+ id="XMLID_3298_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#bfbfbf;stop-opacity:1"
+ offset="0"
+ id="stop20103" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop20105" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#BFBFBF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#BFBFBF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="200.7363"
+ y1="100.4028"
+ x2="211.99519"
+ y2="89.143997"
+ id="linearGradient36592"
+ xlink:href="#XMLID_3298_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="181.2925"
+ y1="110.8481"
+ x2="192.6369"
+ y2="99.5037"
+ id="XMLID_3297_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="stop20096" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop20098" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="181.2925"
+ y1="110.8481"
+ x2="192.6369"
+ y2="99.5037"
+ id="linearGradient36595"
+ xlink:href="#XMLID_3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="211.77589"
+ y1="105.7749"
+ x2="212.6619"
+ y2="108.2092"
+ id="XMLID_3296_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#0f6124;stop-opacity:1"
+ offset="0"
+ id="stop20087" />
+ <stop
+ style="stop-color:#219630;stop-opacity:1"
+ offset="1"
+ id="stop20089" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#0F6124" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#0F6124" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#219630" />
+ </linearGradient>
+ <linearGradient
+ x1="211.77589"
+ y1="105.7749"
+ x2="212.6619"
+ y2="108.2092"
+ id="linearGradient36677"
+ xlink:href="#XMLID_3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="208.9834"
+ y1="116.8296"
+ x2="200.0811"
+ y2="96.834602"
+ id="XMLID_3295_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20076" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.5"
+ id="stop20078" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop20080" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="208.9834"
+ y1="116.8296"
+ x2="200.0811"
+ y2="96.834602"
+ id="linearGradient36604"
+ xlink:href="#XMLID_3295_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="195.5264"
+ y1="97.911102"
+ x2="213.5213"
+ y2="115.9061"
+ id="XMLID_3294_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop20069" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop20071" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="195.5264"
+ y1="97.911102"
+ x2="213.5213"
+ y2="115.9061"
+ id="linearGradient36607"
+ xlink:href="#XMLID_3294_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="186.1938"
+ y1="109.1343"
+ x2="206.6881"
+ y2="88.639999"
+ id="XMLID_3293_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20056" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.16850001"
+ id="stop20058" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.23029999"
+ id="stop20060" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.2809"
+ id="stop20062" />
+ <stop
+ style="stop-color:#c2c2c2;stop-opacity:1"
+ offset="0.5"
+ id="stop20064" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.1685"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.2303"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.2809"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#C2C2C2" />
+ </linearGradient>
+ <linearGradient
+ x1="186.1938"
+ y1="109.1343"
+ x2="206.6881"
+ y2="88.639999"
+ id="linearGradient36610"
+ xlink:href="#XMLID_3293_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <linearGradient
+ x1="184.8569"
+ y1="112.2676"
+ x2="211.94099"
+ y2="89.541397"
+ id="XMLID_3292_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop20043" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.16850001"
+ id="stop20045" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.23029999"
+ id="stop20047" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0.2809"
+ id="stop20049" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop20051" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.1685"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.2303"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.2809"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="184.8569"
+ y1="112.2676"
+ x2="211.94099"
+ y2="89.541397"
+ id="linearGradient36613"
+ xlink:href="#XMLID_3292_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ style="overflow:visible"
+ id="TriangleOutM">
+ <path
+ d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+ transform="scale(0.4,0.4)"
+ style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+ id="path3238" />
+ </marker>
+ <linearGradient
+ x1="165.3"
+ y1="99.5"
+ x2="165.3"
+ y2="115.9"
+ id="XMLID_3457_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="0"
+ id="stop8309" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8311" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="1"
+ id="stop8313" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#999999" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#999999" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#B2B2B2" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#B2B2B2" />
+ </linearGradient>
+ <linearGradient
+ x1="165.3"
+ y1="99.5"
+ x2="165.3"
+ y2="115.9"
+ id="lg1997"
+ xlink:href="#XMLID_3457_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="175"
+ y1="99.800003"
+ x2="175"
+ y2="112.5"
+ id="XMLID_3456_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0"
+ id="stop8300" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="0.60000002"
+ id="stop8302" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="1"
+ id="stop8304" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.6"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#191919" />
+ </linearGradient>
+ <linearGradient
+ x1="175"
+ y1="99.800003"
+ x2="175"
+ y2="112.5"
+ id="lg2000"
+ xlink:href="#XMLID_3456_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="168.8"
+ y1="107.1"
+ x2="164.5"
+ y2="110"
+ id="XMLID_3455_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="0"
+ id="stop8291" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="0.69999999"
+ id="stop8293" />
+ <stop
+ style="stop-color:#191919;stop-opacity:1"
+ offset="1"
+ id="stop8295" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.7"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#191919" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#191919" />
+ </linearGradient>
+ <linearGradient
+ x1="168.8"
+ y1="107.1"
+ x2="164.5"
+ y2="110"
+ id="lg2003"
+ xlink:href="#XMLID_3455_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ id="lg63694">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop63696" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop63698" />
+ </linearGradient>
+ <linearGradient
+ x1="458"
+ y1="483"
+ x2="465.20001"
+ y2="271.39999"
+ id="lg2006"
+ xlink:href="#lg63694"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+ <linearGradient
+ x1="176.3"
+ y1="110.1"
+ x2="158.7"
+ y2="105"
+ id="XMLID_3453_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="0"
+ id="stop8271" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0.2"
+ id="stop8273" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop8275" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#666666" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#737373" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="176.3"
+ y1="110.1"
+ x2="158.7"
+ y2="105"
+ id="lg2009"
+ xlink:href="#XMLID_3453_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="173.60001"
+ y1="118.9"
+ x2="172.8"
+ y2="128.2"
+ id="XMLID_3449_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8232" />
+ <stop
+ style="stop-color:#fff95e;stop-opacity:1"
+ offset="0.60000002"
+ id="stop8234" />
+ <stop
+ style="stop-color:#ecd600;stop-opacity:1"
+ offset="1"
+ id="stop8236" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.6"
+ style="stop-color:#FFF95E" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFF95E" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#ECD600" />
+ </linearGradient>
+ <linearGradient
+ x1="173.60001"
+ y1="118.9"
+ x2="172.8"
+ y2="128.2"
+ id="lg2016"
+ xlink:href="#XMLID_3449_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <radialGradient
+ cx="284.60001"
+ cy="172.60001"
+ r="6.5"
+ fx="284.60001"
+ fy="172.60001"
+ id="XMLID_3448_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8219" />
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8221" />
+ <stop
+ style="stop-color:#c96b00;stop-opacity:1"
+ offset="0.89999998"
+ id="stop8223" />
+ <stop
+ style="stop-color:#9a5500;stop-opacity:1"
+ offset="1"
+ id="stop8225" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.9"
+ style="stop-color:#C96B00" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#C96B00" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#9A5500" />
+ </radialGradient>
+ <radialGradient
+ cx="284.60001"
+ cy="172.60001"
+ r="6.5"
+ fx="284.60001"
+ fy="172.60001"
+ id="rg2020"
+ xlink:href="#XMLID_3448_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+ <linearGradient
+ x1="158.10001"
+ y1="123"
+ x2="164.2"
+ y2="126.6"
+ id="XMLID_3447_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecd600;stop-opacity:1"
+ offset="0"
+ id="stop8204" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8206" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop8208" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECD600" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECD600" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="158.10001"
+ y1="123"
+ x2="164.2"
+ y2="126.6"
+ id="lg2026"
+ xlink:href="#XMLID_3447_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <radialGradient
+ cx="280.89999"
+ cy="163.7"
+ r="10.1"
+ fx="280.89999"
+ fy="163.7"
+ id="XMLID_3446_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop8197" />
+ <stop
+ style="stop-color:#fff95e;stop-opacity:1"
+ offset="1"
+ id="stop8199" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#FFFFFF" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#FFF95E" />
+ </radialGradient>
+ <radialGradient
+ cx="280.89999"
+ cy="163.7"
+ r="10.1"
+ fx="280.89999"
+ fy="163.7"
+ id="rg2029"
+ xlink:href="#XMLID_3446_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+ <linearGradient
+ x1="156.5"
+ y1="122.7"
+ x2="180.10001"
+ y2="122.7"
+ id="XMLID_3445_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8184" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.2"
+ id="stop8186" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8188" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.40000001"
+ id="stop8190" />
+ <stop
+ style="stop-color:#d68100;stop-opacity:1"
+ offset="1"
+ id="stop8192" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.4"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#D68100" />
+ </linearGradient>
+ <linearGradient
+ x1="156.5"
+ y1="122.7"
+ x2="180.10001"
+ y2="122.7"
+ id="lg2032"
+ xlink:href="#XMLID_3445_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="156.39999"
+ y1="115.4"
+ x2="180.10001"
+ y2="115.4"
+ id="XMLID_3444_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ecb300;stop-opacity:1"
+ offset="0"
+ id="stop8171" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.2"
+ id="stop8173" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.30000001"
+ id="stop8175" />
+ <stop
+ style="stop-color:#ffe900;stop-opacity:1"
+ offset="0.40000001"
+ id="stop8177" />
+ <stop
+ style="stop-color:#d68100;stop-opacity:1"
+ offset="1"
+ id="stop8179" />
+ <a:midPointstop
+ offset="0"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#ECB300" />
+ <a:midPointstop
+ offset="0.2"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.3"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFFFB3" />
+ <a:midPointstop
+ offset="0.4"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="0.5"
+ style="stop-color:#FFE900" />
+ <a:midPointstop
+ offset="1"
+ style="stop-color:#D68100" />
+ </linearGradient>
+ <linearGradient
+ x1="156.39999"
+ y1="115.4"
+ x2="180.10001"
+ y2="115.4"
+ id="lg2035"
+ xlink:href="#XMLID_3444_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+ <linearGradient
+ x1="379.70001"
+ y1="167.89999"
+ x2="383.89999"
+ y2="172.89999"
+ id="lg4286_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16159" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.1"
+ id="s16161" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s16163" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.1" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="379.60001"
+ y1="167.8"
+ x2="383.79999"
+ y2="172"
+ id="lg6416"
+ xlink:href="#lg4286_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+ <linearGradient
+ x1="384.20001"
+ y1="169.8"
+ x2="384.79999"
+ y2="170.39999"
+ id="lg4285_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="0"
+ id="s16152" />
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="1"
+ id="s16154" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#737373"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="384.20001"
+ y1="169.8"
+ x2="384.79999"
+ y2="170.39999"
+ id="lg6453"
+ xlink:href="#lg4285_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+ <linearGradient
+ x1="380.5"
+ y1="172.60001"
+ x2="382.79999"
+ y2="173.7"
+ id="lg4284_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+ <stop
+ style="stop-color:gray;stop-opacity:1"
+ offset="0"
+ id="s16145" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="1"
+ id="s16147" />
+ <ns:midPointStop
+ style="stop-color:#808080"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#808080"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#E5E5E5"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="380.5"
+ y1="172.60001"
+ x2="382.79999"
+ y2="173.7"
+ id="lg6456"
+ xlink:href="#lg4284_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+ <radialGradient
+ cx="347.29999"
+ cy="244.5"
+ r="5.1999998"
+ fx="347.29999"
+ fy="244.5"
+ id="lg4282_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#333;stop-opacity:1"
+ offset="0"
+ id="s16135" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s16137" />
+ <ns:midPointStop
+ style="stop-color:#333333"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#333333"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <linearGradient
+ x1="310.39999"
+ y1="397.70001"
+ x2="310.89999"
+ y2="399.5"
+ id="lg4280_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="0"
+ id="s16111" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.60000002"
+ id="s16113" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="1"
+ id="s16115" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.6" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="310.39999"
+ y1="397.70001"
+ x2="310.89999"
+ y2="399.5"
+ id="lg6467"
+ xlink:href="#lg4280_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="310.89999"
+ y1="395.79999"
+ x2="313.29999"
+ y2="403.10001"
+ id="lg4279_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0"
+ id="s16100" />
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0.40000001"
+ id="s16102" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="0.89999998"
+ id="s16104" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="1"
+ id="s16106" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.4" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.9" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="310.89999"
+ y1="395.79999"
+ x2="313.29999"
+ y2="403.10001"
+ id="lg6465"
+ xlink:href="#lg4279_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="307.79999"
+ y1="395.20001"
+ x2="313.79999"
+ y2="413.60001"
+ id="lg4278_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+ <stop
+ style="stop-color:#ffffb3;stop-opacity:1"
+ offset="0"
+ id="s16091" />
+ <stop
+ style="stop-color:#fcd72f;stop-opacity:1"
+ offset="0.40000001"
+ id="s16093" />
+ <stop
+ style="stop-color:#ffcd00;stop-opacity:1"
+ offset="1"
+ id="s16095" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFB3"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FCD72F"
+ offset="0.4" />
+ <ns:midPointStop
+ style="stop-color:#FCD72F"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFCD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="306.5"
+ y1="393"
+ x2="309"
+ y2="404"
+ id="lg6400"
+ xlink:href="#lg4278_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+ <linearGradient
+ x1="352.10001"
+ y1="253.60001"
+ x2="348.5"
+ y2="237.8"
+ id="lg4276_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#ffff87;stop-opacity:1"
+ offset="0"
+ id="s16077" />
+ <stop
+ style="stop-color:#ffad00;stop-opacity:1"
+ offset="1"
+ id="s16079" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFAD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="335.60001"
+ y1="354.79999"
+ x2="337.89999"
+ y2="354.79999"
+ id="lg4275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s16057" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.80000001"
+ id="s16059" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="s16061" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.8" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="335.60001"
+ y1="354.79999"
+ x2="337.89999"
+ y2="354.79999"
+ id="lg6463"
+ xlink:href="#lg4275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="337.39999"
+ y1="353.10001"
+ x2="339.39999"
+ y2="357.10001"
+ id="lg4274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16048" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.1"
+ id="s16050" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s16052" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.1" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="337.39999"
+ y1="353.10001"
+ x2="339.39999"
+ y2="357.10001"
+ id="lg6461"
+ xlink:href="#lg4274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="334.39999"
+ y1="355.5"
+ x2="335.5"
+ y2="356.79999"
+ id="lg4273_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s16041" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s16043" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="5.6e-003" />
+ <ns:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="334.39999"
+ y1="355.5"
+ x2="335.5"
+ y2="356.79999"
+ id="lg6381"
+ xlink:href="#lg4273_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+ <linearGradient
+ x1="348.39999"
+ y1="247.39999"
+ x2="354.10001"
+ y2="242"
+ id="lg4271_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="s16025" />
+ <stop
+ style="stop-color:#9e9e9e;stop-opacity:1"
+ offset="0.40000001"
+ id="s16027" />
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="1"
+ id="s16029" />
+ <ns:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#000000"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="351.29999"
+ y1="257.29999"
+ x2="346.29999"
+ y2="235.5"
+ id="lg4270_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ffff87;stop-opacity:1"
+ offset="0"
+ id="s16007" />
+ <stop
+ style="stop-color:#ffad00;stop-opacity:1"
+ offset="1"
+ id="s16009" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0" />
+ <ns:midPointStop
+ style="stop-color:#FFFF87"
+ offset="0.5" />
+ <ns:midPointStop
+ style="stop-color:#FFAD00"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="351.29999"
+ y1="257.29999"
+ x2="346.29999"
+ y2="235.5"
+ id="lg6459"
+ xlink:href="#lg4270_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+ <linearGradient
+ x1="43.799999"
+ y1="32.5"
+ x2="63.299999"
+ y2="66.400002"
+ id="XMLID_2708_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop75318" />
+ <stop
+ style="stop-color:#fffcea;stop-opacity:1"
+ offset="1"
+ id="stop75320" />
+ <a:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#FFFCEA"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="43.799999"
+ y1="32.5"
+ x2="63.299999"
+ y2="66.400002"
+ id="lg1907"
+ xlink:href="#XMLID_2708_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="52.5"
+ y1="40.400002"
+ x2="58.200001"
+ y2="64"
+ id="XMLID_2707_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#ffdea0;stop-opacity:1"
+ offset="0"
+ id="stop75305" />
+ <stop
+ style="stop-color:#ffd89e;stop-opacity:1"
+ offset="0.30000001"
+ id="stop75307" />
+ <stop
+ style="stop-color:#ffd79e;stop-opacity:1"
+ offset="0.30000001"
+ id="stop75309" />
+ <stop
+ style="stop-color:#dbaf6d;stop-opacity:1"
+ offset="0.69999999"
+ id="stop75311" />
+ <stop
+ style="stop-color:#6f4c24;stop-opacity:1"
+ offset="1"
+ id="stop75313" />
+ <a:midPointStop
+ style="stop-color:#FFDEA0"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#FFDEA0"
+ offset="0.6" />
+ <a:midPointStop
+ style="stop-color:#FFD79E"
+ offset="0.3" />
+ <a:midPointStop
+ style="stop-color:#FFD79E"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#DBAF6D"
+ offset="0.7" />
+ <a:midPointStop
+ style="stop-color:#DBAF6D"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#6F4C24"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="52.5"
+ y1="40.400002"
+ x2="58.200001"
+ y2="64"
+ id="lg1910"
+ xlink:href="#XMLID_2707_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="58"
+ y1="73.199997"
+ x2="44.5"
+ y2="19"
+ id="XMLID_2704_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)">
+ <stop
+ style="stop-color:#d4a96c;stop-opacity:1"
+ offset="0.5"
+ id="stop75284" />
+ <stop
+ style="stop-color:#dcb273;stop-opacity:1"
+ offset="0.60000002"
+ id="stop75286" />
+ <stop
+ style="stop-color:#f0ca87;stop-opacity:1"
+ offset="0.80000001"
+ id="stop75288" />
+ <stop
+ style="stop-color:#ffdc96;stop-opacity:1"
+ offset="0.69999999"
+ id="stop75290" />
+ <stop
+ style="stop-color:#c18a42;stop-opacity:1"
+ offset="1"
+ id="stop75292" />
+ <a:midPointStop
+ style="stop-color:#D4A96C"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#D4A96C"
+ offset="0.6" />
+ <a:midPointStop
+ style="stop-color:#FFDC96"
+ offset="0.7" />
+ <a:midPointStop
+ style="stop-color:#FFDC96"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#C18A42"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="53.700001"
+ y1="32"
+ x2="53.700001"
+ y2="64.599998"
+ id="XMLID_2703_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5c9b0;stop-opacity:1"
+ offset="0"
+ id="stop75268" />
+ <stop
+ style="stop-color:#e5c9b0;stop-opacity:1"
+ offset="0.40000001"
+ id="stop75270" />
+ <stop
+ style="stop-color:#c0aa94;stop-opacity:1"
+ offset="1"
+ id="stop75272" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.4" />
+ <a:midPointStop
+ style="stop-color:#E5C9B0"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#C0AA94"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="53.700001"
+ y1="32"
+ x2="53.700001"
+ y2="64.599998"
+ id="lg1916"
+ xlink:href="#XMLID_2703_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-29,-22.6)" />
+ <linearGradient
+ x1="224.31"
+ y1="19.450001"
+ x2="214.33"
+ y2="11.46"
+ id="XMLID_419_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#404040;stop-opacity:1"
+ offset="0"
+ id="s1903" />
+ <stop
+ style="stop-color:#6d6d6d;stop-opacity:1"
+ offset="0.33000001"
+ id="s1905" />
+ <stop
+ style="stop-color:#e9e9e9;stop-opacity:1"
+ offset="1"
+ id="s1907" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#404040" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#404040" />
+ <a:midPointStop
+ offset="0.33"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#E9E9E9" />
+ </linearGradient>
+ <linearGradient
+ x1="221.84"
+ y1="32.779999"
+ x2="212.2"
+ y2="20.27"
+ id="lg1988"
+ xlink:href="#XMLID_419_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="lg1900"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s1902" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="s1906" />
+ <a:midPointStop
+ style="stop-color:#575757"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#575757"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#6D6D6D"
+ offset="0.33" />
+ <a:midPointStop
+ style="stop-color:#6D6D6D"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#D3D3D3"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="234.81"
+ y1="33.279999"
+ x2="228.27"
+ y2="33.279999"
+ id="lg1908"
+ xlink:href="#lg1900"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="XMLID_416_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#575757;stop-opacity:1"
+ offset="0"
+ id="s1874" />
+ <stop
+ style="stop-color:#6d6d6d;stop-opacity:1"
+ offset="0.33000001"
+ id="s1876" />
+ <stop
+ style="stop-color:#d3d3d3;stop-opacity:1"
+ offset="1"
+ id="s1878" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#575757" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#575757" />
+ <a:midPointStop
+ offset="0.33"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#6D6D6D" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#D3D3D3" />
+ </linearGradient>
+ <linearGradient
+ x1="228.35001"
+ y1="33.279999"
+ x2="215.42999"
+ y2="33.279999"
+ id="lg1991"
+ xlink:href="#XMLID_416_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+ <radialGradient
+ cx="603.19"
+ cy="230.77"
+ r="1.67"
+ fx="603.19"
+ fy="230.77"
+ id="x5010_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+ <stop
+ style="stop-color:#c9ffc9;stop-opacity:1"
+ offset="0"
+ id="stop29201" />
+ <stop
+ style="stop-color:#23a11f;stop-opacity:1"
+ offset="1"
+ id="stop29203" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#C9FFC9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#C9FFC9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#23A11F" />
+ </radialGradient>
+ <radialGradient
+ cx="603.19"
+ cy="230.77"
+ r="1.67"
+ fx="603.19"
+ fy="230.77"
+ id="radialGradient5711"
+ xlink:href="#x5010_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="lg5722"
+ xlink:href="#x5003_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="601.48999"
+ y1="170.16"
+ x2="613.84003"
+ y2="170.16"
+ id="x5002_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29134" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0.2"
+ id="stop29136" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="stop29138" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.20"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#999999" />
+ </linearGradient>
+ <linearGradient
+ x1="601.48999"
+ y1="170.16"
+ x2="613.84003"
+ y2="170.16"
+ id="lg5725"
+ xlink:href="#x5002_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.23"
+ id="x5004_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29157" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop29159" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.23"
+ id="lg5728"
+ xlink:href="#x5004_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="x5003_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="stop29143" />
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="1"
+ id="stop29145" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#E5E5E5" />
+ </linearGradient>
+ <linearGradient
+ x1="592.31"
+ y1="162.60001"
+ x2="609.32001"
+ y2="145.59"
+ id="lg5732"
+ xlink:href="#x5003_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.24001"
+ id="x5000_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop29124" />
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="1"
+ id="stop29126" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFFFF" />
+ </linearGradient>
+ <linearGradient
+ x1="592.20001"
+ y1="156.45"
+ x2="609.98999"
+ y2="174.24001"
+ id="lg5735"
+ xlink:href="#x5000_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+ <linearGradient
+ x1="308.54999"
+ y1="149.89999"
+ x2="299.72"
+ y2="148.83"
+ id="XMLID_2433_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d6d6d6;stop-opacity:1"
+ offset="0"
+ id="71615" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="1"
+ id="71617" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D6D6D6" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D6D6D6" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A5A5A5" />
+ </linearGradient>
+ <linearGradient
+ x1="308.54999"
+ y1="149.89999"
+ x2="299.72"
+ y2="148.83"
+ id="lg1952"
+ xlink:href="#XMLID_2433_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <radialGradient
+ cx="307.39999"
+ cy="121"
+ r="23.35"
+ fx="307.39999"
+ fy="121"
+ id="XMLID_2432_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0.19"
+ id="71592" />
+ <stop
+ style="stop-color:#cfcfcf;stop-opacity:1"
+ offset="0.44999999"
+ id="71594" />
+ <stop
+ style="stop-color:#c7c7c7;stop-opacity:1"
+ offset="0.60000002"
+ id="71596" />
+ <stop
+ style="stop-color:#b9b9b9;stop-opacity:1"
+ offset="0.74000001"
+ id="71598" />
+ <stop
+ style="stop-color:#a4a4a4;stop-opacity:1"
+ offset="0.86000001"
+ id="71600" />
+ <stop
+ style="stop-color:#8a8a8a;stop-opacity:1"
+ offset="0.95999998"
+ id="71602" />
+ <stop
+ style="stop-color:gray;stop-opacity:1"
+ offset="1"
+ id="71604" />
+ <a:midPointStop
+ offset="0.19"
+ style="stop-color:#D2D2D2" />
+ <a:midPointStop
+ offset="0.8"
+ style="stop-color:#D2D2D2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#808080" />
+ </radialGradient>
+ <radialGradient
+ cx="307.39999"
+ cy="121"
+ r="23.35"
+ fx="307.39999"
+ fy="121"
+ id="radialGradient2331"
+ xlink:href="#XMLID_2432_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-276.62,-121.54)" />
+ <linearGradient
+ x1="294.13"
+ y1="127.07"
+ x2="294.13"
+ y2="142.2"
+ id="XMLID_2430_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#b5d8ff;stop-opacity:1"
+ offset="0"
+ id="71582" />
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="1"
+ id="71584" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B5D8FF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B5D8FF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#000000" />
+ </linearGradient>
+ <linearGradient
+ x1="294.13"
+ y1="127.07"
+ x2="294.13"
+ y2="142.2"
+ id="lg2820"
+ xlink:href="#XMLID_2430_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <linearGradient
+ x1="279.10999"
+ y1="148.03"
+ x2="309.16"
+ y2="148.03"
+ id="XMLID_2429_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e1e1e1;stop-opacity:1"
+ offset="0"
+ id="71564" />
+ <stop
+ style="stop-color:#e1e1e1;stop-opacity:1"
+ offset="0.25"
+ id="71566" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="0.44"
+ id="71568" />
+ <stop
+ style="stop-color:#a5a5a5;stop-opacity:1"
+ offset="1"
+ id="71570" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.25"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E1E1E1" />
+ <a:midPointStop
+ offset="0.44"
+ style="stop-color:#A5A5A5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#A5A5A5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A5A5A5" />
+ </linearGradient>
+ <linearGradient
+ x1="279.10999"
+ y1="148.03"
+ x2="309.16"
+ y2="148.03"
+ id="lg2818"
+ xlink:href="#XMLID_2429_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+ <radialGradient
+ cx="622.34302"
+ cy="14.449"
+ r="26.496"
+ fx="622.34302"
+ fy="14.449"
+ id="lg3499_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+ <stop
+ style="stop-color:#23468e;stop-opacity:1"
+ offset="0"
+ id="stop10972" />
+ <stop
+ style="stop-color:#012859;stop-opacity:1"
+ offset="1"
+ id="stop10974" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#23468E" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#23468E" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#012859" />
+ </radialGradient>
+ <radialGradient
+ cx="622.34302"
+ cy="14.449"
+ r="26.496"
+ fx="622.34302"
+ fy="14.449"
+ id="rg5791"
+ xlink:href="#lg3499_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+ <linearGradient
+ x1="616.112"
+ y1="76.247002"
+ x2="588.14099"
+ y2="60.742001"
+ id="lg3497_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#01326e;stop-opacity:1"
+ offset="0"
+ id="stop10962" />
+ <stop
+ style="stop-color:#012859;stop-opacity:1"
+ offset="1"
+ id="stop10964" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#01326E" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#01326E" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#012859" />
+ </linearGradient>
+ <linearGradient
+ x1="617.698"
+ y1="82.445999"
+ x2="585.95203"
+ y2="54.848999"
+ id="lg3496_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="stop10950" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10952" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#E5E5E5" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="617.698"
+ y1="82.445999"
+ x2="585.95203"
+ y2="54.848999"
+ id="lg5794"
+ xlink:href="#lg3496_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="601.39001"
+ y1="55.341"
+ x2="588.29199"
+ y2="71.515999"
+ id="lg3495_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop10941" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.52200001"
+ id="stop10943" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10945" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.522"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="601.39001"
+ y1="55.341"
+ x2="588.29199"
+ y2="71.515999"
+ id="lg5771"
+ xlink:href="#lg3495_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+ <linearGradient
+ x1="611.34601"
+ y1="55.279999"
+ x2="590.39001"
+ y2="81.157997"
+ id="lg3494_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="stop10932" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.52200001"
+ id="stop10934" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="stop10936" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#D9D9D9" />
+ <a:midPointStop
+ offset="0.522"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#F2F2F2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#CCCCCC" />
+ </linearGradient>
+ <linearGradient
+ x1="611.34601"
+ y1="55.279999"
+ x2="590.39001"
+ y2="81.157997"
+ id="lg5774"
+ xlink:href="#lg3494_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+ <linearGradient
+ x1="798.72998"
+ y1="69.839996"
+ x2="799.04999"
+ y2="70.709999"
+ id="g3302_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#005e00;stop-opacity:1"
+ offset="0"
+ id="s6504" />
+ <stop
+ style="stop-color:#23a11f;stop-opacity:1"
+ offset="1"
+ id="s6506" />
+ <a:midPointstop
+ style="stop-color:#005E00"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#005E00"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#23A11F"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="798.72998"
+ y1="69.839996"
+ x2="799.04999"
+ y2="70.709999"
+ id="lg5851"
+ xlink:href="#g3302_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="779.19"
+ y1="122.73"
+ x2="811.69"
+ y2="149.74001"
+ id="g3301_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0"
+ id="s6483" />
+ <stop
+ style="stop-color:#eee;stop-opacity:1"
+ offset="0.17"
+ id="s6485" />
+ <stop
+ style="stop-color:#e3e3e3;stop-opacity:1"
+ offset="0.34"
+ id="s6487" />
+ <stop
+ style="stop-color:#cfcfcf;stop-opacity:1"
+ offset="0.50999999"
+ id="s6489" />
+ <stop
+ style="stop-color:#b4b4b4;stop-opacity:1"
+ offset="0.67000002"
+ id="s6491" />
+ <stop
+ style="stop-color:#919191;stop-opacity:1"
+ offset="0.83999997"
+ id="s6493" />
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="1"
+ id="s6495" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.71" />
+ <a:midPointstop
+ style="stop-color:#666666"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="779.19"
+ y1="122.73"
+ x2="811.69"
+ y2="149.74001"
+ id="lg5855"
+ xlink:href="#g3301_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+ <clipPath
+ id="g3299_">
+ <use
+ id="use6469"
+ x="0"
+ y="0"
+ width="1005.92"
+ height="376.97"
+ xlink:href="#g101_" />
+ </clipPath>
+ <radialGradient
+ cx="1189.9301"
+ cy="100.05"
+ r="40.400002"
+ fx="1189.9301"
+ fy="100.05"
+ id="g3300_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6472" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="s6474" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#000000"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1199.74"
+ cy="97.150002"
+ r="40.400002"
+ fx="1199.74"
+ fy="97.150002"
+ id="rg5860"
+ xlink:href="#g3300_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+ <linearGradient
+ x1="796.38"
+ y1="67.580002"
+ x2="781.28003"
+ y2="58.549999"
+ id="g3298_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#4c8bca;stop-opacity:1"
+ offset="0"
+ id="s6462" />
+ <stop
+ style="stop-color:#b7e9ff;stop-opacity:1"
+ offset="1"
+ id="s6464" />
+ <a:midPointstop
+ style="stop-color:#4C8BCA"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#4C8BCA"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B7E9FF"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="800.97998"
+ y1="140.72"
+ x2="777.71997"
+ y2="121.76"
+ id="g3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6448" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s6450" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="800.97998"
+ y1="140.72"
+ x2="777.71997"
+ y2="121.76"
+ id="lg5890"
+ xlink:href="#g3297_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+ <linearGradient
+ x1="790.03998"
+ y1="-16.33"
+ x2="779.84003"
+ y2="-3.73"
+ id="g3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,70.17)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s6439" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.51999998"
+ id="s6441" />
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="1"
+ id="s6443" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.52" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#CCCCCC"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="790.03998"
+ y1="-16.33"
+ x2="779.84003"
+ y2="-3.73"
+ id="lg5866"
+ xlink:href="#g3296_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+ <linearGradient
+ x1="785.84003"
+ y1="72.989998"
+ x2="785.26001"
+ y2="76.279999"
+ id="g3293_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6412" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s6414" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#737373"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="785.84003"
+ y1="72.989998"
+ x2="785.26001"
+ y2="76.279999"
+ id="lg5871"
+ xlink:href="#g3293_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="789.37"
+ y1="69.879997"
+ x2="791.03998"
+ y2="77.120003"
+ id="g3292_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="0"
+ id="s6403" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="0.28"
+ id="s6405" />
+ <stop
+ style="stop-color:#666;stop-opacity:1"
+ offset="1"
+ id="s6407" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.28" />
+ <a:midPointstop
+ style="stop-color:#F2F2F2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#666666"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="789.37"
+ y1="69.879997"
+ x2="791.03998"
+ y2="77.120003"
+ id="lg5874"
+ xlink:href="#g3292_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+ <linearGradient
+ x1="786.65997"
+ y1="136.12"
+ x2="786.71002"
+ y2="134.33"
+ id="g3290_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+ <stop
+ style="stop-color:#d9d9d9;stop-opacity:1"
+ offset="0"
+ id="s6380" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="1"
+ id="s6382" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#D9D9D9"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="786.65997"
+ y1="136.12"
+ x2="786.71002"
+ y2="134.33"
+ id="lg5878"
+ xlink:href="#g3290_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+ <radialGradient
+ cx="1458.77"
+ cy="-5.0999999"
+ r="35.130001"
+ fx="1458.77"
+ fy="-5.0999999"
+ id="g3289_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="s6371" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s6373" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#FFFFFF"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1458.77"
+ cy="-5.0999999"
+ r="35.130001"
+ fx="1458.77"
+ fy="-5.0999999"
+ id="rg5881"
+ xlink:href="#g3289_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+ <radialGradient
+ cx="1612.98"
+ cy="-4.4699998"
+ r="36.580002"
+ fx="1612.98"
+ fy="-4.4699998"
+ id="g3288_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6362" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.63999999"
+ id="s6364" />
+ <stop
+ style="stop-color:#737373;stop-opacity:1"
+ offset="1"
+ id="s6366" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.64" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#737373"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1612.98"
+ cy="-4.4699998"
+ r="36.580002"
+ fx="1612.98"
+ fy="-4.4699998"
+ id="rg5884"
+ xlink:href="#g3288_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+ <radialGradient
+ cx="1470.5"
+ cy="-10.21"
+ r="33.290001"
+ fx="1470.5"
+ fy="-10.21"
+ id="g3287_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+ <stop
+ style="stop-color:#e5e5e5;stop-opacity:1"
+ offset="0"
+ id="s6347" />
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0.38999999"
+ id="s6349" />
+ <stop
+ style="stop-color:#b1b1b1;stop-opacity:1"
+ offset="0.75"
+ id="s6351" />
+ <stop
+ style="stop-color:#aaa;stop-opacity:1"
+ offset="0.88"
+ id="s6353" />
+ <stop
+ style="stop-color:#9e9e9e;stop-opacity:1"
+ offset="0.97000003"
+ id="s6355" />
+ <stop
+ style="stop-color:#999;stop-opacity:1"
+ offset="1"
+ id="s6357" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0" />
+ <a:midPointstop
+ style="stop-color:#E5E5E5"
+ offset="0.5" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.39" />
+ <a:midPointstop
+ style="stop-color:#B2B2B2"
+ offset="0.87" />
+ <a:midPointstop
+ style="stop-color:#999999"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1470.5"
+ cy="-10.21"
+ r="33.290001"
+ fx="1470.5"
+ fy="-10.21"
+ id="rg5887"
+ xlink:href="#g3287_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+ <pattern
+ patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+ id="cream-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-365.3146,-513.505)"
+ id="g3047">
+ id="path2858" />
+ <path
+ inkscape:label="#path2854"
+ sodipodi:nodetypes="czzzz"
+ style="fill:#e3dcc0"
+ id="path3060"
+ d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+ id="dark-cream-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-408.0946,-513.505)"
+ id="dark-cream-spot"
+ inkscape:label="#g3043">
+ <path
+ sodipodi:nodetypes="czzzz"
+ style="fill:#c8c5ac"
+ d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+ id="path2953" />
+ </g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.375,0,0,0.375,379,400)"
+ id="white-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-484.3997,-513.505)"
+ id="white-spot"
+ inkscape:label="#g3035">
+ <path
+ style="opacity:0.25;fill:white"
+ id="path3033"
+ d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+ sodipodi:nodetypes="czzzz" />
+ </g>
+ </pattern>
+ <pattern
+ patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+ id="black-spots"
+ height="32"
+ width="32"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(-448.3997,-513.505)"
+ id="black-spot"
+ inkscape:label="#g3039">
+ <path
+ sodipodi:nodetypes="czzzz"
+ d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+ id="path2961"
+ style="opacity:0.25;fill:black" />
+ </g>
+ </pattern>
+ <linearGradient
+ x1="501.0903"
+ y1="-19.2544"
+ x2="531.85413"
+ y2="0.72390002"
+ id="linearGradient17334"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17336" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17338" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17340" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17342" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5112"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B4DAEA" />
+ <a:midPointStop
+ offset="0.6461"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#16336E" />
+ </linearGradient>
+ <linearGradient
+ x1="415.73831"
+ y1="11.854"
+ x2="418.13361"
+ y2="18.8104"
+ id="linearGradient17426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+ <stop
+ style="stop-color:#ccc;stop-opacity:1"
+ offset="0"
+ id="stop17428" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop17430" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#CCCCCC" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="478.21341"
+ y1="-131.9297"
+ x2="469.85818"
+ y2="-140.28481"
+ id="linearGradient17434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17436" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17438" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17440" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17442" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#F3403F" />
+ <a:midPointStop
+ offset="0.4213"
+ style="stop-color:#F3403F" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#A6100C" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17709"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17711"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17713"
+ xlink:href="#XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17715"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="linearGradient17717"
+ xlink:href="#XMLID_1757_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17721"
+ xlink:href="#XMLID_2274_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17723"
+ xlink:href="#XMLID_2275_"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="500.70749"
+ y1="-13.2441"
+ x2="513.46442"
+ y2="-2.1547"
+ id="linearGradient17416"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17418" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17420" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <defs
+ id="defs9929">
+ <path
+ d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+ id="XMLID_960_" />
+ </defs>
+ <clipPath
+ id="clipPath17448">
+ <use
+ id="use17450"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_960_" />
+ </clipPath>
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17452"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17454" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17456" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17458" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17460" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17463"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#f3403f;stop-opacity:1"
+ offset="0"
+ id="stop17465" />
+ <stop
+ style="stop-color:#d02a28;stop-opacity:1"
+ offset="0.37889999"
+ id="stop17467" />
+ <stop
+ style="stop-color:#b21714;stop-opacity:1"
+ offset="0.77649999"
+ id="stop17469" />
+ <stop
+ style="stop-color:#a6100c;stop-opacity:1"
+ offset="1"
+ id="stop17471" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#F3403F"
+ offset="0.4213" />
+ <a:midPointStop
+ style="stop-color:#A6100C"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="481.23969"
+ y1="212.5742"
+ x2="472.92981"
+ y2="207.4967"
+ id="linearGradient17807"
+ xlink:href="#XMLID_2275_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-177.1654,35.43307)" />
+ <linearGradient
+ x1="473.7681"
+ y1="209.17529"
+ x2="486.98099"
+ y2="213.2001"
+ id="linearGradient17810"
+ xlink:href="#XMLID_2274_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-177.1654,35.43307)" />
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17812"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17814"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17816"
+ xlink:href="#XMLID_1753_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17818"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17349" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17351" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#5387BA" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#96BAD6" />
+ </linearGradient>
+ <linearGradient
+ x1="516.57672"
+ y1="-15.769"
+ x2="516.57672"
+ y2="0.84280002"
+ id="linearGradient17379"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b2b2b2;stop-opacity:1"
+ offset="0"
+ id="stop17381" />
+ <stop
+ style="stop-color:#f2f2f2;stop-opacity:1"
+ offset="1"
+ id="stop17383" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#B2B2B2" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#F2F2F2" />
+ </linearGradient>
+ <linearGradient
+ x1="502.70749"
+ y1="115.3013"
+ x2="516.39001"
+ y2="127.1953"
+ id="linearGradient17862"
+ xlink:href="#XMLID_1749_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17864"
+ xlink:href="#XMLID_1756_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <defs
+ id="defs3859">
+ <polygon
+ points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+ id="XMLID_343_" />
+ </defs>
+ <linearGradient
+ x1="471.0806"
+ y1="201.07761"
+ x2="481.91711"
+ y2="210.4977"
+ id="linearGradient17389"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#6498c1;stop-opacity:1"
+ offset="0.005618"
+ id="stop17391" />
+ <stop
+ style="stop-color:#79a9cc;stop-opacity:1"
+ offset="0.2332"
+ id="stop17393" />
+ <stop
+ style="stop-color:#a4cde2;stop-opacity:1"
+ offset="0.74049997"
+ id="stop17395" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="1"
+ id="stop17397" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="5.618000e-003" />
+ <a:midPointStop
+ style="stop-color:#6498C1"
+ offset="0.4438" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath17400">
+ <use
+ id="use17402"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_343_" />
+ </clipPath>
+ <linearGradient
+ x1="505.62939"
+ y1="-14.9526"
+ x2="527.49402"
+ y2="-0.7536"
+ id="linearGradient17404"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17406" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17408" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17410" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17412" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17882"
+ xlink:href="#XMLID_1752_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+ <defs
+ id="defs3826">
+ <polygon
+ points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+ id="XMLID_338_" />
+ </defs>
+ <linearGradient
+ x1="468.2915"
+ y1="204.7612"
+ x2="479.39871"
+ y2="214.4166"
+ id="linearGradient17357"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0"
+ id="stop17359" />
+ <stop
+ style="stop-color:#96bad6;stop-opacity:1"
+ offset="1"
+ id="stop17361" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#96BAD6"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath17364">
+ <use
+ id="use17366"
+ x="0"
+ y="0"
+ width="744.09448"
+ height="600"
+ xlink:href="#XMLID_338_" />
+ </clipPath>
+ <linearGradient
+ x1="506.09909"
+ y1="-11.5137"
+ x2="527.99609"
+ y2="2.7063999"
+ id="linearGradient17368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0"
+ id="stop17370" />
+ <stop
+ style="stop-color:#b4daea;stop-opacity:1"
+ offset="0.51120001"
+ id="stop17372" />
+ <stop
+ style="stop-color:#5387ba;stop-opacity:1"
+ offset="0.64609998"
+ id="stop17374" />
+ <stop
+ style="stop-color:#16336e;stop-opacity:1"
+ offset="1"
+ id="stop17376" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5112" />
+ <a:midPointStop
+ style="stop-color:#B4DAEA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.6461" />
+ <a:midPointStop
+ style="stop-color:#5387BA"
+ offset="0.5" />
+ <a:midPointStop
+ style="stop-color:#16336E"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient2387"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient5105"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398"
+ id="linearGradient5145"
+ xlink:href="#linearGradient2381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2381"
+ id="linearGradient2371"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+ x1="296.4996"
+ y1="188.81061"
+ x2="317.32471"
+ y2="209.69398" />
+ </defs>
+ <g
+ transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+ id="g5089">
+ <path
+ d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+ transform="translate(282.8327,227.1903)"
+ style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path5091" />
+ <rect
+ width="27.85074"
+ height="29.369793"
+ rx="1.1414107"
+ ry="1.1414107"
+ x="286.96509"
+ y="227.63805"
+ style="fill:#032c87"
+ id="rect5093" />
+ <path
+ d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+ style="fill:white"
+ id="rect5095" />
+ <path
+ d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+ style="fill:#a70000;fill-opacity:1;stroke-width:2"
+ id="path5097" />
+ <rect
+ width="25.241802"
+ height="29.736675"
+ rx="0.89682275"
+ ry="0.89682275"
+ x="290.73544"
+ y="220.92249"
+ style="fill:#809cc9"
+ id="rect5099" />
+ <path
+ d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+ transform="matrix(0.499065,-0.866565,0,1,0,0)"
+ style="fill:#4573b3;fill-opacity:1"
+ id="rect5101" />
+ <path
+ d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+ style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+ id="path5103" />
+ </g>
+</svg>
14 years, 3 months
gatein SVN: r4037 - in epp/portal/branches/EPP_5_1_Branch: web/portal/src/main/webapp/WEB-INF/conf/jcr and 1 other directories.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-09-02 12:35:39 -0400 (Thu, 02 Sep 2010)
New Revision: 4037
Modified:
epp/portal/branches/EPP_5_1_Branch/component/common/src/main/java/conf/configuration-jboss.properties
epp/portal/branches/EPP_5_1_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jcr-configuration.xml
epp/portal/branches/EPP_5_1_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml
Log:
JBEPP-453: EPP 5.1 productization
Modified: epp/portal/branches/EPP_5_1_Branch/component/common/src/main/java/conf/configuration-jboss.properties
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/component/common/src/main/java/conf/configuration-jboss.properties 2010-09-02 15:40:06 UTC (rev 4036)
+++ epp/portal/branches/EPP_5_1_Branch/component/common/src/main/java/conf/configuration-jboss.properties 2010-09-02 16:35:39 UTC (rev 4037)
@@ -25,12 +25,8 @@
# JCR
gatein.jcr.config.type=local
-gatein.jcr.datasource.name=java:jdbcjcr
+gatein.jcr.datasource.name=java:gatein-jcr
gatein.jcr.datasource.dialect=auto
-gatein.jcr.datasource.driver=org.hsqldb.jdbcDriver
-gatein.jcr.datasource.url=jdbc:hsqldb:file:${gatein.db.data.dir}/data/jdbcjcr_${name}
-gatein.jcr.datasource.username=sa
-gatein.jcr.datasource.password=
gatein.jcr.data.dir=${gatein.data.dir}/jcr
gatein.jcr.storage.data.dir=${gatein.jcr.data.dir}/values
@@ -42,11 +38,7 @@
gatein.jcr.jgroups.config=classpath:/conf/jcr/jbosscache/cluster/udp-mux.xml
# IDM
-gatein.idm.datasource.name=java:jdbcidm
-gatein.idm.datasource.driver=org.hsqldb.jdbcDriver
-gatein.idm.datasource.url=jdbc:hsqldb:file:${gatein.db.data.dir}/data/jdbcidm_${name}
-gatein.idm.datasource.username=sa
-gatein.idm.datasource.password=
+gatein.idm.datasource.name=java:gatein-idm
# EMail
gatein.email.smtp.username=
Modified: epp/portal/branches/EPP_5_1_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jcr-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jcr-configuration.xml 2010-09-02 15:40:06 UTC (rev 4036)
+++ epp/portal/branches/EPP_5_1_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jcr-configuration.xml 2010-09-02 16:35:39 UTC (rev 4037)
@@ -129,37 +129,6 @@
</external-component-plugins>
<external-component-plugins>
- <target-component>org.exoplatform.services.naming.InitialContextInitializer</target-component>
- <component-plugin>
- <name>bind.datasource</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.naming.BindReferencePlugin</type>
- <init-params>
- <value-param>
- <name>bind-name</name>
- <value>${gatein.jcr.datasource.name}${container.name.suffix}</value>
- </value-param>
- <value-param>
- <name>class-name</name>
- <value>javax.sql.DataSource</value>
- </value-param>
- <value-param>
- <name>factory</name>
- <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
- </value-param>
- <properties-param>
- <name>ref-addresses</name>
- <description>ref-addresses</description>
- <property name="driverClassName" value="${portal.container.gatein.jcr.datasource.driver}"/>
- <property name="url" value="${portal.container.gatein.jcr.datasource.url}"/>
- <property name="username" value="${portal.container.gatein.jcr.datasource.username}"/>
- <property name="password" value="${portal.container.gatein.jcr.datasource.password}"/>
- </properties-param>
- </init-params>
- </component-plugin>
- </external-component-plugins>
-
- <external-component-plugins>
<target-component>org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator</target-component>
<component-plugin>
<name>addPaths</name>
Modified: epp/portal/branches/EPP_5_1_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml 2010-09-02 15:40:06 UTC (rev 4036)
+++ epp/portal/branches/EPP_5_1_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml 2010-09-02 16:35:39 UTC (rev 4037)
@@ -42,8 +42,9 @@
<property name="hibernate.current_session_context_class" value="thread"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
- <!--CHANGEME HashtableCacheProvider shold not be used in production env-->
- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
+ <property name="hibernate.cache.region.jbc2.query.localonly" value="true" />
+ <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.jbc2.MultiplexedJBossCacheRegionFactory" />
+ <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
<property name="hibernate.connection.datasource" value="${gatein.idm.datasource.name}${container.name.suffix}"/>
<property name="hibernate.connection.autocommit" value="true"/>
<!--
@@ -232,38 +233,6 @@
</component>
<external-component-plugins>
- <target-component>org.exoplatform.services.naming.InitialContextInitializer</target-component>
- <component-plugin>
- <name>bind.datasource</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.naming.BindReferencePlugin</type>
- <init-params>
- <value-param>
- <name>bind-name</name>
- <value>${gatein.idm.datasource.name}${container.name.suffix}</value>
- </value-param>
- <value-param>
- <name>class-name</name>
- <value>javax.sql.DataSource</value>
- </value-param>
- <value-param>
- <name>factory</name>
- <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
- </value-param>
- <properties-param>
- <name>ref-addresses</name>
- <description>ref-addresses</description>
- <property name="driverClassName" value="${portal.container.gatein.idm.datasource.driver}"/>
- <property name="url" value="${portal.container.gatein.idm.datasource.url}"/>
- <property name="username" value="${portal.container.gatein.idm.datasource.username}"/>
- <property name="password" value="${portal.container.gatein.idm.datasource.password}"/>
-
- </properties-param>
- </init-params>
- </component-plugin>
- </external-component-plugins>
-
- <external-component-plugins>
<target-component>org.exoplatform.services.database.HibernateService</target-component>
<component-plugin>
<name>add.hibernate.mapping</name>
14 years, 3 months
gatein SVN: r4036 - epp/portal/branches/EPP_5_1_Branch.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-09-02 11:40:06 -0400 (Thu, 02 Sep 2010)
New Revision: 4036
Removed:
epp/portal/branches/EPP_5_1_Branch/README.txt
epp/portal/branches/EPP_5_1_Branch/Release_Notes.html
epp/portal/branches/EPP_5_1_Branch/docs/
Log:
Removed things we don't need
Deleted: epp/portal/branches/EPP_5_1_Branch/README.txt
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/README.txt 2010-09-02 15:31:58 UTC (rev 4035)
+++ epp/portal/branches/EPP_5_1_Branch/README.txt 2010-09-02 15:40:06 UTC (rev 4036)
@@ -1,48 +0,0 @@
-Welcome to GateIn:
-===========================
-
-This will explain you how to build a package of GateIn with Tomcat or JBoss.
-
-*****************
-* COMPILATION
-*****************
-
-* mvn install
-For example: mvn install
-
-Note: If you run "mvn install" twice in a row without cleaning, one test will
-fail. To workaround this issue you will need to delete the test data located
-here: component/portal/target/temp/
-
-**********************
-* MAVEN CONFIGURATION:
-**********************
-
-* edit packaging/profiles.xml and replace the values mentioned so that:
- * ${exo.projects.directory.dependencies} directory contains :
- ** ${exo.projects.app.tomcat.version}/ a clean Tomcat installation, to be used as packaging template
- ** ${exo.projects.app.jboss.version}/ a clean JBoss installation, to be used as packaging template
-
-* See http://maven.apache.org/guides/introduction/introduction-to-profiles.html for more informations
-
-Alternatively you can edit your local settings.xml to add the information
-provided in profiles.xml. It will override what's in the provided file.
-
-*****************
-* PACKAGING:
-*****************
-
-* mvn install -Ppkg-tomcat
-** Creates a Tomcat delivery in packaging/pkg/target/tomcat/
-
-* mvn install -Ppkg-jbossas
-** Creates a JBossAS delivery in packaging/pkg/target/jboss/
-
-*****************
-* STARTING:
-*****************
-* On Tomcat: go to the tomcat directory (or unzip the archive in your favorite location) and execute 'bin/gatein.sh start' ('bin/gatein.bat start' on Windows)
-* On JBoss: go to the jboss directory (or unzip the archive in your favorite location) and execute 'bin/run.sh start' ('bin/run.bat start' on Windows)
-
-* Go to http://localhost:8080/portal to see the homepage of the portal. That's it.
-
Deleted: epp/portal/branches/EPP_5_1_Branch/Release_Notes.html
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/Release_Notes.html 2010-09-02 15:31:58 UTC (rev 4035)
+++ epp/portal/branches/EPP_5_1_Branch/Release_Notes.html 2010-09-02 15:40:06 UTC (rev 4036)
@@ -1,158 +0,0 @@
-<html>
- <head>
- <title>Release Notes - GateIn Portal - Version 3.1 FINAL</title>
- </head>
- <body>
-<h1>Release Notes - GateIn Portal - Version 3.1 FINAL</h1>
-
-<h2>Resources and Links</h2>
-<p><a href="http://www.gatein.org">Community site</a><br />
-<a href="https://jira.jboss.org/">Community JIRA</a><br />
-<a href="http://community.jboss.org/en/gatein?view=discussions">Community Forum</a></p>
-
-<h2> Bug
-</h2>
-<ul>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-964'>GTNPORTAL-964</a>] - Translation problem in register portlet
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-967'>GTNPORTAL-967</a>] - Message "Successful register" not translated in Register portlet
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1045'>GTNPORTAL-1045</a>] - Can't drag & drop application into container when click switch view mode
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1137'>GTNPORTAL-1137</a>] - Permission settings in application registry not preventing unauthorized access
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1148'>GTNPORTAL-1148</a>] - Position of the user's page is not correct in Sitemap
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1152'>GTNPORTAL-1152</a>] - Gadgets should have a default icon
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1154'>GTNPORTAL-1154</a>] - Error UI in SItemap when change skin to Simple Skin
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1164'>GTNPORTAL-1164</a>] - Incorrect INFO message when user add navigations to group sites
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1170'>GTNPORTAL-1170</a>] - Don't show layout of page which selected when add new page by page management
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1174'>GTNPORTAL-1174</a>] - Edit permissions on PortalConfig of a group is not properly initiated
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1204'>GTNPORTAL-1204</a>] - Can't submit form when use addValidator method for UIFormMultiValueInputSet
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1214'>GTNPORTAL-1214</a>] - Show exception when edit membership of user who was deleted in a group
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1217'>GTNPORTAL-1217</a>] - Always take the value of description of next position when edit membership
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1218'>GTNPORTAL-1218</a>] - Unknown error when add new group in case delete membership is manager
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1229'>GTNPORTAL-1229</a>] - Clearly define what the access permission set in the application registry
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1233'>GTNPORTAL-1233</a>] - Little error in selectbox of user language in User Profile when edit information of user
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1242'>GTNPORTAL-1242</a>] - A small display issue in creating a new gadget in Application Registry
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1245'>GTNPORTAL-1245</a>] - Show message wrong when input First/last Name in New Staff page contain special characters
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1248'>GTNPORTAL-1248</a>] - Unable to retrieve gadget and get the HTTP Status 404 error
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1249'>GTNPORTAL-1249</a>] - The empty container takes space in normal view
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1252'>GTNPORTAL-1252</a>] - Always show message "Only alpha, digit, underscore, dash and space characters allowed" in Dashboard pageafter refresh program
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1259'>GTNPORTAL-1259</a>] - Show wrong message when check username in Register page
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1265'>GTNPORTAL-1265</a>] - IE7: Don't show edit/delete icon when move mouse on container to detele all container in this layout
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1267'>GTNPORTAL-1267</a>] - Remove the toolbar columns from the composer as it should not be reused outside of this context
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1269'>GTNPORTAL-1269</a>] - Always show skin which selected when add new
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1272'>GTNPORTAL-1272</a>] - Could not modify access-permission on dashboard portlet window
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1273'>GTNPORTAL-1273</a>] - Portal composer has 'Page properties' button label while the system is in 'edit layout' mode
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1274'>GTNPORTAL-1274</a>] - Login links in default page must be contextual and depend on the displayed portal
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1280'>GTNPORTAL-1280</a>] - Need to check template is available or not before remove
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1281'>GTNPORTAL-1281</a>] - Delete page and corresponding navigation node when deleting a user site page / navigation node
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1282'>GTNPORTAL-1282</a>] - Add Group Navigation form UI is broken in IE7
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1287'>GTNPORTAL-1287</a>] - it's hardcoding to only allow manager:/platform/administrators adding new page to Portal's navigation
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1288'>GTNPORTAL-1288</a>] - the layout edition does not work correctly if drag a portlet out of a container
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1289'>GTNPORTAL-1289</a>] - Show exception when search keyword start with specical characters in Manage page
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1291'>GTNPORTAL-1291</a>] - Show exception when click Category Selector form
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1293'>GTNPORTAL-1293</a>] - The UIFormUploadInput component does not work in the edit mode of a Portlet
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1296'>GTNPORTAL-1296</a>] - Public links should verify roles of current user in server side when the invocation is done
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1300'>GTNPORTAL-1300</a>] - Still show group's page in UserToolBarGroupPortlet although it was deleted in Group navigation
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1302'>GTNPORTAL-1302</a>] - Language selection lost at re-login for languages defined with country variant
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1310'>GTNPORTAL-1310</a>] - Don't show language of user which is selected when create new user for languages defined with country variant
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1312'>GTNPORTAL-1312</a>] - Display page title after renaming a tab of dashboard
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1315'>GTNPORTAL-1315</a>] - Missing filter mapping for ThreadLocalSessionProviderInitializedFilter
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1326'>GTNPORTAL-1326</a>] - IE7: Lost divided icon of child page on breadscrumbs on IE7
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1327'>GTNPORTAL-1327</a>] - Change password is check when select other user
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1329'>GTNPORTAL-1329</a>] - Exception when add new tab with more than 3 specical characters
-</li>
-</ul>
-
-<h2> Feature Request
-</h2>
-<ul>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1021'>GTNPORTAL-1021</a>] - Create a re-usable UIConfirmation component
-</li>
-</ul>
-
-<h2> Task
-</h2>
-<ul>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-946'>GTNPORTAL-946</a>] - Externalize the various cache configuration in the configuration property file
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1173'>GTNPORTAL-1173</a>] - Examine DeleteNavigation link
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1210'>GTNPORTAL-1210</a>] - Portal mode transition in UIPortalComposer should not be hardcoded
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1211'>GTNPORTAL-1211</a>] - Create a sample portlet using UIFormMultiValueInputSet
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1239'>GTNPORTAL-1239</a>] - Set the portlet to be public by default when importing in the Application Registry
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1263'>GTNPORTAL-1263</a>] - GateIn object 1.1 version to handle width and height
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1264'>GTNPORTAL-1264</a>] - Change alert message when Start greater than End Publication Date (create page)
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1266'>GTNPORTAL-1266</a>] - Change message when add new node with Name is the same with existing one in the same level navigation
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1290'>GTNPORTAL-1290</a>] - Should allow to add user into group in case after comma has space
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1292'>GTNPORTAL-1292</a>] - Change meaning of labels to be more correct
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1303'>GTNPORTAL-1303</a>] - For system nodes : do not allow to change the visibility
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1316'>GTNPORTAL-1316</a>] - Resource descriptor 1.1 to handle skin module declaration
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1317'>GTNPORTAL-1317</a>] - Integrate with MOP 1.0.3
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-1325'>GTNPORTAL-1325</a>] - Should validate First/Last name field is between 1-45 chars in user and group management
-</li>
-</ul>
-
-<h2> Sub-task
-</h2>
-<ul>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-914'>GTNPORTAL-914</a>] - Portlets should be displayed in a consistent order
-</li>
-<li>[<a href='https://jira.jboss.org/browse/GTNPORTAL-918'>GTNPORTAL-918</a>] - Adding to a category should be done consistently between gadgets and portlets
-</li>
-</ul>
-
-</body>
-</html>
14 years, 3 months
gatein SVN: r4035 - portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-09-02 11:31:58 -0400 (Thu, 02 Sep 2010)
New Revision: 4035
Modified:
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
Log:
more precise route rule
Modified: portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
===================================================================
--- portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2010-09-02 14:44:20 UTC (rev 4034)
+++ portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2010-09-02 15:31:58 UTC (rev 4035)
@@ -53,7 +53,7 @@
protected static Log log = ExoLogger.getLogger("portal:PortalRequestHandler");
- private String[] PATHS = {"/public{gtn{path}:.*}", "/private{gtn{path}:.*}"};
+ private String[] PATHS = {"/public{gtn{path}:/.*}", "/private{gtn{path}:/.*}"};
public String[] getPath()
{
14 years, 3 months
gatein SVN: r4034 - in portal/branches/navcontroller: component/web/server/src/main/java/org/exoplatform/web/handler and 1 other directories.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-09-02 10:44:20 -0400 (Thu, 02 Sep 2010)
New Revision: 4034
Modified:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
Log:
start to wire URL router with portal controller
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java 2010-09-02 13:40:40 UTC (rev 4033)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java 2010-09-02 14:44:20 UTC (rev 4034)
@@ -22,14 +22,18 @@
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.component.RequestLifeCycle;
-import org.exoplatform.services.log.ExoLogger;
-import org.exoplatform.services.log.Log;
import org.exoplatform.web.application.Application;
+import org.exoplatform.web.controller.QualifiedName;
+import org.exoplatform.web.controller.metadata.RouteMetaData;
+import org.exoplatform.web.controller.metadata.RouterMetaData;
import org.exoplatform.web.controller.router.Router;
+import org.gatein.common.logging.Logger;
+import org.gatein.common.logging.LoggerFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -46,14 +50,19 @@
public class WebAppController
{
- protected static Log log = ExoLogger.getLogger("portal:WebAppController");
+ /** . */
+ protected static Logger log = LoggerFactory.getLogger(WebAppController.class);
+ /** . */
private HashMap<String, Object> attributes_;
+ /** . */
private HashMap<String, Application> applications_;
- private HashMap<String, WebRequestHandler> handlers_;
+ /** . */
+ private HashMap<String, WebRequestHandler> handlers;
+ /** . */
private Router router;
/**
@@ -67,7 +76,8 @@
{
applications_ = new HashMap<String, Application>();
attributes_ = new HashMap<String, Object>();
- handlers_ = new HashMap<String, WebRequestHandler>();
+ this.handlers = new HashMap<String, WebRequestHandler>();
+ this.router = new Router(new RouterMetaData());
}
public Object getAttribute(String name, Object value)
@@ -102,18 +112,28 @@
applications_.put(app.getApplicationId(), app);
}
+ private static final QualifiedName HANDLER_PARAM = new QualifiedName("ctrl", "handler");
+
public void register(WebRequestHandler handler) throws Exception
{
for (String path : handler.getPath())
- handlers_.put(path, handler);
+ {
+ RouteMetaData routeMetaData = new RouteMetaData(path);
+
+ //
+ String handlerKey = "" + System.identityHashCode(handler);
+
+ //
+ routeMetaData.addParameter(HANDLER_PARAM, handlerKey);
+
+ //
+ handlers.put(handlerKey, handler);
+
+ //
+ router.addRoute(routeMetaData);
+ }
}
- public void unregister(String[] paths)
- {
- for (String path : paths)
- handlers_.remove(path);
- }
-
/**
* This is the first method - in the eXo web framework - reached by incoming HTTP request, it acts like a
* servlet service() method
@@ -127,24 +147,37 @@
*/
public void service(HttpServletRequest req, HttpServletResponse res) throws Exception
{
- WebRequestHandler handler = handlers_.get(req.getServletPath());
- if (log.isDebugEnabled())
+
+ String portalPath = req.getRequestURI().substring(req.getContextPath().length());
+ log.info("Portal path: " + portalPath);
+
+ //
+ Map<QualifiedName, String> parameters = router.process(portalPath);
+ log.info("Decoded parameters: " + parameters);
+
+ //
+ if (parameters != null)
{
- log.debug("Servlet Path: " + req.getServletPath());
- log.debug("Handler used for this path: " + handler);
- }
- if (handler != null)
- {
- ExoContainer portalContainer = ExoContainerContext.getCurrentContainer();
- RequestLifeCycle.begin(portalContainer);
- try
+ String handlerKey = parameters.get(HANDLER_PARAM);
+ if (handlerKey != null)
{
- handler.execute(this, req, res);
+ WebRequestHandler handler = handlers.get(handlerKey);
+ log.info("Handler used for this path: " + handler);
+
+ //
+ ExoContainer portalContainer = ExoContainerContext.getCurrentContainer();
+ RequestLifeCycle.begin(portalContainer);
+
+ //
+ try
+ {
+ handler.execute(this, req, res, parameters);
+ }
+ finally
+ {
+ RequestLifeCycle.end();
+ }
}
- finally
- {
- RequestLifeCycle.end();
- }
}
}
}
\ No newline at end of file
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java 2010-09-02 13:40:40 UTC (rev 4033)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java 2010-09-02 14:44:20 UTC (rev 4034)
@@ -20,9 +20,11 @@
package org.exoplatform.web;
import org.exoplatform.container.component.BaseComponentPlugin;
+import org.exoplatform.web.controller.QualifiedName;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
/**
* Created by The eXo Platform SAS
@@ -45,7 +47,11 @@
abstract public String[] getPath();
- abstract public void execute(WebAppController app, HttpServletRequest req, HttpServletResponse res) throws Exception;
+ abstract public void execute(
+ WebAppController app,
+ HttpServletRequest req,
+ HttpServletResponse res,
+ Map<QualifiedName, String> parameters) throws Exception;
public void onDestroy(WebAppController controler) throws Exception
{
Modified: portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java
===================================================================
--- portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java 2010-09-02 13:40:40 UTC (rev 4033)
+++ portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java 2010-09-02 14:44:20 UTC (rev 4034)
@@ -25,10 +25,12 @@
import org.exoplatform.download.DownloadService;
import org.exoplatform.web.WebAppController;
import org.exoplatform.web.WebRequestHandler;
+import org.exoplatform.web.controller.QualifiedName;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
+import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -48,7 +50,7 @@
return new String[]{"/download"};
}
- public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res) throws Exception
+ public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res, Map<QualifiedName, String> parameters) throws Exception
{
String resourceId = req.getParameter("resourceId");
res.setHeader("Cache-Control", "private max-age=600, s-maxage=120");
Modified: portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java
===================================================================
--- portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java 2010-09-02 13:40:40 UTC (rev 4033)
+++ portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java 2010-09-02 14:44:20 UTC (rev 4034)
@@ -26,9 +26,11 @@
import org.exoplatform.upload.UploadService;
import org.exoplatform.web.WebAppController;
import org.exoplatform.web.WebRequestHandler;
+import org.exoplatform.web.controller.QualifiedName;
import java.io.Writer;
import java.net.URLEncoder;
+import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -52,7 +54,7 @@
return new String[]{"/upload"};
}
- public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res) throws Exception
+ public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res, Map<QualifiedName, String> parameters) throws Exception
{
String action = req.getParameter("action");
String[] uploadIds = req.getParameterValues("uploadId");
Modified: portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
===================================================================
--- portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2010-09-02 13:40:40 UTC (rev 4033)
+++ portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2010-09-02 14:44:20 UTC (rev 4034)
@@ -29,12 +29,14 @@
import org.exoplatform.web.application.ApplicationRequestPhaseLifecycle;
import org.exoplatform.web.application.Phase;
import org.exoplatform.web.application.RequestFailure;
+import org.exoplatform.web.controller.QualifiedName;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.core.UIApplication;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.event.Event;
import java.util.List;
+import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -51,7 +53,7 @@
protected static Log log = ExoLogger.getLogger("portal:PortalRequestHandler");
- private String[] PATHS = {"/public", "/private"};
+ private String[] PATHS = {"/public{gtn{path}:.*}", "/private{gtn{path}:.*}"};
public String[] getPath()
{
@@ -82,7 +84,7 @@
*
*/
@SuppressWarnings("unchecked")
- public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res) throws Exception
+ public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res, Map<QualifiedName, String> parameters) throws Exception
{
log.debug("Session ID = " + req.getSession().getId());
res.setHeader("Cache-Control", "no-cache");
14 years, 3 months
gatein SVN: r4033 - epp/portal/branches.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-09-02 09:40:40 -0400 (Thu, 02 Sep 2010)
New Revision: 4033
Added:
epp/portal/branches/EPP_5_1_Branch/
Log:
Building EPP 5.1 Branch out of GateIn trunk r4024
Copied: epp/portal/branches/EPP_5_1_Branch (from rev 4024, portal/trunk)
14 years, 3 months
gatein SVN: r4032 - in portal/branches/navcontroller/component/web/controller/src: main/java/org/exoplatform/web/controller/metadata and 2 other directories.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-09-02 09:32:01 -0400 (Thu, 02 Sep 2010)
New Revision: 4032
Modified:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java
Log:
improve a bit metadata configuration side
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -25,6 +25,7 @@
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.web.application.Application;
+import org.exoplatform.web.controller.router.Router;
import java.util.ArrayList;
import java.util.HashMap;
@@ -53,6 +54,8 @@
private HashMap<String, WebRequestHandler> handlers_;
+ private Router router;
+
/**
* The WebAppControler along with the PortalRequestHandler defined in the init() method of the
* PortalController servlet (controller.register(new PortalRequestHandler())) also add the
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -32,13 +32,22 @@
{
/** . */
+ private final String path;
+
+ /** . */
private final Map<QualifiedName, String> parameters;
- public RouteMetaData()
+ public RouteMetaData(String path)
{
+ this.path = path;
this.parameters = new HashMap<QualifiedName, String>();
}
+ public String getPath()
+ {
+ return path;
+ }
+
public RouteMetaData addParameter(QualifiedName name, String value)
{
parameters.put(name, value);
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -37,23 +37,19 @@
this.routes = new HashMap<String, RouteMetaData>();
}
- public void addRoute(String pathTemplate, RouteMetaData controller)
+ public void addRoute(RouteMetaData controller)
{
- if (pathTemplate == null)
- {
- throw new NullPointerException();
- }
if (controller == null)
{
throw new NullPointerException();
}
//
- routes.put(pathTemplate, controller);
+ routes.put(controller.getPath(), controller);
}
- public Map<String, RouteMetaData> getRoutes()
+ public Iterable<RouteMetaData> getRoutes()
{
- return routes;
+ return routes.values();
}
}
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -39,17 +39,18 @@
public Router(RouterMetaData metaData)
{
- Route root = new Route();
+ this.root = new Route();
//
- for (Map.Entry<String, RouteMetaData> routeMetaData : metaData.getRoutes().entrySet())
+ for (RouteMetaData routeMetaData : metaData.getRoutes())
{
- String path = routeMetaData.getKey();
- root.append(path, routeMetaData.getValue().getParameters());
+ addRoute(routeMetaData);
}
+ }
- //
- this.root = root;
+ public void addRoute(RouteMetaData routeMetaData)
+ {
+ root.append(routeMetaData.getPath(), routeMetaData.getParameters());
}
public String render(Map<QualifiedName, String> parameters)
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -35,6 +35,7 @@
{
public void assertEquals(Map<QualifiedName, String> expectedParameters, Map<QualifiedName, String> parameters)
{
+ assertNotNull(parameters);
Assert.assertEquals(expectedParameters.keySet(), parameters.keySet());
for (Map.Entry<QualifiedName, String> expectedEntry : expectedParameters.entrySet())
{
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -34,15 +34,13 @@
public class TestBuildRoute extends TestCase
{
- private RouteMetaData ref1 = new RouteMetaData();
-
public void testRoot()
{
String[] paths = {"/",""};
for (String path : paths)
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(path, ref1);
+ routerMD.addRoute(new RouteMetaData(path));
Router router = new Router(routerMD);
Route expectedRoute = new Route();
assertEquals(expectedRoute, router.root);
@@ -55,7 +53,7 @@
for (String path : paths)
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(path, ref1);
+ routerMD.addRoute(new RouteMetaData(path));
Router router = new Router(routerMD);
Route expectedRoute = new Route();
SimpleRoute a = new SimpleRoute(expectedRoute, "a");
@@ -70,7 +68,7 @@
for (String path : paths)
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(path, ref1);
+ routerMD.addRoute(new RouteMetaData(path));
Router router = new Router(routerMD);
//
@@ -93,7 +91,7 @@
for (String path : paths)
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(path, ref1);
+ routerMD.addRoute(new RouteMetaData(path));
Router router = new Router(routerMD);
//
@@ -116,7 +114,7 @@
for (String path : paths)
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(path, ref1);
+ routerMD.addRoute(new RouteMetaData(path));
Router router = new Router(routerMD);
//
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -35,7 +35,7 @@
public void testRoot() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/"));
Router router = new Router(routerMD);
//
@@ -54,7 +54,7 @@
public void testA() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/a"));
Router router = new Router(routerMD);
//
@@ -88,7 +88,7 @@
public void testAB() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a/b", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/a/b"));
Router router = new Router( routerMD);
//
@@ -122,7 +122,7 @@
public void testParameter() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p}", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/{p}"));
Router router = new Router(routerMD);
assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(("/a")));
}
@@ -130,8 +130,8 @@
public void testParameterPropagationToDescendants() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/", new RouteMetaData().addParameter("p", "a"));
- routerMD.addRoute("/a", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/").addParameter("p", "a"));
+ routerMD.addRoute(new RouteMetaData("/a"));
Router router = new Router(routerMD);
assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(("/a")));
}
@@ -139,7 +139,7 @@
public void testWildcardPattern() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p:.*}", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/{p:.*}"));
Router router = new Router(routerMD);
//
@@ -158,7 +158,7 @@
public void testSimplePattern() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p:a}", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/{p:a}"));
Router router = new Router(routerMD);
//
@@ -177,8 +177,8 @@
public void testPrecedence() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a", new RouteMetaData());
- routerMD.addRoute("/{p:a}/b", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/a"));
+ routerMD.addRoute(new RouteMetaData("/{p:a}/b"));
Router router = new Router(routerMD);
//
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -40,20 +40,26 @@
protected void setUp() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- RouteMetaData portalControllerRef = new RouteMetaData();
- portalControllerRef.addParameter(new QualifiedName("gtn", "controller"), "site");
- portalControllerRef.addParameter(new QualifiedName("gtn", "sitetype"), "portal");
- routerMD.addRoute("/private/{{gtn}sitename}{{gtn}path:.*}", portalControllerRef);
- RouteMetaData groupControllerRef = new RouteMetaData();
- portalControllerRef.addParameter(new QualifiedName("gtn", "controller"), "site");
- groupControllerRef.addParameter(new QualifiedName("gtn", "sitetype"), "group");
- routerMD.addRoute("/groups/{{gtn}sitename}{{gtn}path:.*}", groupControllerRef);
- RouteMetaData userControllerRef = new RouteMetaData();
- portalControllerRef.addParameter(new QualifiedName("gtn", "controller"), "site");
- userControllerRef.addParameter(new QualifiedName("gtn", "sitetype"), "user");
- routerMD.addRoute("/users/{{gtn}sitename}{{gtn}path:.*}", userControllerRef);
//
+ RouteMetaData portalRouteMD = new RouteMetaData("/private/{{gtn}sitename}{{gtn}path:.*}");
+ portalRouteMD.addParameter(new QualifiedName("gtn", "controller"), "site");
+ portalRouteMD.addParameter(new QualifiedName("gtn", "sitetype"), "portal");
+ routerMD.addRoute(portalRouteMD);
+
+ //
+ RouteMetaData groupRouteMD = new RouteMetaData("/groups/{{gtn}sitename}{{gtn}path:.*}");
+ portalRouteMD.addParameter(new QualifiedName("gtn", "controller"), "site");
+ groupRouteMD.addParameter(new QualifiedName("gtn", "sitetype"), "group");
+ routerMD.addRoute(groupRouteMD);
+
+ //
+ RouteMetaData userRouteMD = new RouteMetaData("/users/{{gtn}sitename}{{gtn}path:.*}");
+ portalRouteMD.addParameter(new QualifiedName("gtn", "controller"), "site");
+ userRouteMD.addParameter(new QualifiedName("gtn", "sitetype"), "user");
+ routerMD.addRoute(userRouteMD);
+
+ //
this.router = new Router(routerMD);
}
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java 2010-09-02 13:22:37 UTC (rev 4031)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java 2010-09-02 13:32:01 UTC (rev 4032)
@@ -35,7 +35,7 @@
public void testRoot() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/"));
Router router = new Router(routerMD);
//
@@ -45,7 +45,7 @@
public void testA() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/a"));
Router router = new Router(routerMD);
//
@@ -55,7 +55,7 @@
public void testAB() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a/b", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/a/b"));
Router router = new Router( routerMD);
//
@@ -65,7 +65,7 @@
public void testParameter() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p}", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/{p}"));
Router router = new Router(routerMD);
//
@@ -76,7 +76,7 @@
public void testWildcardPattern() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p:.*}", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/{p:.*}"));
Router router = new Router(routerMD);
//
@@ -92,7 +92,7 @@
public void testSimplePattern() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p:a}", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/{p:a}"));
Router router = new Router(routerMD);
//
@@ -105,8 +105,8 @@
public void testPrecedence() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a", new RouteMetaData());
- routerMD.addRoute("/{p:a}/b", new RouteMetaData());
+ routerMD.addRoute(new RouteMetaData("/a"));
+ routerMD.addRoute(new RouteMetaData("/{p:a}/b"));
Router router = new Router(routerMD);
//
14 years, 3 months
gatein SVN: r4031 - epp/portal/branches/EPP_5_0_Branch/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium.
by do-not-reply@jboss.org
Author: mstruk
Date: 2010-09-02 09:22:37 -0400 (Thu, 02 Sep 2010)
New Revision: 4031
Modified:
epp/portal/branches/EPP_5_0_Branch/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_03_ChangeDisplayingLanguage.html
Log:
JBEPP-403: Locale is not set correctly in login form when login failed
- Fixed Selenium test SNF_PRL_03_ChangeDisplayingLanguage
Modified: epp/portal/branches/EPP_5_0_Branch/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_03_ChangeDisplayingLanguage.html
===================================================================
--- epp/portal/branches/EPP_5_0_Branch/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_03_ChangeDisplayingLanguage.html 2010-09-02 13:19:04 UTC (rev 4030)
+++ epp/portal/branches/EPP_5_0_Branch/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_03_ChangeDisplayingLanguage.html 2010-09-02 13:22:37 UTC (rev 4031)
@@ -58,12 +58,12 @@
</tr>
<tr>
<td>waitForElementPresent</td>
- <td>xpath=//div[@id='UITabContent']//div[2]/a</td>
+ <td>xpath=//div[@id='UITabContent']//div[3]/a</td>
<td></td>
</tr>
<tr>
<td>clickAt</td>
- <td>xpath=//div[@id='UITabContent']//div[2]/a</td>
+ <td>xpath=//div[@id='UITabContent']//div[3]/a</td>
<td>1,1</td>
</tr>
<tr>
14 years, 3 months
gatein SVN: r4030 - in portal/branches/navcontroller/component/web/controller/src: test/java/org/exoplatform/web/controller/router and 1 other directory.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-09-02 09:19:04 -0400 (Thu, 02 Sep 2010)
New Revision: 4030
Removed:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/protocol/
Modified:
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java
Log:
remove useless stuff for now
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java 2010-09-02 13:15:14 UTC (rev 4029)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java 2010-09-02 13:19:04 UTC (rev 4030)
@@ -22,8 +22,6 @@
import junit.framework.Assert;
import junit.framework.TestCase;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.protocol.ControllerResponse;
-import org.exoplatform.web.controller.protocol.ProcessResponse;
import java.util.Arrays;
import java.util.Collections;
14 years, 3 months
gatein SVN: r4029 - in portal/branches/navcontroller/component/web/controller/src: main/java/org/exoplatform/web/controller/metadata and 2 other directories.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-09-02 09:15:14 -0400 (Thu, 02 Sep 2010)
New Revision: 4029
Added:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java
Removed:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/Controller.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/ControllerContext.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerRefMetaData.java
Modified:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java
Log:
simplify for now
Deleted: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/Controller.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/Controller.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/Controller.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2010 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.exoplatform.web.controller;
-
-import org.exoplatform.web.controller.protocol.ControllerResponse;
-
-import java.io.IOException;
-
-/**
- * The controller is responsible for processing a controller context.
- *
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
- * @version $Revision$
- */
-public interface Controller
-{
-
- /**
- * Process an incoming context and returns a response.
- *
- * @param controllerContext the context to process
- * @return the response
- * @throws IOException any io exception
- */
- ControllerResponse process(ControllerContext controllerContext) throws IOException;
-
-
-}
Deleted: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/ControllerContext.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/ControllerContext.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/ControllerContext.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2010 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.exoplatform.web.controller;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * <p>The controller context captures the state of a stage in the decoding of a request. The controller context
- * should not be mutated, if a new controller with modified state is needed, a new controller should be created
- * with the new state.</p>
- *
- * <p>The context augments the http request and response with additional state. Usually this state is obtained
- * from a processing context and is used by a controller to create a response.</p>
- *
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
- * @version $Revision$
- */
-public class ControllerContext
-{
-
- /** The current path. */
- final String path;
-
- /** The current parameters. */
- final Map<QualifiedName, String> parameters;
-
- public ControllerContext(String path)
- {
- this.path = path;
- this.parameters = new HashMap<QualifiedName, String>();
- }
-
- public ControllerContext(String path, Map<QualifiedName, String> parameters)
- {
- this.path = path;
- this.parameters = parameters;
- }
-
- public Map<QualifiedName, String> getParameters()
- {
- return parameters;
- }
-
- public String getPath()
- {
- return path;
- }
-}
Deleted: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerRefMetaData.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerRefMetaData.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerRefMetaData.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2010 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.exoplatform.web.controller.metadata;
-
-import org.exoplatform.web.controller.QualifiedName;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
- * @version $Revision$
- */
-public class ControllerRefMetaData
-{
-
- /** . */
- private final Map<QualifiedName, String> parameters;
-
- public ControllerRefMetaData()
- {
- this.parameters = new HashMap<QualifiedName, String>();
- }
-
- public ControllerRefMetaData addParameter(QualifiedName name, String value)
- {
- parameters.put(name, value);
- return this;
- }
-
- public ControllerRefMetaData addParameter(String name, String value)
- {
- return addParameter(new QualifiedName(name), value);
- }
-
- public Map<QualifiedName, String> getParameters()
- {
- return parameters;
- }
-}
Copied: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java (from rev 4027, portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerRefMetaData.java)
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java (rev 0)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2010 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.web.controller.metadata;
+
+import org.exoplatform.web.controller.QualifiedName;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class RouteMetaData
+{
+
+ /** . */
+ private final Map<QualifiedName, String> parameters;
+
+ public RouteMetaData()
+ {
+ this.parameters = new HashMap<QualifiedName, String>();
+ }
+
+ public RouteMetaData addParameter(QualifiedName name, String value)
+ {
+ parameters.put(name, value);
+ return this;
+ }
+
+ public RouteMetaData addParameter(String name, String value)
+ {
+ return addParameter(new QualifiedName(name), value);
+ }
+
+ public Map<QualifiedName, String> getParameters()
+ {
+ return parameters;
+ }
+}
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -30,14 +30,14 @@
{
/** . */
- private final Map<String, ControllerRefMetaData> routes;
+ private final Map<String, RouteMetaData> routes;
public RouterMetaData()
{
- this.routes = new HashMap<String, ControllerRefMetaData>();
+ this.routes = new HashMap<String, RouteMetaData>();
}
- public void addRoute(String pathTemplate, ControllerRefMetaData controller)
+ public void addRoute(String pathTemplate, RouteMetaData controller)
{
if (pathTemplate == null)
{
@@ -52,7 +52,7 @@
routes.put(pathTemplate, controller);
}
- public Map<String, ControllerRefMetaData> getRoutes()
+ public Map<String, RouteMetaData> getRoutes()
{
return routes;
}
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -19,9 +19,7 @@
package org.exoplatform.web.controller.router;
-import org.exoplatform.web.controller.ControllerContext;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.protocol.ProcessResponse;
import java.util.ArrayList;
import java.util.HashMap;
@@ -201,12 +199,19 @@
return null;
}
- final ProcessResponse route(ControllerContext context)
+ /**
+ * Note : the parameters arguments is modified, I don't like it much but as this is only used
+ * by the framework, there is no side effects, but I should investigate about doing this in a
+ * better way.
+ *
+ * @param path the path
+ * @param parameters the parameters
+ * @return null or the parameters when it matches
+ */
+ final Map<QualifiedName, String> route(String path, Map<QualifiedName, String> parameters)
{
- String path = context.getPath();
+ Map<QualifiedName, String> ret = null;
- ProcessResponse ret = null;
-
// Anything that does not begin with '/' returns null
if (path.length() > 0 && path.charAt(0) == '/')
{
@@ -217,7 +222,7 @@
{
if (terminal)
{
- ret = new ProcessResponse(context.getPath(), context.getParameters());
+ ret = parameters;
}
}
else
@@ -235,8 +240,6 @@
Route route = simpleRoutes.get(segment);
if (route != null)
{
- Map<QualifiedName, String> parameters = context.getParameters();
-
// Determine next path
String nextPath;
if (pos == path.length())
@@ -248,11 +251,8 @@
nextPath = path.substring(pos);
}
- // Build next controller context
- ControllerContext nextContext = new ControllerContext(nextPath, parameters);
-
// Delegate the process to the next route
- ProcessResponse response = route.route(nextContext);
+ Map<QualifiedName, String> response = route.route(nextPath, parameters);
// If we do have a response we return it
if (response != null)
@@ -262,45 +262,44 @@
}
}
- // Try to find a pattern matching route
- for (PatternRoute route : patternRoutes)
+ // Try to find a pattern matching route otherwise
+ if (ret == null)
{
- Matcher matcher = route.pattern.matcher(path.substring(1));
-
- // We match
- if (matcher.find())
+ for (PatternRoute route : patternRoutes)
{
- // Update parameters
- Map<QualifiedName, String> parameters = new HashMap<QualifiedName, String>(context.getParameters());
- int group = 1;
- for (QualifiedName parameterName : route.parameterNames)
- {
- parameters.put(parameterName, matcher.group(group++));
- }
+ Matcher matcher = route.pattern.matcher(path.substring(1));
- // Build next controller context
- int nextPos = matcher.end() + 1;
- String nextPath;
- if (path.length() == nextPos)
+ // We match
+ if (matcher.find())
{
- nextPath = "/";
- }
- else
- {
- nextPath = path.substring(nextPos);
- }
+ // Update parameters
+ int group = 1;
+ for (QualifiedName parameterName : route.parameterNames)
+ {
+ parameters.put(parameterName, matcher.group(group++));
+ }
- //
- ControllerContext nextContext = new ControllerContext(nextPath, parameters);
+ // Build next controller context
+ int nextPos = matcher.end() + 1;
+ String nextPath;
+ if (path.length() == nextPos)
+ {
+ nextPath = "/";
+ }
+ else
+ {
+ nextPath = path.substring(nextPos);
+ }
- // Delegate to next route
- ProcessResponse response = route.route(nextContext);
+ // Delegate to next route
+ Map<QualifiedName, String> response = route.route(nextPath, parameters);
- // If we do have a response we return it
- if (response != null)
- {
- ret = response;
- break;
+ // If we do have a response we return it
+ if (response != null)
+ {
+ ret = response;
+ break;
+ }
}
}
}
@@ -312,10 +311,9 @@
{
for (Map.Entry<QualifiedName, String> entry : routeParameters.entrySet())
{
- if (!ret.getParameters().containsKey(entry.getKey()))
+ if (!ret.containsKey(entry.getKey()))
{
- // julien : should do a safe put all here on String[]
- ret.getParameters().put(entry.getKey(), entry.getValue());
+ ret.put(entry.getKey(), entry.getValue());
}
}
}
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -19,21 +19,19 @@
package org.exoplatform.web.controller.router;
-import org.exoplatform.web.controller.Controller;
-import org.exoplatform.web.controller.ControllerContext;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.ControllerRefMetaData;
+import org.exoplatform.web.controller.metadata.RouteMetaData;
import org.exoplatform.web.controller.metadata.RouterMetaData;
-import org.exoplatform.web.controller.protocol.ControllerResponse;
import java.io.IOException;
+import java.util.HashMap;
import java.util.Map;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
*/
-public class Router implements Controller
+public class Router
{
/** . */
@@ -44,7 +42,7 @@
Route root = new Route();
//
- for (Map.Entry<String, ControllerRefMetaData> routeMetaData : metaData.getRoutes().entrySet())
+ for (Map.Entry<String, RouteMetaData> routeMetaData : metaData.getRoutes().entrySet())
{
String path = routeMetaData.getKey();
root.append(path, routeMetaData.getValue().getParameters());
@@ -59,8 +57,8 @@
return root.render(parameters);
}
- public ControllerResponse process(ControllerContext controllerContext) throws IOException
+ public Map<QualifiedName, String> process(String path) throws IOException
{
- return root.route(controllerContext);
+ return root.route(path, new HashMap<QualifiedName, String>());
}
}
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/AbstractTestController.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -35,31 +35,6 @@
*/
public abstract class AbstractTestController extends TestCase
{
-
- public void assertProcessResponse(String path, Map<QualifiedName, String> parameters, ControllerResponse response)
- {
- assertNotNull("Was not expecting a null response", response);
- assertEquals(ProcessResponse.class, response.getClass());
- // todo check path and define semantic
- // assertEquals(path, ((ProcessResponse)response).getPath());
- assertEquals(parameters, ((ProcessResponse)response).getParameters());
- }
-
- public void assertProcessResponse(ControllerResponse response)
- {
- assertProcessResponse(null, Collections.<QualifiedName, String>emptyMap(), response);
- }
-
- public void assertProcessResponse(String path, ControllerResponse response)
- {
- assertProcessResponse(path, Collections.<QualifiedName, String>emptyMap(), response);
- }
-
- public void assertProcessResponse(Map<QualifiedName, String> parameters, ControllerResponse response)
- {
- assertProcessResponse(null, parameters, response);
- }
-
public void assertEquals(Map<QualifiedName, String> expectedParameters, Map<QualifiedName, String> parameters)
{
Assert.assertEquals(expectedParameters.keySet(), parameters.keySet());
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -21,7 +21,7 @@
import junit.framework.TestCase;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.ControllerRefMetaData;
+import org.exoplatform.web.controller.metadata.RouteMetaData;
import org.exoplatform.web.controller.metadata.RouterMetaData;
import java.util.Collections;
@@ -34,7 +34,7 @@
public class TestBuildRoute extends TestCase
{
- private ControllerRefMetaData ref1 = new ControllerRefMetaData();
+ private RouteMetaData ref1 = new RouteMetaData();
public void testRoot()
{
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -19,9 +19,8 @@
package org.exoplatform.web.controller.router;
-import org.exoplatform.web.controller.ControllerContext;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.ControllerRefMetaData;
+import org.exoplatform.web.controller.metadata.RouteMetaData;
import org.exoplatform.web.controller.metadata.RouterMetaData;
import java.util.Collections;
@@ -36,162 +35,162 @@
public void testRoot() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/", new ControllerRefMetaData());
+ routerMD.addRoute("/", new RouteMetaData());
Router router = new Router(routerMD);
//
- assertNull(router.process(new ControllerContext("")));
+ assertNull(router.process(""));
//
- assertProcessResponse(Collections.<QualifiedName, String>emptyMap(), router.process(new ControllerContext("/")));
+ assertEquals(Collections.<QualifiedName, String>emptyMap(), router.process("/"));
//
- assertNull(router.process(new ControllerContext("/a")));
+ assertNull(router.process("/a"));
//
- assertNull(router.process(new ControllerContext("a")));
+ assertNull(router.process("a"));
}
public void testA() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a", new ControllerRefMetaData());
+ routerMD.addRoute("/a", new RouteMetaData());
Router router = new Router(routerMD);
//
- assertProcessResponse(Collections.<QualifiedName, String>emptyMap(), router.process(new ControllerContext("/a")));
+ assertEquals(Collections.<QualifiedName, String>emptyMap(), router.process("/a"));
//
- assertNull(router.process(new ControllerContext("a")));
+ assertNull(router.process("a"));
//
- assertNull(router.process(new ControllerContext("a/")));
+ assertNull(router.process("a/"));
//
- assertProcessResponse(Collections.<QualifiedName, String>emptyMap(), router.process(new ControllerContext("/a/")));
+ assertEquals(Collections.<QualifiedName, String>emptyMap(), router.process("/a/"));
//
- assertNull(router.process(new ControllerContext("")));
+ assertNull(router.process(""));
//
- assertNull(router.process(new ControllerContext("/")));
+ assertNull(router.process("/"));
//
- assertNull(router.process(new ControllerContext("/b")));
+ assertNull(router.process("/b"));
//
- assertNull(router.process(new ControllerContext("b")));
+ assertNull(router.process("b"));
//
- assertNull(router.process(new ControllerContext("/a/b")));
+ assertNull(router.process("/a/b"));
}
public void testAB() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a/b", new ControllerRefMetaData());
+ routerMD.addRoute("/a/b", new RouteMetaData());
Router router = new Router( routerMD);
//
- assertNull(router.process(new ControllerContext("a/b")));
+ assertNull(router.process("a/b"));
//
- assertProcessResponse(Collections.<QualifiedName, String>emptyMap(), router.process(new ControllerContext("/a/b")));
+ assertEquals(Collections.<QualifiedName, String>emptyMap(), router.process("/a/b"));
//
- assertProcessResponse(Collections.<QualifiedName, String>emptyMap(), router.process(new ControllerContext("/a/b/")));
+ assertEquals(Collections.<QualifiedName, String>emptyMap(), router.process("/a/b/"));
//
- assertNull(router.process(new ControllerContext("a/b/")));
+ assertNull(router.process("a/b/"));
//
- assertNull(router.process(new ControllerContext("")));
+ assertNull(router.process(""));
//
- assertNull(router.process(new ControllerContext("/")));
+ assertNull(router.process("/"));
//
- assertNull(router.process(new ControllerContext("/b")));
+ assertNull(router.process("/b"));
//
- assertNull(router.process(new ControllerContext("b")));
+ assertNull(router.process("b"));
//
- assertNull(router.process(new ControllerContext("/a/b/c")));
+ assertNull(router.process("/a/b/c"));
}
public void testParameter() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p}", new ControllerRefMetaData());
+ routerMD.addRoute("/{p}", new RouteMetaData());
Router router = new Router(routerMD);
- assertProcessResponse(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(new ControllerContext("/a")));
+ assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(("/a")));
}
public void testParameterPropagationToDescendants() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/", new ControllerRefMetaData().addParameter("p", "a"));
- routerMD.addRoute("/a", new ControllerRefMetaData());
+ routerMD.addRoute("/", new RouteMetaData().addParameter("p", "a"));
+ routerMD.addRoute("/a", new RouteMetaData());
Router router = new Router(routerMD);
- assertProcessResponse(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(new ControllerContext("/a")));
+ assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(("/a")));
}
public void testWildcardPattern() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p:.*}", new ControllerRefMetaData());
+ routerMD.addRoute("/{p:.*}", new RouteMetaData());
Router router = new Router(routerMD);
//
- assertProcessResponse(Collections.singletonMap(new QualifiedName("p"), ""), router.process(new ControllerContext("/")));
+ assertEquals(Collections.singletonMap(new QualifiedName("p"), ""), router.process("/"));
//
- assertProcessResponse(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(new ControllerContext("/a")));
+ assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.process("/a"));
//
- assertNull(router.process(new ControllerContext("a")));
+ assertNull(router.process(("a")));
//
- assertProcessResponse(Collections.singletonMap(new QualifiedName("p"), "a/b"), router.process(new ControllerContext("/a/b")));
+ assertEquals(Collections.singletonMap(new QualifiedName("p"), "a/b"), router.process("/a/b"));
}
public void testSimplePattern() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p:a}", new ControllerRefMetaData());
+ routerMD.addRoute("/{p:a}", new RouteMetaData());
Router router = new Router(routerMD);
//
- assertProcessResponse(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(new ControllerContext("/a")));
+ assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.process("/a"));
//
- assertNull(router.process(new ControllerContext("a")));
+ assertNull(router.process("a"));
//
- assertNull(router.process(new ControllerContext("/ab")));
+ assertNull(router.process("/ab"));
//
- assertNull(router.process(new ControllerContext("ab")));
+ assertNull(router.process("ab"));
}
public void testPrecedence() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a", new ControllerRefMetaData());
- routerMD.addRoute("/{p:a}/b", new ControllerRefMetaData());
+ routerMD.addRoute("/a", new RouteMetaData());
+ routerMD.addRoute("/{p:a}/b", new RouteMetaData());
Router router = new Router(routerMD);
//
- assertNull(router.process(new ControllerContext("a")));
+ assertNull(router.process(("a")));
//
- assertProcessResponse(Collections.<QualifiedName, String>emptyMap(), router.process(new ControllerContext("/a")));
+ assertEquals(Collections.<QualifiedName, String>emptyMap(), router.process("/a"));
//
- assertProcessResponse(Collections.<QualifiedName, String>emptyMap(), router.process(new ControllerContext("/a/")));
+ assertEquals(Collections.<QualifiedName, String>emptyMap(), router.process("/a/"));
//
- assertProcessResponse(Collections.singletonMap(new QualifiedName("p"), "a"), router.process(new ControllerContext("/a/b")));
+ assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.process("/a/b"));
}
}
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -19,9 +19,8 @@
package org.exoplatform.web.controller.router;
-import org.exoplatform.web.controller.ControllerContext;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.ControllerRefMetaData;
+import org.exoplatform.web.controller.metadata.RouteMetaData;
import org.exoplatform.web.controller.metadata.RouterMetaData;
import java.util.HashMap;
@@ -41,15 +40,15 @@
protected void setUp() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- ControllerRefMetaData portalControllerRef = new ControllerRefMetaData();
+ RouteMetaData portalControllerRef = new RouteMetaData();
portalControllerRef.addParameter(new QualifiedName("gtn", "controller"), "site");
portalControllerRef.addParameter(new QualifiedName("gtn", "sitetype"), "portal");
routerMD.addRoute("/private/{{gtn}sitename}{{gtn}path:.*}", portalControllerRef);
- ControllerRefMetaData groupControllerRef = new ControllerRefMetaData();
+ RouteMetaData groupControllerRef = new RouteMetaData();
portalControllerRef.addParameter(new QualifiedName("gtn", "controller"), "site");
groupControllerRef.addParameter(new QualifiedName("gtn", "sitetype"), "group");
routerMD.addRoute("/groups/{{gtn}sitename}{{gtn}path:.*}", groupControllerRef);
- ControllerRefMetaData userControllerRef = new ControllerRefMetaData();
+ RouteMetaData userControllerRef = new RouteMetaData();
portalControllerRef.addParameter(new QualifiedName("gtn", "controller"), "site");
userControllerRef.addParameter(new QualifiedName("gtn", "sitetype"), "user");
routerMD.addRoute("/users/{{gtn}sitename}{{gtn}path:.*}", userControllerRef);
@@ -67,13 +66,13 @@
expectedParameters.put(new QualifiedName("gtn", "path"), "");
//
- assertProcessResponse(expectedParameters, router.process(new ControllerContext("/private/classic")));
+ assertEquals(expectedParameters, router.process("/private/classic"));
assertEquals("/private/classic", router.render(expectedParameters));
}
public void testPrivateClassicSlash() throws Exception
{
- router.process(new ControllerContext("/private/classic/"));
+ router.process("/private/classic/");
Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
expectedParameters.put(new QualifiedName("gtn", "controller"), "site");
expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
@@ -81,7 +80,7 @@
expectedParameters.put(new QualifiedName("gtn", "path"), "/");
//
- assertProcessResponse(expectedParameters, router.process(new ControllerContext("/private/classic/")));
+ assertEquals(expectedParameters, router.process("/private/classic/"));
assertEquals("/private/classic/", router.render(expectedParameters));
}
@@ -94,7 +93,7 @@
expectedParameters.put(new QualifiedName("gtn", "path"), "/home");
//
- assertProcessResponse(expectedParameters, router.process(new ControllerContext("/private/classic/home")));
+ assertEquals(expectedParameters, router.process("/private/classic/home"));
assertEquals("/private/classic/home", router.render(expectedParameters));
}
}
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java 2010-09-02 13:02:07 UTC (rev 4028)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java 2010-09-02 13:15:14 UTC (rev 4029)
@@ -20,7 +20,7 @@
package org.exoplatform.web.controller.router;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.ControllerRefMetaData;
+import org.exoplatform.web.controller.metadata.RouteMetaData;
import org.exoplatform.web.controller.metadata.RouterMetaData;
import java.util.Collections;
@@ -35,7 +35,7 @@
public void testRoot() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/", new ControllerRefMetaData());
+ routerMD.addRoute("/", new RouteMetaData());
Router router = new Router(routerMD);
//
@@ -45,7 +45,7 @@
public void testA() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a", new ControllerRefMetaData());
+ routerMD.addRoute("/a", new RouteMetaData());
Router router = new Router(routerMD);
//
@@ -55,7 +55,7 @@
public void testAB() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a/b", new ControllerRefMetaData());
+ routerMD.addRoute("/a/b", new RouteMetaData());
Router router = new Router( routerMD);
//
@@ -65,7 +65,7 @@
public void testParameter() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p}", new ControllerRefMetaData());
+ routerMD.addRoute("/{p}", new RouteMetaData());
Router router = new Router(routerMD);
//
@@ -76,7 +76,7 @@
public void testWildcardPattern() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p:.*}", new ControllerRefMetaData());
+ routerMD.addRoute("/{p:.*}", new RouteMetaData());
Router router = new Router(routerMD);
//
@@ -92,7 +92,7 @@
public void testSimplePattern() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/{p:a}", new ControllerRefMetaData());
+ routerMD.addRoute("/{p:a}", new RouteMetaData());
Router router = new Router(routerMD);
//
@@ -105,8 +105,8 @@
public void testPrecedence() throws Exception
{
RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute("/a", new ControllerRefMetaData());
- routerMD.addRoute("/{p:a}/b", new ControllerRefMetaData());
+ routerMD.addRoute("/a", new RouteMetaData());
+ routerMD.addRoute("/{p:a}/b", new RouteMetaData());
Router router = new Router(routerMD);
//
14 years, 3 months