diff options
Diffstat (limited to 'rt/docs')
-rw-r--r-- | rt/docs/UPGRADING-2.0 | 7 | ||||
-rw-r--r-- | rt/docs/UPGRADING-3.0 | 18 | ||||
-rw-r--r-- | rt/docs/UPGRADING-3.2 | 11 | ||||
-rw-r--r-- | rt/docs/UPGRADING-3.4 | 12 | ||||
-rw-r--r-- | rt/docs/UPGRADING-3.6 | 49 | ||||
-rw-r--r-- | rt/docs/UPGRADING-3.8 | 192 | ||||
-rw-r--r-- | rt/docs/UPGRADING-4.0 | 108 | ||||
-rw-r--r-- | rt/docs/UPGRADING.mysql | 85 | ||||
-rw-r--r-- | rt/docs/customizing/articles_introduction.pod | 155 | ||||
-rw-r--r-- | rt/docs/customizing/templates.pod | 132 | ||||
-rw-r--r-- | rt/docs/customizing/timezones_in_charts.pod | 88 | ||||
-rw-r--r-- | rt/docs/extending/clickable_links.pod | 184 | ||||
-rw-r--r-- | rt/docs/extending/external_custom_fields.pod | 90 | ||||
-rw-r--r-- | rt/docs/extending/using_forms_widgets.pod | 113 | ||||
-rw-r--r-- | rt/docs/full_text_indexing.pod | 174 | ||||
-rw-r--r-- | rt/docs/glossary.pod | 30 | ||||
-rw-r--r-- | rt/docs/hacking.pod | 301 | ||||
-rw-r--r-- | rt/docs/network-diagram.svg | 6095 | ||||
-rw-r--r-- | rt/docs/schema.dot | 99 | ||||
-rw-r--r-- | rt/docs/security.pod | 77 | ||||
-rw-r--r-- | rt/docs/web_deployment.pod | 233 |
21 files changed, 8253 insertions, 0 deletions
diff --git a/rt/docs/UPGRADING-2.0 b/rt/docs/UPGRADING-2.0 new file mode 100644 index 000000000..a935552b5 --- /dev/null +++ b/rt/docs/UPGRADING-2.0 @@ -0,0 +1,7 @@ +UPGRADING FROM 2.x: + +The core RT distribution does not contain the tool to upgrade RT from +version 2.0; the tool, can be downloaded from CPAN at +http://search.cpan.org/dist/RT-Extension-RT2toRT3/ + +Further instructions may be found in that distribution's README file. diff --git a/rt/docs/UPGRADING-3.0 b/rt/docs/UPGRADING-3.0 new file mode 100644 index 000000000..625ca4baf --- /dev/null +++ b/rt/docs/UPGRADING-3.0 @@ -0,0 +1,18 @@ +UPGRADING FROM 3.0.x - Changes: + += Installation = + +We recommend you move your existing /opt/rt3 tree completely out +of the way before installing the new version of RT, to make sure +that you don't inadvertently leave old files hanging around. + += Rights changes = + +Now, if you want RT to automatically create new users upon ticket +submission, you MUST grant 'Everyone' the right to create tickets. +Granting this right only to "Unprivileged Users" is now insufficient. + += Web server configuration + +The configuration for RT's web interface has changed. Please refer to +docs/web_deployment.pod for instructions. diff --git a/rt/docs/UPGRADING-3.2 b/rt/docs/UPGRADING-3.2 new file mode 100644 index 000000000..c0b8cebae --- /dev/null +++ b/rt/docs/UPGRADING-3.2 @@ -0,0 +1,11 @@ +UPGRADING FROM 3.2 and earlier - Changes: + += Rights changes = + +Now, if you want any user to be able to access the Admin tools (a.k.a. +the Configuration tab), you must grant that user the "ShowConfigTab" +right. Making the user a privileged user is no longer sufficient. + +"SuperUser" users are no longer automatically added to the list of users +who can own tickets in a queue. You now need to explicitly give them the +"OwnTicket" right. diff --git a/rt/docs/UPGRADING-3.4 b/rt/docs/UPGRADING-3.4 new file mode 100644 index 000000000..4dca0451f --- /dev/null +++ b/rt/docs/UPGRADING-3.4 @@ -0,0 +1,12 @@ +UPGRADING FROM 3.3.14 and earlier - Changes: + +The "ModifyObjectCustomFieldValues" right name was too long. It has been +changed to "ModifyCustomField" + + +UPGRADING FROM 3.3.11 and earlier - Changes: + +Custom Fields now have an additional right, "ModifyCustomField". This +right governs whether a user can modify an object's custom field values +for a particular custom field. This includes adding, deleting and +changing values. diff --git a/rt/docs/UPGRADING-3.6 b/rt/docs/UPGRADING-3.6 new file mode 100644 index 000000000..3c27709cb --- /dev/null +++ b/rt/docs/UPGRADING-3.6 @@ -0,0 +1,49 @@ +UPGRADING FROM 3.6.X and earlier - Changes: + +As there are a large number of code changes, it is highly recommended +that you install RT into a fresh directory, and then reinstall your +customizations. + +The database schema has changed significantly for mysql 4.1 and above; +please read UPGRADING.mysql for more details. + +The configuration format has been made stricter. All options MUST be set +using the Set function; the historical "@XXX = (...) unless @XXX;" is no +longer allowed. + +The RTx::Shredder extension has been integrated into core, and several +features have been added, so you MUST uninstall it before upgrading. + +A new interface for making links in text clickable, and doing other +arbitrary text replacements, has been integrated into RT. You can read +more in `perldoc docs/extending/clickable_links.pod`. + +A new feature has been added that allows users to forward +messages. There is a new option in the config ($ForwardFromUser), new +rights, and a new template. + +New global templates have been added with "Error: " prefixed to the name +to make it possible to configure error messages sent to users. + +You can read about the new GnuPG integration in `perldoc +lib/RT/Crypt/GnuPG.pm`. + +New scrip conditions 'On Close' and 'On Reopen' have been added. + + +UPGRADING FROM 3.5.7 and earlier - Changes: + +Scrips are now prepared and committed in order alphanumerically by +description. This means that you can prepend a number (00, 07, 15, 24) +to the beginning of each scrip's description, and they will run in that +order. Depending on your database, the old ordering may have been by +scrip id number -- if that is the case, simply prepend the scrip id +number to the beginning of its description. + + +UPGRADING FROM 3.5.1 and earlier - Changes: + +The default for $RedistributeAutoGeneratedMessages has changed to +'privileged', to make out-of-the-box installations more resistant to +mail loops. If you rely on the old default of redistributing to all +watchers, you'll need to set it explicitly now. diff --git a/rt/docs/UPGRADING-3.8 b/rt/docs/UPGRADING-3.8 new file mode 100644 index 000000000..cb53030e4 --- /dev/null +++ b/rt/docs/UPGRADING-3.8 @@ -0,0 +1,192 @@ +UPGRADING FROM 3.8.8 and earlier - Changes: + +Previous versions of RT used a password hashing scheme which was too +easy to reverse, which could allow attackers with read access to the RT +database to possibly compromise users' passwords. Even if RT does no +password authentication itself, it may still store these weak password +hashes -- using ExternalAuth does not guarantee that you are not +vulnerable! To upgrade stored passwords to a stronger hash, run: + + perl etc/upgrade/vulnerable-passwords + +We have also proved that it's possible to delete a notable set of +records from Transactions table without losing functionality. To delete +these records, run the following script: + + perl -I /opt/rt4/local/lib -I /opt/rt4/lib etc/upgrade/shrink_transactions_table.pl + +If you chose not to run the shrink_cgm_table.pl script when you upgraded +to 3.8, you should read more about it below and run it at this point. + +The default for $MessageBoxWrap is now SOFT and $MessageBoxWidth is now +unset by default. This means the message box will expand to fill all +the available width. $MessageBoxWrap is also overridable by the user +now. These changes accommodate the new default two column layout for +ticket create and update pages. You may turn this layout off by setting +$UseSideBySideLayout to 0. To retain the original behavior, set +$MessageBoxWrap to HARD and $MessageBoxWidth to 72. + + +UPGRADING FROM 3.8.7 and earlier - Changes: + +RT's ChartFont option has been changed from a string to a hash which +lets you specify per-language fonts. RT now comes with a better default +font for charts, too. You should either update your 'ChartFont' option +to match the new format, or consider trying the new default. + +RT now gives you more precise control over the order in which custom +fields are displayed. This change requires some small changes to your +currently saved custom field orders. RT will automatically clean up +your existing custom fields when you run the standard database upgrade +steps. After that cleanup, you should make sure that custom fields are +ordered in a way that you and your users find pleasing. + + +UPGRADING FROM 3.8.6 and earlier - Changes: + +For MySQL and Oracle users: +If you upgraded from a version of RT earlier than 3.7.81, you should +already have a CachedGroupMembers3 index on your CachedGroupMembers +table. If you did a clean install of RT somewhere in the 3.8 release +series, you most likely don't have this index. You can add it manually +with: + + CREATE INDEX CachedGroupMembers3 on CachedGroupMembers (MemberId, ImmediateParentId); + + +UPGRADING FROM 3.8.5 and earlier - Changes: + +You can now forward an entire Ticket history (in addition to specific +transactions) but this requires a new Template called "Forward Ticket". +This template will be added as part of the standard database upgrade +step. + +Custom fields with categories can optionally be split out into +hierarchical custom fields. If you wish to convert your old +category-based custom fields, run: + + perl etc/upgrade/split-out-cf-categories + +It will prompt you for each custom field with categories that it finds, +and the name of the custom field to create to store the categories. + +If you were using the LocalizedDateTime RT::Date formatter from custom +code, and passing a DateFormat or TimeFormat argument, you need to +switch from the strftime methods to the cldr methods; that is, +'full_date_format' becomes 'date_format_full'. + +You may also have done this from your RT_SiteConfig.pm, using: + Set($DateTimeFormat, { + Format => 'LocalizedDateTime', + DateFormat => 'medium_date_format', + ); +Which would need to be changed to: + Set($DateTimeFormat, { + Format => 'LocalizedDateTime', + DateFormat => 'date_format_medium', + ); + + +UPGRADING FROM 3.8.3 and earlier - Changes: + +Arguments to the NotifyGroup Scrip Action will be updated as part of the +standard database upgrade process. + + +UPGRADING FROM 3.8.2 and earlier - Changes: + +A new scrip condition, 'On Reject', has been added. + + +UPGRADING FROM 3.8.1 and earlier - Changes: + +When using Oracle, $DatabaseName is now used as SID, so RT can connect +without environment variables or tnsnames.ora file. Because of this +change, your RT instance may loose its ability to connect to your DB; to +resolve this, you will need to update RT's configuration and restart +your web server. Example configuration: + + Set($DatabaseType, 'Oracle'); + Set($DatabaseHost, '192.168.0.1'); + # undefined port => will try both 1526 and 1521 + Set($DatabasePort, undef); + # ORACLE SID + Set($DatabaseName, 'XE'); + # user for RT in Oracle, RT's tables in his schema + Set($DatabaseUser, 'test'); + # above user's password + Set($DatabasePassword, 'test'); + +If you want a user to be able to access the Approvals tools (a.k.a. the +Approvals tab), you must grant that user the "ShowApprovalsTab" right. + + +UPGRADING FROM 3.8.0 and earlier - Changes: + +The TicketSQL syntax for bookmarked tickets has been changed. +Specifically, the new phrasing is "id = '__Bookmarked__'", rather than +the old "__Bookmarks__". The old form will remain, for backwards +compatibility. The standard database upgrade process will only +automatically change the global 'Bookmarked Tickets' search + + +UPGRADING FROM 3.7.85 and earlier - Changes: + +We have proved that it is possible to delete a large set of records from +the CachedGroupMembers table without losing functionality; in fact, +failing to do so may result in occasional problems where RT miscounts +users, particularly in the chart functionality. To delete these records +run the following script: + + perl -I /opt/rt4/local/lib -I /opt/rt4/lib etc/upgrade/shrink_cgm_table.pl + +After you run this, you will have significantly reduced the number of +records in your CachedGroupMembers table, and may need to tell your +database to refresh indexes/statistics. Please consult your DBA for +specific instructions for your database. + + +UPGRADING FROM 3.7.81 and earlier - Changes: + +RT::Extension::BrandedQueues has been integrated into core, and the +handling of subject tags has changed as a consequence. You will need to +modify any of your email templates which use the $rtname variable, in +order to make them respect the per-queue subject tags. To edit your +templates, log into RT as your administrative user, then click: + + Configuration -> Global -> Templates -> Select -> <Some template name> + +The only template which ships with RT which needs updating is the +"Autoreply" template, which includes this line: + + "There is no need to reply to this message right now. Your ticket + has been assigned an ID of [{$rtname} #{$Ticket->id()}]." + +Change this line to read: + + "There is no need to reply to this message right now. Your ticket + has been assigned an ID of { $Ticket->SubjectTag }." + +If you were previously using RT::Extension::BrandedQueues, you MUST +uninstall it before upgrading. In addition, you must run the +'etc/upgrade/3.8-branded-queues-extension' perl script. This will +convert the extension's configuration into the new format. Finally, in +templates where you were using the Tag method ($Ticket->QueueObj->Tag), +you will need to replace it with $Ticket->SubjectTag + +RT::Action::LinearEscalate extension has been integrated into core, +so you MUST uninstall it before upgrading. + +RT::Extension::iCal has been integrated into core, so you MUST uninstall +it before upgrading. In addition, you must run etc/upgrade/3.8-ical-extension +script to convert old data. + + +UPGRADING FROM 3.7.80 and earlier - Changes: + +Added indexes to CachedGroupMembers for MySQL and Oracle. +If you have previously installed RTx-Shredder, you may already +have these indexes. You can see the indexes by looking at +etc/upgrade/3.7.81/schema.* + +These indexes may take a very long time to create. diff --git a/rt/docs/UPGRADING-4.0 b/rt/docs/UPGRADING-4.0 new file mode 100644 index 000000000..a9301348e --- /dev/null +++ b/rt/docs/UPGRADING-4.0 @@ -0,0 +1,108 @@ +Common Issues + +RT now defaults to a database name of rt4 and an installation root of /opt/rt4. + +If you are upgrading, you will likely want to specify that your database +is still named rt3 (or import a backup of your database as rt4 so that +you can feel more confident making the upgrade). + +You really shouldn't install RT4 into your RT3 source tree (/opt/rt3) +and instead should be using make install to set up a clean environment. +This will allow you to evaluate your local modifications and configuration +changes as you migrate to 4.0. + +If you choose to force RT to install into /opt/rt3, or another existing RT 3.x +install location, you will encounter issues because we removed the _Overlay +files (such as Ticket_Overlay.pm) and relocated other files. You will +need to manually remove these files after the upgrade or RT will fail. +After making a complete backup of your /opt/rt3 install, you might use a +command like the following to remove the _Overlay files: + + find /opt/rt3/lib/ -type f -name '*_Overlay*' -delete + +RT has also changed how web deployment works; you will need to review +docs/web_deployment.pod for current instructions. The old +`fastcgi_server`, `webmux.pl`, and `mason_handler.*` files will not +work with RT 4.0, and should be removed to reduce confusion. + +******* +RT_SiteConfig.pm + +You will need to carefully review your local settings when moving from +3.8 to 4.0. + +If you were adding your own custom statuses in earlier versions of RT, +using ActiveStatus or InactiveStatus you will need to port these to use +the new Lifecycles functionality. You can read more about it in +RT_Config.pm. In most cases, you can do this by extending the default +active and inactive lists. + +******* +Upgrading sessions on MySQL + +In 4.0.0rc2, RT began shipping an updated schema for the sesions table +that specificies a character set as well as making the table InnoDB. As +part of the upgrade process, your sessions table will be dropped and +recreated with the new schema. + +******* +UPGRADING FROM RT 3.8.x and RTFM 2.1 or greater + +RT4 now includes an Articles functionality, merged from RTFM. +You should not install and enable the RT::FM plugin separately on RT 4. +If you have existing data in RTFM, you can use the etc/upgrade/upgrade-articles +script to upgrade that data. + +When running normal upgrade scripts, RT will warn if it finds existing +RTFM tables that contain data and point you to the upgrade-articles script. + +This script should be run from your RT tarball. It will immediately +begin populating your new RT4 tables with data from RTFM. If you have +browsed in the RT4 UI and created new classes and articles, this script +will fail spectacularly. Do *not* run this except on a fresh upgrade of +RT. + +You can run this as + + etc/upgrade/upgrade-articles + +It will ouput a lot of data about what it is changing. You should +review this for errors. + +If you are running RTFM 2.0 with a release of RT, there isn't currently an upgrade +script that can port RTFM's internal CustomField and Transaction data to RT4. + +You must also remove RT::FM from your @Plugins line in RT_SiteConfig.pm. + +******* +The deprecated classes RT::Action::Generic, RT::Condition::Generic and RT::Search::Generic +have been removed, but you shouldn't have been using them anyway. You should have been using +RT::Action, RT::Condition and RT::Search, respectively. + +* The "Rights Delegation" and "Personal Groups" features have been removed. + +* Replace the following code in templates: + + [{$Ticket->QueueObj->SubjectTag || $rtname} #{$Ticket->id}] + +with + + { $Ticket->SubjectTag } + +* Unique names are now enforced for user defined groups. New groups cannot be + created with a duplicate name and existing groups cannot be renamed to an + in-use name. The admin interface will warn about existing groups with + duplicate names. Although the groups will still function, some parts of the + interface (rights management, subgroup membership) may not work as expected + with duplicate names. Running + + /opt/rt4/sbin/rt-validator --check + + will report duplicate group names, and running it with --resolve will fix + duplicates by appending the group id to the name. + + Nota Bene: As a result of differing indexes in the schema files, Postgres and + SQLite RT databases have enforced group name uniqueness for many years at the + database level. + +******* diff --git a/rt/docs/UPGRADING.mysql b/rt/docs/UPGRADING.mysql new file mode 100644 index 000000000..77a6b389f --- /dev/null +++ b/rt/docs/UPGRADING.mysql @@ -0,0 +1,85 @@ +If you did not start by reading the README file, please start there; +these steps do not list the full upgrading process, merely a part which +is sometimes necessary. + +This file applies if either: + + 1) You are upgrading RT from a version prior to 3.8.0, on any version + of MySQL +............. OR ............. + 2) You are migrating from MySQL 4.0 to MySQL 4.1 or above + +If neither of the above cases apply, your should upgrade as per the +instructions in the README. + +These changes are necessary because MySQL 4.1 and greater changed some +aspects of character set handling that may result in RT failures; this +will manifest as multiple login requests, corrupted binary attachments, +and corrupted image custom fields, among others. In order to resolve +this issue, the upgrade process will need to modify the schema. + + 1) If you are moving the database and/or upgrading MySQL + 1a) Dump the database; with MySQL 4.1 and greater be sure to pass + the mysqldump command the --default-character-set=binary option. + This is necessary because the data was originally encoded in + Latin1. + + 1b) Configure the new MySQL to use Latin1 as the default character + set everywhere, not UTF-8. This is necessary so the import in + the next step assumes the data is Latin1. + + 1c) Import the dump made in step 1a into the new MySQL server, using + the --default-character-set=binary option on restore. This will + ensure that the data is imported as bytes, which will be + interpreted as Latin1 thanks to step 1b above. + + 1d) Test that your RT works as expected on this new database. + + 2) Backup RT's database using --default-character-set=binary + Furthermore, test that you can restore from this backup. + + 3) Follow instructions in the README file to step 6b. + + 4) Apply changes described in the README's step 6b, but only up to + version 3.7.87. + + 5) Apply the RT 3.8 schema upgrades. Included in RT is the script + etc/upgrade/upgrade-mysql-schema.pl that will generate the + appropriate SQL queries: + + perl etc/upgrade/upgrade-mysql-schema.pl db user pass > queries.sql + + If your mysql database is on a remote host, you can run the script + like this instead: + + perl etc/upgrade/upgrade-mysql-schema.pl db:host user pass > queries.sql + + 6) Check the sanity of the SQL queries in the queries.sql file + yourself, or consult with your DBA. + + 7) Apply the queries. Note that this step can take a while; it may also + require additional space on your hard drive comparable with size of + your tables. + + mysql -u root -p rt3 < queries.sql + + NOTE that 'rt3' is the default name of the RT database, change it in + the command above if your database is named differently. + + This step should not produce any errors or warnings. If you see any, + restore your database from the backup you made at step 1, and send a + report to the rt-users@lists.bestpractical.com mailing list. + + 8) Re-run the `make upgrade-database` command from step 6b of the + README, applying the rest of the upgrades, starting with 3.7.87, and + follow the README's remaining steps. + + 9) Test everything. The most important parts you have to test: + * binary attachments, like docs, PDFs, and images + * binary custom fields + * everything that may contain characters other than ASCII + +10) If you were upgrading from MySQL 4.0, you may now, if you wish, + reconfigure your newer MySQL instance to use UTF-8 as the default + character set, as step 7 above adjusted the character sets on all + existing tables to contain UTF-8 encoded data, rather than Latin1. diff --git a/rt/docs/customizing/articles_introduction.pod b/rt/docs/customizing/articles_introduction.pod new file mode 100644 index 000000000..ea49b05de --- /dev/null +++ b/rt/docs/customizing/articles_introduction.pod @@ -0,0 +1,155 @@ + +=head1 Articles + +Articles are a way of managing stock answers or frequently asked +questions. Articles are a collection of custom fields whose values can +be easily inserted into ticket replies or searched and browsed within +RT. They are organized into classes and topics. + +=head2 UI + +The user interface to Articles is available from the Tools -> Articles +menu. Admin functionality can be found under Tools -> Configuration -> +Articles. Once configured, articles will become available for searching +on the Reply/Comment page on tickets. There are configuration variables +to make Articles available on ticket creation. + +=head2 Basics + +You will need to make some decisions about how to organize your +articles. Articles will be organized into one Class and multiple +Topics. They will use Custom Fields to store their article data. +These Custom Fields can be configured on a Class by Class basis. +Classes can be made available globally or on a per-Queue basis. + +=head2 Organization + +=head3 Classes + +Classes are equivalent to RT's queues. They can be created by going +to Tools -> Configuration -> Articles -> Classes -> New Class. Articles +are assigned to one Class. When you create Custom Fields for use with +Articles, they will be applied Globally or to a Class, like Custom +Fields are applied to a Queue in RT. Each class also controls what +information is included into a reply (such as the Class header and +footer) and the Article. + +Classes need to be Applied, just like a Custom Field by using the +Applied To link. You can apply them globally or on a queue-by-queue +basis. + +hotlist. + +=head3 Topics + +You can also use Topics to organize your Articles. While editing a +Class, there is a Topic tab for Class specific Topics. You can create +global Topics from the Global tab under Tools -> Configuration. + +When editing Topics, type the name (and optionally description) of the +Topic, and then click the button at the appropriate location in the +Topic hierarchy. This should allow you to build a tree of Topics. This +tree of Topics should show up when creating or modifying articles in +the class. These can be arbitrarily nested. + +Global Topics will be available for all Articles, regardless of their +Class. Articles can belong to both global and class-specific Topics. + +Articles topics can be set from the 'Modify' screen for the article -- +simply select as many topics as you desire from the list at the bottom +of the screen. + +=head2 Custom Fields + +Articles don't have a single "body" section for each +article. Everything is a custom field (except for name, summary and +some other basic metadata). So, you need to create some custom +fields to hold the Article body and other data. These Custom Fields +should have "Applies To" be "RTFM Articles". + +Once you've created your custom fields, go into your classes and click +on "Custom Fields" and add the Custom Fields you want to each class. +Alternatively, use the Applies To link from each Custom Field. + +=head2 Creating Articles + +You can create an article from scratch by going to Tools -> Articles -> +New Article and then picking which Class to create the Article under. +The Summary, Description and Custom Fields will all be searchable when +including an Article and you can control what Custom Fields end up in +your Ticket from the Class configuration page. + +=head3 Extracting an Article + +You can extract the body of a ticket into an article. Within RT, you +should now see an "Extract to article" button in the upper right hand +corner of RT's UI when working with tickets. When you click that +button, RT will ask you which Class to create your new article in. +Once you click on a class name, the Ticket's transactions will be +displayed, along with a set of select boxes. For each transaction, you +can pick which Custom Field that transaction should be extracted to. +From there on in, it's just regular article creation. + +=head2 Including an Article + +When replying to or commenting on tickets or creating tickets, there +is a UI widget that lets you search for and include Articles in +your reply. (They're editable, of course). + +Articles can be included by searching for them, knowing the Id of the +article, using the Article Hotlist and using the Queue specific +dropdown. + +=head2 Queue Specific List of Articles + +You can use Topics to organize a set of Queue specific Articles. +Simply create a global Topic called 'Queues' and then create Topics +under Queues named after each of your Queues. Within each Queue named +Topic, create some Topics and then assign Articles to those +sub-topics. This creates a hierarchy like this: + +Queues +\-> General + \-> Topic 1 + \-> Topic 2 + +If you are replying to a Ticket in the General Queue you will be +offered a choice of Topic 1 and Topic 2 along with the searching. +After choosing Topic 1 or Topic 2, you will be given a list of +relevant articles to choose. + +Alternately, you can now implement this by applying a single class to +your queue and using the L<Article Hotlist> feature described below. + +=head2 Article Hotlist + +If you enable "All articles in this class are on dropdown on ticket +reply page" option, there will be a dropdown on the Create or Update +page which allows users to quickly include Articles. + +=head2 SelfService Interface + +If you grant the Unprivileged user group the right ShowArticle, they +will get a Search box at the top of their interface. This allows users +to look for answer to questions before creating a Ticket. + +=head1 Configuration options + +=head2 ArticleOnTicketCreate + +Set this to a true value to display the Article include interface on the +Ticket Create page in addition to the Reply/Comment page (Create.html +in addition to Update.html) + +=head2 HideArticleSearchOnReplyCreate + +On Ticket Reply (and Create if you set the above config var) +RTFM normally displays a search box and an include box (for +inputting an article id) and configurable dropdowns +of articles. These can be configured using Global Topics or +on the Class page. + +If you set this to a true value, RTFM will only display +dropdowns and hide the search boxes + +=cut diff --git a/rt/docs/customizing/templates.pod b/rt/docs/customizing/templates.pod new file mode 100644 index 000000000..5733f606c --- /dev/null +++ b/rt/docs/customizing/templates.pod @@ -0,0 +1,132 @@ +=head1 Templates + +Each template is split into two sections. A block of headers and a body. These +sections are separated by a blank line. + +Templates are processed by the L<Text::Template> module. This module +allows you to embed arbitrary Perl code into your templates. Text wrapped +in curly braces, C<{...}> is interpreted as Perl. See L<Text::Template> +for more information. + +=head2 Headers + +Your template may specify arbitrary email headers. Each header is a name, a +colon, then a value. So, for example, to specify a subject, you can use: + + Subject: Thanks for your bug report. + +=head3 Special Headers + +=over + +=item Content-Type: text/html + +The special header "Content-Type: text/html" tells RT that the template should +be parsed as HTML. RT will automatically make the outgoing message multipart. +That way, recipients who can read only plaintext email will receive something +readable, while users with clients which can display HTML will receive the full +experience. Please be aware that HTML support in mail clients varies greatly, +much more so than different web browsers. + +We welcome contributions of HTML-ization of builtin templates. + +=back + +=head2 Template Types + +Templates have a Type which dictates which level of code execution is +allowed. + +Templates of type C<Perl> are evaluated using L<Text::Template> +which allows arbitrary code execution. Only users which have the global +C<ExecuteCode> privilege may write templates of type C<Perl>. Prior to +RT 4.0, this was the only type of Template available. + +Templates of type C<Simple> permit only simple variable interpolation. +No special privilege beyond C<ModifyTemplate> is needed to write C<Simple> +templates. + +For both types of templates, text between curly braces C<{ ... }> is +interpolated. For C<Perl> templates, this text can be any code (see +L<Text::Template/Details>). For C<Simple> templates, only simple variables +are permitted; for example C<{ $TicketSubject }>. + +=head2 Variables + +=head3 Perl templates + +The variables that your templates may use include: + +=over 4 + +=item C<$Transaction> + +The transaction object. + +=item C<$rtname> + +The value of the "rtname" config variable. + +=item C<$Ticket> + +The ticket object. This is only set during a ticket transaction. + +=item C<$Requestor> + +This is not an object, but the name of the first requestor on the ticket. +If this is not what you need, inspect C<< $Ticket->Requestors >>. + +=item C<loc("text")> + +A localization function. See L<Locale::Maketext>. + +=back + +=head3 Selected Simple template variables + +Since method calls are not allowed in simple templates, many common +method results have been placed into scalar variables for the template's +use. Among them: + +=over 4 + +=item $TicketId + +=item $TicketSubject + +=item $TicketStatus + +=item $TicketQueueName + +=item $TicketOwnerName + +=item $TicketOwnerEmailAddress + +=item $TicketCF(Name) + +For example, C<$TicketCFDepartment>. + +=item $TransactionType + +=item $TransactionField + +=item $TransactionOldValue + +=item $TransactionNewValue + +=item $TransactionData + +=item $TransactionContent + +=item $TransactionDescription + +=item $TransactionBriefDescription + +=item $TransactionCF(Name) + +For example, C<$TransactionCFLocation>. + +=back + +=cut + diff --git a/rt/docs/customizing/timezones_in_charts.pod b/rt/docs/customizing/timezones_in_charts.pod new file mode 100644 index 000000000..47c3a096f --- /dev/null +++ b/rt/docs/customizing/timezones_in_charts.pod @@ -0,0 +1,88 @@ +=head1 INTRODUCTION + +Every date in RT's DB is stored in UTC format. This affects charts +grouped by time periods (Annually, Monthly, etc.), in that they are by +default shown in UTC. To produce charts that are in a specific timezone, +we have to use database-specific functions to convert between timezones; +unsurprisingly, each DB has very different requirements. + +=head1 CONFIGURATION + +This code is experimental; you can enable it using the +C<$ChartsTimezonesInDB> configuration option. + +=head1 DATABASE SPECIFIC NOTES + +=head2 mysql + +The time adjustment cannot simply be converted using a numeric time +shift, as this shift value depends on the daylight saving time +properties of the time zone. + +mysql since 4.1.3 supports named timezones, but you have to fill special +tables with up-to-date timezone data. On modern systems, this is usually +a simple case of: + + mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql + +mysql's doc recommends you restart server after running this; you can +read more about mysql's timezone support at +L<http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html> + +=head2 PostgreSQL + +PostgreSQL uses your operating system's functions to convert timezones. +Thus, you don't need to do anything in particular except to make sure +that the data in F</usr/share/zoneinfo> is up to date. On some systems +this may mean upgrading a system package. + +=head3 Note for users of Pg 7.2 and older or users upgraded from those + +You should be sure that timestamps in RT DB have no TZ set. The +TIMESTAMP column type in PostgreSQL prior to Pg 7.3 had timezone info by +default; this has been removed in more recent versions. If your RT +database has this embedded timezone info, you will need to alter the +columns to remove them before enabling this feature. + +=head2 Other databases + +There is no implementation for Oracle or SQLite at current. + +=head1 FOR DEVELOPERS + +=head2 PostgreSQL + +We use the timestamp type for all datetime fields. It either has +timezone info or not, since by default Pg 7.3 and above have no +timezone. Conversion is kinda tricky: + + timezone('Europe/Moscow', timezone('UTC', column_without_tz_info)) + timezone('to_tz', timezone('from_tz', column_without_tz_info)) + +This function flips the HAS_TZ flag on the argument, and moves the +timestamp to UTC. The first call makes no conversion, but flips the +HAS_TZ flag; the second call flips it back and does actual conversion. + +For more information, See +L<http://www.postgresql.org/docs/7.4/static/functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT> +and +L<http://www.postgresql.org/docs/7.4/static/datatype-datetime.html#DATATYPE-TIMEZONES> + +=head2 mysql + +Once timezone information is loaded into tables on the server, +we have all the same set of named timezones in the system +and DateTime (DateTime project has copy of the TZ data in a module). + +CONVERT_TZ(TS, from, to) exists since mysql 4.1.3. Note that it takes a +timestamp, so it only supports limitted date range (usuall 1970-2038). + +=head2 Oracle + +Look at FROM_TZ function. + +=head2 SQLite + +Has no apparent timezone support. + +=cut diff --git a/rt/docs/extending/clickable_links.pod b/rt/docs/extending/clickable_links.pod new file mode 100644 index 000000000..91e9eec22 --- /dev/null +++ b/rt/docs/extending/clickable_links.pod @@ -0,0 +1,184 @@ +=head1 MakeClicky extension + +=head2 Description + +I<MakeClicky> detects various formats of data in headers and email +messages, and makes them into links in RT's web UI. + +=head2 Configuration + +You can configure which actions are enabled from RT config with the +@Active_MakeClicky option, which should contain an ordered list of the +actions you want to apply. + +By default, RT provides two actions: + +=over 4 + +=item C<httpurl> + +Detects C<http://> and C<https://> URLs and adds an C<[Open URL]> link +after the URL. + +=item C<httpurl_overwrite> + +Detects URLs as C<httpurl> format, but replaces the URL with a link. + +=back + +RTIR, an RT extension for CERT teams (not installed with core RT), +shipps with several additional actions you can use: C<ip>, C<ipdecimal>, +C<email>, C<domain> and C<RIPE>. + +=head2 Order of actions + +The order of the actions is important in situations when you use +multiple actions that could match the same block of text; only the first +matching action from the list is applied. For example, it makes no sense +to use C<httpurl> and C<httpurl_overwrite> at the same time, as both +actions always match the same pieces of text. + +=head2 How it works + +Each action consists of regular expression and function that does text +replacement. When you open the history of a ticket, RT searches in the +text with the given regular expresion for matches. If it finds a match, +it calls the function with the match as the argument, then replaces the +matched text with the string returned by the function. + +While RT only searches plaintext content, the actions can generate +arbitrary HTML. + +=head2 Writing custom MakeClicky actions + +To extend the list of actions with your own types of data, use the +provided callback. Specifically, create the file +F<local/html/Callbacks/MyCallbacks/Elements/MakeClicky/Default>. + +It will be called with the following arguments: + +=over 4 + +=item types + +An array reference of hash references. Modify this array +reference to add your own types; the first matching type will be +used. Each hashref should contain: + +=over 4 + +=item name + +The name of the data format; this is used in the configuration file to +enable the format. + +=item regex + +A regular expression to match against. + +=item action + +The name of the action to run (see "actions", below) + +=back + +=item actions + +A hash reference of 'actions'. Modify this hash reference to change or +add action types. Values are subroutine references which will get +called when needed. They should return the modified string. Note that +subroutine B<must escape> HTML. + +=item handler + +A subroutine reference; modify it only if you have to. This can be used +to add pre- or post-processing around all actions. + +=back + +=head2 Actions' arguments + +A hash is passed to the action with two keys that always exist: + +=over 4 + +=item value + +The full match of the regular expression; this is the block of text that +will be replaced with action's result. + +=item all_matches + +And arrayref with all of the match's capturing groups; for example if +your regexp is C<qr{ticket\s+#(\d+)}>, then the first element will be +full match ("ticket #XXX"), the same as in 'value' key, but the second +element of the array will be the id of a ticket (XXX). Using this, you +can avoid reparsing the value in the action. Only the first eight +groups of your regexps are passed to action. + +=back + +=head2 Custom MakeClicky action example + +Create a new file F</opt/rt4/local/html/Callbacks/MyCallbacks/Elements/MakeClicky/Default> +with the content: + + <%ARGS> + $types => [] + $actions => {} + </%ARGS> + <%INIT> + my $web_path = RT->Config->Get('WebPath'); + + # action that takes ticket ID as argument and returns link to the ticket + $actions->{'link_ticket'} = sub { + my %args = @_; + my $id = $args{'all_matches'}[1]; + return qq{<a href="$web_path/Ticket/Display.html?id=$id">$args{value}</a>}; + }; + + # add action to the list + push @$types, { + # name, that should be used in config to activate action + name => 'short_ticket_link', + # regular expression that matches text 'ticket #xxx' + regex => qr{ticket\s+#(\d+)}i, + # name of the action that should be applied + action => 'link_ticket', + }; + </%INIT> + +That's all; add C<short_ticket_link> to the C<@Active_MakeClicky> option +in your C<RT_SiteConfig.pm>, and restart your server. Creating a ticket +with "ticket #1" in the body should cause that text to be automatically +linked to the ticket in question. + +=head2 Notes for custom clicky actions writers + +=over + +=item * + +Note that an action B<must escape> illegal HTML characters with entities +and/or arguments in URLs. + +=item * + +Complex regular expressions could slow down RT, as the conversion is run +each time a user opens a ticket, for every transaction. For long +tickets and complex regular expressions, this can slow down ticket +display notably. + +=item * + +Try to match the shortest expression you need with your regular +expression; otherwise another action may miss its chance to match. + +=item * + +Whenever possible, precalculate values using closures around the +functions. + +=back + +=cut diff --git a/rt/docs/extending/external_custom_fields.pod b/rt/docs/extending/external_custom_fields.pod new file mode 100644 index 000000000..c6730ae4e --- /dev/null +++ b/rt/docs/extending/external_custom_fields.pod @@ -0,0 +1,90 @@ +=head1 External custom fields + +=head2 Description + +C<External custom fields> is an extension to custom fields that allow +you to define CFs with dynamic lists of values. Loading values into +these custom fields requires writing a little Perl code to fetch the +data from the external source. + +=head2 Introduction into writing source of values + +For each type of data source that you want, you'll need to put a file in +F</opt/rt4/local/lib/RT/CustomFieldValues/> (or equivalent if you +installed RT into someplace other than F</opt/rt4>). To get a sense of +the code that you'll need to write, take a look at the code in +L</opt/rt4/lib/RT/CustomFieldValues/Groups.pm> for a simple example +which just uses RT's API to pull in a list of RT's groups. + +Running C<perldoc /opt/rt4/lib/RT/CustomFieldValues/External.pm> will +show you the documentation for the API that needs to be fulfilled; +copying and editing the C<Groups> example is probably a fine place to +start. + +Later in this doc we'll describe the example a little bit more. + +=head2 Configuration + +After the custom code is written, you need to tell RT about its +existence by adding something like following to your RT_SiteConfig.pm: + + Set(@CustomFieldValuesSources, "RT::CustomFieldValues::MySource"); + +The value in quotes should be the name of the class that you created. + +Stop and start your web server to enable any config changes. Open the +web interface as an administrative user (such as root), and create new +custom field. Set its type to be a Select or Autocomplete field, and +save the changes. You should now you have ability to select a "source" +for values. Choose the class you wrote from the list and the save +changes. + +=head2 How to write custom source + +You have to implement a subclass of L<RT::CustomFieldValues::External>. +There are two main methods you want to override: + +=over 4 + +=item SourceDescription + +This method should return a string describing the data source; this is +the identifier which the administrator will see in the dropdown in the +web interface. See L</Configuration>. + +=item ExternalValues + +This method should return an array reference of hash references. The +hash references should contain keys for C<name>, C<description>, and +C<sortorder>. C<name> is most important one; the others are optional. + +=back + +Here's a simple static example: + + package RT::CustomFieldValues::MySource; + + # define class inheritance + use base qw(RT::CustomFieldValues::External); + + # admin friendly description, the default valuse is the name of the class + sub SourceDescription { + return 'My Source'; + } + + # actual values provider method + sub ExternalValues { + # return reference to array ([]) + return [ + # each element of the array is a reference to hash that describe a value + # possible keys are name, description and sortorder + { name => 'value1', description => 'external value', sortorder => 1 }, + { name => 'value2', description => 'another external value', sortorder => 2 }, + # values without description are also valid, the default description is empty string + { name => 'value3', sortorder => 3 }, + # you can skip sortorder too, but note that the default sortorder is 0 (zero) + { name => 'value3' }, + ]; + } + + 1; # don't forget to return some true value diff --git a/rt/docs/extending/using_forms_widgets.pod b/rt/docs/extending/using_forms_widgets.pod new file mode 100644 index 000000000..8deb91362 --- /dev/null +++ b/rt/docs/extending/using_forms_widgets.pod @@ -0,0 +1,113 @@ +=head1 Using widgets F<html/Widgets/Form*> + +This widgets was implemented to address several common issues in handling +request arguments and allow developers to avoid reinventing the wheel. + +=head2 General info + +Each component shows widget by default and has two methods: Process and +InputOnly. The first one method process arguments and return new value +of a parametr. The second one is helper that shows only form elements +with minimum of required text labels. + +So you show a widget with: + <& /Widgets/Form/Integer, + Name => 'NameOfInputElement', + Description => 'Input integer', + &> + +You can show only C<input> box using: + <& /Widgets/Form/Integer:InputOnly, + Name => 'NameOfInputElement', + &> + +In such a simple case you even can avoid processing. Yeah, most probably +you want to check if value is really integer, but these widgets don't +do validation for you, but they are more about fetching values from +hash of arguments, showing these values to user and preserving state +of value between form reloads (see below). + +=head2 Processing + +Processing is required when you use L<extended features|/Extendent features>, +such as Default, Multiple or Alternative. + +To process arguments of a request you have to do the following: + $ARGS{'NameOfInputElement'} = $m->comp( + '/Widgets/Form/Integer:Process', + Arguments => \%ARGS, + Name => 'NameOfInputElement', + ); + +The method returns processed value in canonical form. For different widgets +a canonical form is different and depends on activated features, so you must +always activate the same features during showing a widget and processing +results. + +=head2 Extendent features + +=head3 Default value + +If C<Default> argument is true then widgets expect that there is some +default value for argument if user fills nothing. 'Nothing' in each +widget is different, for example in select box it's special option +which is always the first one, in integer box string '' means empty +value, but boolean box uses radio buttons in this case with three +options: Yes, No and Default. + +Each widget that supports C<Default> feature as well has C<DefaultLabel> and +C<DefaultValue> arguments. + +=head4 Processing and showing with activated Default feature + +When this option is activated then C<Process> method returns undef +value if user selected default value. So for integer box it's empty +string and so on. + +As well when you show a widget you should pass undef as C<CurrentValue> +to inform widget that the current value is default one. + +As all methods of a widget are consistent in this behaviour so you +shouldn't care much about that, but this allows you to implement +custom actions if processing returned undef, for example delete user's +preference record instead of updating it (default value may change later to). + +=head4 C<DefaultValue> when C<Default> is not active + +DefaultValue argument is still actual in the Process method even if +C<Default> is not true. This argument defines intial value. If value +of a key in Arguments is not defined then it's treated as intial state +and the method returns default value. + +=head3 Multiple and Alternative + +These options are only supported by the select widget. + +TODO: Add more info + +=head2 Implementation details + +=head3 Boolean widget + +This widget a little bit tricky. When you use Default option then +things are simple and you see three radio buttons, but in other +case we use a checkbox. But as you know browsers don't pass unchecked +boxes to server, so arguments of a request has no entry for them. + +In the latter case it's hard to figure out case when user unselected +value. Imagine form with a checkbox, you want show it checked by +default and as well form is reloadable (like Reply forms that have +"Add Another File" buttons). User uncheck the box and then upload +file, in this case you want to show user's choice instead of default, +but browser doesn't send any value and you can not figure out if +it's initial state or page reload. To solve this problem we use magic +hidden input field with the same name as the box and value equal to +zero (0). Mason folds arguments with the same name into array refs, so +we get 0 if box is unchecked and [0, 1] if box is checked. An array +reference is true value and 0 is defined value so we know that it's +not initial state and avoid switching back to default. As well this +trick works good in a case when you want show a link to a page and +define default choice for some boolean argument, you don't need +to set argument twice, you just set it to true value (for ex. 1) and +things just work. + diff --git a/rt/docs/full_text_indexing.pod b/rt/docs/full_text_indexing.pod new file mode 100644 index 000000000..0952b4eb9 --- /dev/null +++ b/rt/docs/full_text_indexing.pod @@ -0,0 +1,174 @@ +=head1 NAME + +Full text indexing in RT + +=head1 LIMITATIONS + +While all of the below solutions can search for Unicode characters, they +are not otherwise Unicode aware, and do no case folding, normalization, +or the like. That is, a string that contains C<U+0065 LATIN SMALL +LETTER E> followed by C<U+0301 COMBINING ACUTE ACCENT> will not match a +search for C<U+00E9 LATIN SMALL LETTER E WITH ACUTE>. They also only +know how to tokenize C<latin-1>-ish languages where words are separated +by whitespace or similar characters; as such, support for searching for +Japanese and Chinese content is extremely limited. + +=head1 POSTGRES + +=head2 Creating and configuring the index + +Postgres 8.3 and above support full-text searching natively; to set up +the required C<ts_vector> column, and create either a C<GiN> or C<GiST> +index on it, run: + + sbin/rt-setup-fulltext-index + +If you have a non-standard database administrator username or password, +you may need to pass the C<--dba> or C<--dba-password> options: + + sbin/rt-setup-fulltext-index --dba postgres --dba-password secret + +This will also output an appropriate C<%FullTextSearch> configuration to +add to your F<RT_SiteConfig.pm>; you will need to restart your webserver +after making these changes. However, the index will also need to be +filled before it can be used. To update the index initially, run: + + sbin/rt-fulltext-indexer --all + +This will tokenize and index all existing attachments in your database; +it may take quite a while if your database already has a large number of +tickets in it. + +=head2 Updating the index + +To keep the index up-to-date, you will need to run: + + sbin/rt-fulltext-indexer + +...at regular intervals. By default, this will only tokenize up to 100 +tickets at a time; you can adjust this upwards by passing +C<--limit 500>. Larger batch sizes will take longer and +consume more memory. Care should be taken to ensure that multiple +instances of C<rt-fulltext-indexer> are not run at the same time. + +=head1 MYSQL + +MySQL does not support full-text indexing natively. However, it does +integrate with the external Sphinx engine, available from +L<http://sphinxsearch.com>. Unfortunately, Sphinx integration (using +SphinxSE) does require that you recompile MySQL from source. Most +distribution-provided packages for MySQL do not include SphinxSE +integration, merely the external Sphinx tools; these are not sufficient +for RT's needs. + +=head2 Compiling MySQL and SphinxSE + +SphinxSE requires MySQL 5.0 or 5.1; later versions of MySQL have not +been tested at this time. Sphinx version 2.0.1 has been tested to work, +but version 0.9.9 may work as well. Compilation and installation +instructions for MySQL with SphinxSE can be found at +L<http://sphinxsearch.com/docs/current.html#sphinxse-installing>. + +=head2 Creating and configuring the index + +Once MySQL has been recompiled with SphinxSE, and Sphinx itself is +installed, you may create the required SphinxSE communication table via: + + sbin/rt-setup-fulltext-index + +If you have a non-standard database administrator username or password, +you may need to pass the C<--dba> or C<--dba-password> options: + + sbin/rt-setup-fulltext-index --dba root --dba-password secret + +This will also provide you with the appropriate C<%FullTextSearch> +configuration to add to your F<RT_SiteConfig.pm>; you will need to +restart your webserver after making these changes. It will also print a +sample Sphinx configuration, which should be placed in +F</etc/sphinx.conf>, or equivalent. + +To fill the index, you will need to run the C<indexer> command-line tool +provided by Sphinx: + + indexer rt + +Finally, start the Sphinx search daemon: + + searchd + +=head2 Updating the index + +To keep the index up-to-date, you will need to run: + + indexer rt --rotate + +...at regular intervals in order to pick up new and updated attachments +from RT's database. Failure to do so will result in stale data. + +=head2 Caveats + +Sphinx only returns a finite number of matches to any query; this number +is controlled by C<max_matches> in F</etc/sphinx.conf> and +C<%FullTextSearch>'s C<MaxMatches> in C<RT_SiteConfig.pm>, which must be +kept in sync. The default, set during C<rt-setup-fulltext-index>, is +10000. This limit may lead to false negatives in search results if the +maximum number of matches is reached but the results returned do not +match RT's other criteria. + +Take, for example, the instance where Sphinx is configured to return a +maximum of three results, and tickets 1, 2, 3, 4, and 5 contain the +string "target", but only ticket 5 is in status "Open". A search for +C<Content LIKE 'target' AND Status = 'Open'> may return no results, +despite ticket 5 matching those criteria, as Sphinx will only return +tickets 1, 2, and 3 as possible matches. + +After index creation, altering C<MaxMatches> in C<RT_SiteConfig.pm> is +insufficient to adjust this limit; both C<max_matches> in +F</etc/sphinx.conf> and C<%FullTextSearch>'s C<MaxMatches> in +C<RT_SiteConfig.pm> must be updated. + +=head1 ORACLE + +=head2 Creating and configuring the index + +Oracle supports full-text indexing natively using the Oracle Text +package. Once Oracle Text is installed and configured, run: + + sbin/rt-setup-fulltext-index + +If you have a non-standard database administrator username or password, +you may need to pass the C<--dba> or C<--dba-password> options: + + sbin/rt-setup-fulltext-index --dba sysdba --dba-password secret + +This will create an Oracle CONTEXT index on the Content column in the +Attachments table, as well as several preferences, functions and +triggers to support this index. The script will also output an +appropriate C<%FullTextSearch> configuration to add to your +F<RT_SiteConfig>. + +=head2 Updating the index + +To update the index, you will need to run the following at regular +intervals: + + sbin/rt-fulltext-indexer + +This, in effect, simply runs: + + begin + ctx_ddl.sync_index('rt_fts_index', '2M'); + end; + +The amount of memory used for the sync can be controlled with the +C<--memory> option: + + rt-fulltext-indexer --memory 10M + +Instead of being run via C<cron>, this may instead be run via a +DBMS_JOB; read the B<Managing DML Operations for a CONTEXT Index> +chapter of Oracle's B<Text Application Developer's Guide> for details +how to keep the index optimized, perform garbage collection, and other +tasks. + +=cut diff --git a/rt/docs/glossary.pod b/rt/docs/glossary.pod new file mode 100644 index 000000000..0e058ba02 --- /dev/null +++ b/rt/docs/glossary.pod @@ -0,0 +1,30 @@ +=head1 RT Glossary + +This document is intended to be a glossary of terms used in RT. Currently it +doesn't even scratch the surface, but with time it should be expanded. + +=head2 Right names + +RT uses a handful of (mostly) standard prefixes to create right names of the +form "<action><object>". The prefixes and their meanings (if not apparent) +are explained here. + +=over 4 + +=item Admin - Create, modify, and delete + +=item Create + +=item Delete + +=item Edit - Create, modify, and delete + +=item Load - See/show + +=item Modify - Change the content, details and/or metadata + +=item See - Allow viewing of + +=item Show - Allow viewing of, or display in the interface + +=back diff --git a/rt/docs/hacking.pod b/rt/docs/hacking.pod new file mode 100644 index 000000000..8aa84fd01 --- /dev/null +++ b/rt/docs/hacking.pod @@ -0,0 +1,301 @@ +=head1 Development of RT + +RT's source code is stored in a C<git> repository. If you are not +familiar with git, see L</git quickstart>, below, for a short tutorial +which will give you enough information to get started submitting patches +to RT. + +The rest of this document details conventions and tips surrounding the +organization of RT's version control, source code conventions, and how +to submit patches. + + + +=head1 Organization of rt.git + +The RT source repository is available via git from GitHub; you can +browse it at L<http://github.com/bestpractical/rt/> or obtain a local +copy via: + + git clone git://github.com/bestpractical/rt.git + +The bleeding-edge development happens in the C<master> branch. When a +major release is anticipated, a "trunk" branch will be branched from +this -- for example, C<4.0-trunk>. This will allow the trunk to +stabilize while feature development continues on C<master>. +Additionally, as a release is impending for a particular series, a +release engineering branch will be created, named, for example +C<4.0.0-releng>. + +New feature development should always be based off of the C<master> +branch. Branches to fix bugs should be based off of whichever trunk the +bug was first found in. If you found the bug in your RT 4.0.0 install, +you'd branch from 4.0-trunk. + +Branches should be named based on the trunk they are branched +from -- which is to say, the earliest branch they might be merged into. +For example, a bugfix branched from C<4.0-trunk> might be named +C<4.0/fail-taint-mode-early>. A feature branched from C<master> when +there exists a C<4.0-trunk> but no C<4.2-trunk> might be named +C<4.2/rename-LogToScreen>. For consistency, branches should use dashes, +not underscores, to separate words. + +Branches should be reviewed by another developer before being merged. +Reviewers should make sure that the branch accomplishes what it claims +to, and does not introduce any unwanted behavior in doing so. Commit +messages explain the B<why> as much as the B<what> of each commit, and +not include extranous changes. + + +=head1 Code conventions + +The RT codebase is more than ten years old; as such, there are sections +which do not (yet) conform to the guidelines below. Please attempt to +follow the guidelines, even if the code surrounding your changes does +not yet. + +RT also includes a F<.perltidyrc> in its top-level which encodes many of +the conventions. + +=over + +=item Indentation + +Each level of indentation should be four spaces; tabs should never be +used for indentation. + +=back + +=head1 Internationalization + +RT has been translated into several dozen languages. We use Launchpad +( https://translations.launchpad.net/rt ) to crowdsource our +translations into C<po> files. RT uses L<Locale::Maketext> to +localize its user interface. + +Your first stop on this magical journey of internationalization +is L<Locale::Maketext::TPJ13>, which explains the whys of +L<Locale::Maketext>. RT uses most of the features developed in that +article. + +Strings that are displayed to users should be passed through the +C<loc("...")> function or the C<< <&|/l&>...</&> >> Mason template. +C<loc> and C</l> both take parameters, which are used in place of +string interpolation (much like C<sprintf>). It's acceptable to use +HTML in C</l> calls, especially for bold and emphasis. However, you +should limit the amount of HTML that translators must keep exactly +correct, which means avoid including tags that wrap the entire +translatable string, especially C<< <p> >>. + + <p><&|/l, $button &>Do <em>not</em> click [_1]</&></p> # ok + + <&|/l, $button &><p>Do <em>not</em> click [_1]</p></&> # not ok + +In a few places in RT we also pass HTML as parameters to C<loc()> +so that translators do not have to reproduce it exactly, and we can +also change it more freely. For example: + + <&|/l, + '<a href="http://www.gnu.org/licenses/gpl-2.0.html">', + '</a>', + &>Distributed under [_1]version 2 of the GNU GPL[_2].</&> + +F<devel/tools/extract-message-catalog> looks for C<loc("...")> and +C<< <&|/l&>...</&> >> in our source code to pick out translatable +strings, clean them up, and put them into F<share/po> files. We use +our C<.po> files not only to populate L<Locale::Maketext>'s lexicons, +but also to sync new translatable strings and translations with +Launchpad. This Launchpad sync is typically done early during the +freeze of RC releases to give our volunteer translators time to +translate all the new strings which, because of the RC freeze, won't +continue changing. + +Because C<loc()> and C</l> are used to generate strings for human +eyes, they generally must be used "close to the browser". These are +directly in Mason templates, or in functions that return text that +will be passed through Mason. However, in many places in RT we have +hardcoded strings which need translations. For example, the C<$RIGHTS> +hash in F<lib/RT/Queue.pm> maps rights' names (which must be +translatable) to their descriptions (which also must be translatable). +However, when we're declaring such structures, we do not want to +translate them straight away. RT uses English internally, including +in its web forms, so we do not want to localize rights' names except +for display, otherwise things might break weirdly when you check +if a user has the "Superusuario" right. Furthermore, when we're +declaring such data structures at compile time, there is no current +user to select which language to use for localization. Thus, we +cannot call C<loc()> when declaring C<$RIGHTS> and other similar +places. + +For this reason, F<devel/tools/extract-message-catalog> lets you +denote translatable strings with comments. That's what the C<#loc_pair> +comments in the C<$RIGHTS> hash in F<lib/RT/Queue.pm> indicate. +Since we have those comments, our toolchain will put the rights' +names and descriptions into F<share/po> files, which enables +translation by our lovely volunteers. Later on, when RT displays +information about rights in the web UI, we'll pass the right's name +through C<loc>, and L<Locale::Maketext> will then be able to find +our "Superusuario". So although we never used a literal +C<loc("SuperUser")>, we still get its effects thanks to the +C<#loc_pair> comments and using C<loc($RightName)>. + +C<#loc_pair> is used for declaring that the both the key and value +of a particular C<< key => value >> pair are translatable. There +are other markers that you can use. + +C<#loc> is used for declaring that a particular string is translatable. +Its parsing is pretty strict so you can use it to declare that only +the value of a particular C<< key => value >> pair is translatable. + +C<#loc_left_pair> is used for declaring that the I<key> of a +particular C<< key => value >> pair is translatable. This is of +very limited usefulness. + +C<#loc_right_pair> does NOT exist. C<#loc> works in such cases since +its parser does not extend beyond the string at the end of a line. + +=head1 Development tips + +=head2 Setting up a development environment + +=head2 Test suite + +RT also comes with a fairly complete test suite. To run it, you will +need to set environment variables to a database user and password which +can create and drop databases: + + export RT_DBA_USER=root + export RT_DBA_PASSWORD= + +You'll need to configure RT and make sure you have all the dependencies +before running tests. To do this in place without installing: + + ./configure.ac --with-my-user-group --enable-layout=inplace --with-devel-mode + make testdeps + make fixdeps + +Adjust the relevant database options as necessary if you want to test on +Postgres, Oracle, or SQLite. The default is MySQL. + +To run the test suite: + + make test + +If you have multiple processors, you can run the test suite in parallel, +which will be significantly faster: + + make test-parallel + +The C<*-trunk> and C<master> branches are expected to be passing always +be passing all tests. While it is acceptable to break tests in an +intermediate commit, a branch which does not pass tests will not be +merged. Ideally, commits which fix a bug should also include a testcase +which fails before the fix and succeeds after. + + + +=head1 git quickstart + +=over + +=item 1. + +You will first need to obtain a copy of git; this is accomplished via +C<sudo yum install git> in RedHat and derivatives, or C<sudo apt-get +install git> for Debian or Ubuntu. + +=item 2. + +Next, obtain a copy of the RT source from git: + + git clone git://github.com/bestpractical/rt.git + cd rt + +=item 3. + +Configure git to know your name and email address; git uses these when +it makes commits. + + git config user.email your.email@example.com + git config user.name Examp L. Name + +=item 4. + +Switch to the appropriate point to base your work on; this is generally +C<origin/> followed by the major version, followed by C<-trunk>. For +example, if your bug was observed in version 3.8.9, you would choose +C<origin/3.8-trunk>; if it was in 4.0.0, you would choose +C<origin/4.0-trunk>. New features should be based on C<origin/master>. + + git checkout --track origin/4.0-trunk + +=item 5. + +Give your branch a name based on what you are attempting to accomplish. +We suggest that branch names be lower-case and separate words with +dashes, but this branch name is purely for your own reference. + + git branch -m gnupg-encryption + +=item 6. + +Edit the source tree to make your changes. A few commands you may find +useful in doing so are listed below. + +To see what files you have changed: + + git status + +To see a line-by-line list of changes: + + git diff + +To revert a file to the original version: + + git checkout path/to/file + +To revert only individual parts of a file: + + git checkout -p path/to/file + +See L</Development tips> for more tips for working with the RT codebase. + +=item 7. + +Check that you have no extraneous changes using C<git diff>, then commit +your changes: + + git commit -a + +You will be prompted to type your commit message. The first line should +be a short (E<lt> 80 character) summary of the changes, followed by a +blank line, followed by a longer description, if necessary. The commit +message should not simply restate the diff of which lines were added and +subtracted, but should rather explain B<what> those changes accomplish, +and B<why> they are desired. + +If your changes are easily split into multiple components, you may wish +to split your changes into more than one commit; simply return to step 6 +and repeat the with the next related change. If your changes are B<not> +related to each other, you should submit them separately; finish step 9, +then start over from step 4. + +=item 8. + +Save your commits to patch files: + + git format-patch @{u} + +This will print out the names of the files as it creates them. + +=item 9. + +Attach these files to an email using your standard email client, and +send it to C<rt-devel@bestpractical.com>. + +=back + +If you have another bug or feature to implement, simply restart the +process at step 4. + +=cut diff --git a/rt/docs/network-diagram.svg b/rt/docs/network-diagram.svg new file mode 100644 index 000000000..cbd3fe1d1 --- /dev/null +++ b/rt/docs/network-diagram.svg @@ -0,0 +1,6095 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + 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" + width="990" + height="765" + id="svg8321" + version="1.1" + inkscape:version="0.47 r22583" + sodipodi:docname="network-diagram.svg" + inkscape:export-filename="/home/tom/bps/rt/docs/network-diagram.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs8323"> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path11808" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(0,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + id="path11787" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + id="path11802" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible"> + <path + id="path11799" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(1,0)" /> + </marker> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective8329" /> + <inkscape:perspective + id="perspective8352" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + id="linearGradient5048"> + <stop + id="stop5050" + offset="0" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0.5" + id="stop5056" /> + <stop + id="stop5052" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient5060" + inkscape:collect="always"> + <stop + id="stop5062" + offset="0" + style="stop-color:black;stop-opacity:1;" /> + <stop + id="stop5064" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient2809"> + <stop + id="stop2811" + offset="0" + style="stop-color:#d3d7cf;stop-opacity:1;" /> + <stop + id="stop2813" + offset="1" + style="stop-color:#eeeeec;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient8381"> + <stop + id="stop8383" + offset="0" + style="stop-color:#d3d7cf;stop-opacity:1;" /> + <stop + id="stop8385" + offset="1" + style="stop-color:#eeeeec;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3859"> + <stop + style="stop-color:#d3d7cf;stop-opacity:1" + offset="0" + id="stop3861" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0.30973485" + id="stop3037" /> + <stop + id="stop3039" + offset="0.88648254" + style="stop-color:white;stop-opacity:1;" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1" + offset="1" + id="stop3863" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4175"> + <stop + style="stop-color:#d3d7cf;stop-opacity:1" + offset="0" + id="stop4177" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1" + offset="1" + id="stop4179" /> + </linearGradient> + <linearGradient + id="linearGradient4233"> + <stop + style="stop-color:#d7d7d7;stop-opacity:1;" + offset="0" + id="stop4235" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1" + offset="1" + id="stop4237" /> + </linearGradient> + <linearGradient + id="linearGradient4227"> + <stop + style="stop-color:#d7d7d7;stop-opacity:1;" + offset="0" + id="stop4229" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1" + offset="1" + id="stop4231" /> + </linearGradient> + <linearGradient + id="linearGradient2833"> + <stop + style="stop-color:#959595;stop-opacity:1;" + offset="0" + id="stop2835" /> + <stop + style="stop-color:white;stop-opacity:0.85576922;" + offset="1" + id="stop2837" /> + </linearGradient> + <linearGradient + id="linearGradient3942"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop3944" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1" + offset="1" + id="stop3946" /> + </linearGradient> + <linearGradient + id="linearGradient4241" + inkscape:collect="always"> + <stop + id="stop4243" + offset="0" + style="stop-color:black;stop-opacity:1;" /> + <stop + id="stop4245" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <inkscape:perspective + id="perspective8783" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + id="linearGradient5225"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop5227" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop5229" /> + </linearGradient> + <linearGradient + id="linearGradient4196"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop4198" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop4200" /> + </linearGradient> + <linearGradient + id="linearGradient5137"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop5139" /> + <stop + style="stop-color:#e6e6e3;stop-opacity:1;" + offset="1" + id="stop5141" /> + </linearGradient> + <linearGradient + id="linearGradient11400"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop11402" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop11404" /> + </linearGradient> + <linearGradient + id="linearGradient8804"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop8806" /> + <stop + style="stop-color:#e6e6e3;stop-opacity:1;" + offset="1" + id="stop8808" /> + </linearGradient> + <linearGradient + id="linearGradient3116"> + <stop + style="stop-color:#729fcf;stop-opacity:1" + offset="0" + id="stop3118" /> + <stop + style="stop-color:#3465a4;stop-opacity:1" + offset="1" + id="stop3120" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6240"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop6242" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop6244" /> + </linearGradient> + <linearGradient + id="linearGradient2307" + inkscape:collect="always"> + <stop + id="stop2309" + offset="0" + style="stop-color:#5a7aa4;stop-opacity:1;" /> + <stop + id="stop2311" + offset="1" + style="stop-color:#5a7aa4;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient5060-3" + inkscape:collect="always"> + <stop + id="stop5062-7" + offset="0" + style="stop-color:black;stop-opacity:1;" /> + <stop + id="stop5064-3" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient3899"> + <stop + style="stop-color:#eeeeec" + offset="0" + id="stop3901" /> + <stop + style="stop-color:#d3d7cf" + offset="1" + id="stop3903" /> + </linearGradient> + <linearGradient + id="linearGradient3907"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3909" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3911" /> + </linearGradient> + <linearGradient + id="linearGradient8842"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8844" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8846" /> + </linearGradient> + <linearGradient + id="linearGradient8849"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8851" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8853" /> + </linearGradient> + <linearGradient + id="linearGradient8856"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8858" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8860" /> + </linearGradient> + <linearGradient + id="linearGradient8863"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8865" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8867" /> + </linearGradient> + <linearGradient + id="linearGradient8870"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8872" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8874" /> + </linearGradient> + <linearGradient + id="linearGradient8877"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8879" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8881" /> + </linearGradient> + <linearGradient + id="linearGradient8884"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8886" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8888" /> + </linearGradient> + <linearGradient + id="linearGradient8891"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8893" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8895" /> + </linearGradient> + <linearGradient + id="linearGradient8898"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8900" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8902" /> + </linearGradient> + <linearGradient + id="linearGradient8905"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8907" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8909" /> + </linearGradient> + <linearGradient + id="linearGradient8912"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8914" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8916" /> + </linearGradient> + <linearGradient + id="linearGradient8919"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8921" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8923" /> + </linearGradient> + <linearGradient + id="linearGradient8926"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8928" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8930" /> + </linearGradient> + <linearGradient + id="linearGradient8933"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8935" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8937" /> + </linearGradient> + <linearGradient + id="linearGradient8940"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8942" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8944" /> + </linearGradient> + <linearGradient + id="linearGradient8947"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8949" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8951" /> + </linearGradient> + <linearGradient + id="linearGradient8954"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8956" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8958" /> + </linearGradient> + <linearGradient + id="linearGradient8961"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8963" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8965" /> + </linearGradient> + <linearGradient + id="linearGradient8968"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8970" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8972" /> + </linearGradient> + <linearGradient + id="linearGradient8975"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8977" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8979" /> + </linearGradient> + <linearGradient + id="linearGradient8982"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8984" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8986" /> + </linearGradient> + <linearGradient + id="linearGradient8989"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8991" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop8993" /> + </linearGradient> + <linearGradient + id="linearGradient8996"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop8998" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9000" /> + </linearGradient> + <linearGradient + id="linearGradient9003"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9005" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9007" /> + </linearGradient> + <linearGradient + id="linearGradient9010"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9012" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9014" /> + </linearGradient> + <linearGradient + id="linearGradient9017"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9019" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9021" /> + </linearGradient> + <linearGradient + id="linearGradient9024"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9026" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9028" /> + </linearGradient> + <linearGradient + id="linearGradient9031"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9033" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9035" /> + </linearGradient> + <linearGradient + id="linearGradient9038"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9040" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9042" /> + </linearGradient> + <linearGradient + id="linearGradient9045"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9047" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9049" /> + </linearGradient> + <linearGradient + id="linearGradient9052"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9054" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9056" /> + </linearGradient> + <linearGradient + id="linearGradient9059"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9061" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9063" /> + </linearGradient> + <linearGradient + id="linearGradient9066"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9068" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9070" /> + </linearGradient> + <linearGradient + id="linearGradient9073"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9075" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9077" /> + </linearGradient> + <linearGradient + id="linearGradient9080"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9082" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9084" /> + </linearGradient> + <linearGradient + id="linearGradient9087"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9089" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9091" /> + </linearGradient> + <linearGradient + id="linearGradient9094"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9096" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9098" /> + </linearGradient> + <linearGradient + id="linearGradient9101"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9103" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9105" /> + </linearGradient> + <linearGradient + id="linearGradient9108"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9110" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9112" /> + </linearGradient> + <linearGradient + id="linearGradient9115"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9117" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9119" /> + </linearGradient> + <linearGradient + id="linearGradient9122"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9124" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9126" /> + </linearGradient> + <linearGradient + id="linearGradient9129"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9131" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9133" /> + </linearGradient> + <linearGradient + id="linearGradient9136"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9138" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9140" /> + </linearGradient> + <linearGradient + id="linearGradient9150"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop9152" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop9154" /> + </linearGradient> + <linearGradient + id="linearGradient9157"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop9159" /> + <stop + style="stop-color:#e6e6e3;stop-opacity:1;" + offset="1" + id="stop9161" /> + </linearGradient> + <linearGradient + id="linearGradient9164"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop9166" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop9168" /> + </linearGradient> + <linearGradient + id="linearGradient9171"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop9173" /> + <stop + style="stop-color:#e6e6e3;stop-opacity:1;" + offset="1" + id="stop9175" /> + </linearGradient> + <linearGradient + id="linearGradient9178"> + <stop + style="stop-color:#729fcf;stop-opacity:1" + offset="0" + id="stop9180" /> + <stop + style="stop-color:#3465a4;stop-opacity:1" + offset="1" + id="stop9182" /> + </linearGradient> + <linearGradient + id="linearGradient9220"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9222" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9224" /> + </linearGradient> + <linearGradient + id="linearGradient9227"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9229" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9231" /> + </linearGradient> + <linearGradient + id="linearGradient9234"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9236" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9238" /> + </linearGradient> + <linearGradient + id="linearGradient9241"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9243" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9245" /> + </linearGradient> + <linearGradient + id="linearGradient9248"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9250" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9252" /> + </linearGradient> + <linearGradient + id="linearGradient9255"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9257" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9259" /> + </linearGradient> + <linearGradient + id="linearGradient9262"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9264" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9266" /> + </linearGradient> + <linearGradient + id="linearGradient9269"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9271" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9273" /> + </linearGradient> + <linearGradient + id="linearGradient9276"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9278" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9280" /> + </linearGradient> + <linearGradient + id="linearGradient9283"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9285" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9287" /> + </linearGradient> + <linearGradient + id="linearGradient9290"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9292" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9294" /> + </linearGradient> + <linearGradient + id="linearGradient9297"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9299" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9301" /> + </linearGradient> + <linearGradient + id="linearGradient9304"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9306" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9308" /> + </linearGradient> + <linearGradient + id="linearGradient9311"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9313" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9315" /> + </linearGradient> + <linearGradient + id="linearGradient9318"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9320" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9322" /> + </linearGradient> + <linearGradient + id="linearGradient9325"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9327" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9329" /> + </linearGradient> + <linearGradient + id="linearGradient9332"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9334" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9336" /> + </linearGradient> + <linearGradient + id="linearGradient9339"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9341" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9343" /> + </linearGradient> + <linearGradient + id="linearGradient9346"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9348" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9350" /> + </linearGradient> + <linearGradient + id="linearGradient9353"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9355" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9357" /> + </linearGradient> + <linearGradient + id="linearGradient9360"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9362" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9364" /> + </linearGradient> + <linearGradient + id="linearGradient9367"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9369" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9371" /> + </linearGradient> + <linearGradient + id="linearGradient9374"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9376" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9378" /> + </linearGradient> + <linearGradient + id="linearGradient9381"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9383" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9385" /> + </linearGradient> + <linearGradient + id="linearGradient9388"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9390" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9392" /> + </linearGradient> + <linearGradient + id="linearGradient9395"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9397" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9399" /> + </linearGradient> + <linearGradient + id="linearGradient9402"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9404" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9406" /> + </linearGradient> + <linearGradient + id="linearGradient9409"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9411" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9413" /> + </linearGradient> + <linearGradient + id="linearGradient9416"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9418" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9420" /> + </linearGradient> + <linearGradient + id="linearGradient9423"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9425" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9427" /> + </linearGradient> + <linearGradient + id="linearGradient9430"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9432" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9434" /> + </linearGradient> + <linearGradient + id="linearGradient9437"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9439" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9441" /> + </linearGradient> + <linearGradient + id="linearGradient9444"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9446" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9448" /> + </linearGradient> + <linearGradient + id="linearGradient9451"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9453" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9455" /> + </linearGradient> + <linearGradient + id="linearGradient9458"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9460" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9462" /> + </linearGradient> + <linearGradient + id="linearGradient9465"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9467" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9469" /> + </linearGradient> + <linearGradient + id="linearGradient9472"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9474" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9476" /> + </linearGradient> + <linearGradient + id="linearGradient9479"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9481" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9483" /> + </linearGradient> + <linearGradient + id="linearGradient9486"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9488" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9490" /> + </linearGradient> + <linearGradient + id="linearGradient9493"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9495" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9497" /> + </linearGradient> + <linearGradient + id="linearGradient9500"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9502" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9504" /> + </linearGradient> + <linearGradient + id="linearGradient9507"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9509" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9511" /> + </linearGradient> + <linearGradient + id="linearGradient9514"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9516" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9518" /> + </linearGradient> + <linearGradient + id="linearGradient9521"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop9523" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop9525" /> + </linearGradient> + <inkscape:perspective + id="perspective10987" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective13868" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <filter + id="filter3795" + height="1.5641397" + y="-0.28206986" + width="1.1479712" + x="-0.073985539" + inkscape:collect="always" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3797" + stdDeviation="0.89736552" + inkscape:collect="always" /> + </filter> + <linearGradient + id="linearGradient3726"> + <stop + id="stop3728" + offset="0" + style="stop-color:#555753;stop-opacity:1" /> + <stop + id="stop3730" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient4768" + inkscape:collect="always"> + <stop + id="stop4770" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop4772" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3683"> + <stop + id="stop3685" + offset="0" + style="stop-color:#888a85;stop-opacity:1;" /> + <stop + id="stop3687" + offset="1" + style="stop-color:#888a85;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3691" + inkscape:collect="always"> + <stop + id="stop3693" + offset="0" + style="stop-color:#555753;stop-opacity:1;" /> + <stop + id="stop3695" + offset="1" + style="stop-color:#555753;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient4750"> + <stop + id="stop4752" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop4758" + offset="0.37931034" + style="stop-color:#fefefe;stop-opacity:1.0000000;" /> + <stop + id="stop4754" + offset="1.0000000" + style="stop-color:#1d1d1d;stop-opacity:1.0000000;" /> + </linearGradient> + <linearGradient + id="linearGradient4132" + inkscape:collect="always"> + <stop + id="stop7788" + offset="0" + style="stop-color:#eeeeec;stop-opacity:1;" /> + <stop + id="stop7790" + offset="1" + style="stop-color:#eeeeec;stop-opacity:0;" /> + </linearGradient> + <inkscape:perspective + id="perspective14483" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <filter + id="filter3795-7" + height="1.5641397" + y="-0.28206986" + width="1.1479712" + x="-0.073985539" + inkscape:collect="always" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3797-3" + stdDeviation="0.89736552" + inkscape:collect="always" /> + </filter> + <linearGradient + id="linearGradient3726-7"> + <stop + id="stop3728-2" + offset="0" + style="stop-color:#555753;stop-opacity:1" /> + <stop + id="stop3730-1" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient4768-3" + inkscape:collect="always"> + <stop + id="stop4770-9" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop4772-5" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3683-2"> + <stop + id="stop3685-4" + offset="0" + style="stop-color:#888a85;stop-opacity:1;" /> + <stop + id="stop3687-8" + offset="1" + style="stop-color:#888a85;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3691-5" + inkscape:collect="always"> + <stop + id="stop3693-9" + offset="0" + style="stop-color:#555753;stop-opacity:1;" /> + <stop + id="stop3695-2" + offset="1" + style="stop-color:#555753;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient4750-6"> + <stop + id="stop4752-3" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop4758-1" + offset="0.37931034" + style="stop-color:#fefefe;stop-opacity:1.0000000;" /> + <stop + id="stop4754-7" + offset="1.0000000" + style="stop-color:#1d1d1d;stop-opacity:1.0000000;" /> + </linearGradient> + <linearGradient + id="linearGradient4132-5" + inkscape:collect="always"> + <stop + id="stop7788-2" + offset="0" + style="stop-color:#eeeeec;stop-opacity:1;" /> + <stop + id="stop7790-8" + offset="1" + style="stop-color:#eeeeec;stop-opacity:0;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5225" + id="radialGradient15087" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.24763,0,32.1168)" + cx="23.9375" + cy="42.6875" + fx="23.9375" + fy="42.6875" + r="23.75956" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4196" + id="linearGradient15089" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.654255,0,0,0.654672,-0.481383,0.690637)" + x1="37.484837" + y1="38.267769" + x2="37.295498" + y2="33.637787" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5137" + id="linearGradient15091" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.992781,0,-2.718035)" + x1="31.743324" + y1="37.842293" + x2="31.86105" + y2="43.82579" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11400" + id="linearGradient15093" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.004187,0,0,1,-0.12454,-3.011765)" + x1="23.154902" + y1="34.572548" + x2="23.529411" + y2="40.219608" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5137" + id="linearGradient15095" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.648248,0,0,0.644253,0.433189,-0.740991)" + x1="17.247635" + y1="6.3760414" + x2="39.904388" + y2="38.876041" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3116" + id="radialGradient15097" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.836315,0,0,0.514216,-4.024721,-0.03259613)" + cx="24.006104" + cy="32.997028" + fx="24.006104" + fy="32.997028" + r="19.00016" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6240" + id="linearGradient15099" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.664512,0,0,0.651253,0.09569506,-1.210023)" + x1="20.156862" + y1="5.0996137" + x2="20.156862" + y2="26.039215" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2307" + id="linearGradient15101" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(1.673466,0.597562)" + x1="-931.75031" + y1="148.07117" + x2="-131.23589" + y2="148.07117" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060-3" + id="radialGradient15103" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060-3" + id="radialGradient15105" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3899" + id="linearGradient15107" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.647995,0,0,0.707655,0.734249,-1.447571)" + x1="29.5" + y1="46.029419" + x2="29.125" + y2="37.9375" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15109" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15111" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15113" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15115" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15117" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15119" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15121" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15123" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15125" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15127" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15129" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15131" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15133" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15135" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15137" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15139" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15141" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15143" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15145" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15147" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15149" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15151" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15153" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15155" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15157" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15159" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15161" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15163" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15165" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15167" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15169" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15171" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15173" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15175" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15177" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15179" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15181" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15183" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15185" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15187" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15189" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15191" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15193" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient15195" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <inkscape:perspective + id="perspective15824" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective15882" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective16269" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <filter + id="filter3795-78" + height="1.5641397" + y="-0.28206986" + width="1.1479712" + x="-0.073985539" + inkscape:collect="always" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur3797-7" + stdDeviation="0.89736552" + inkscape:collect="always" /> + </filter> + <linearGradient + id="linearGradient3726-72"> + <stop + id="stop3728-24" + offset="0" + style="stop-color:#555753;stop-opacity:1" /> + <stop + id="stop3730-9" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient4768-1" + inkscape:collect="always"> + <stop + id="stop4770-8" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop4772-2" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3683-8"> + <stop + id="stop3685-5" + offset="0" + style="stop-color:#888a85;stop-opacity:1;" /> + <stop + id="stop3687-9" + offset="1" + style="stop-color:#888a85;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient3691-6" + inkscape:collect="always"> + <stop + id="stop3693-94" + offset="0" + style="stop-color:#555753;stop-opacity:1;" /> + <stop + id="stop3695-8" + offset="1" + style="stop-color:#555753;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient4750-8"> + <stop + id="stop4752-2" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop4758-5" + offset="0.37931034" + style="stop-color:#fefefe;stop-opacity:1.0000000;" /> + <stop + id="stop4754-0" + offset="1.0000000" + style="stop-color:#1d1d1d;stop-opacity:1.0000000;" /> + </linearGradient> + <linearGradient + id="linearGradient4132-7" + inkscape:collect="always"> + <stop + id="stop7788-21" + offset="0" + style="stop-color:#eeeeec;stop-opacity:1;" /> + <stop + id="stop7790-1" + offset="1" + style="stop-color:#eeeeec;stop-opacity:0;" /> + </linearGradient> + <inkscape:perspective + id="perspective16468" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective16523" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective16551" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5048" + id="linearGradient17158" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" + x1="302.85715" + y1="366.64789" + x2="302.85715" + y2="609.50507" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient17160" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient17162" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3859" + id="linearGradient17164" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(77.70341,297.87469)" + x1="73.05397" + y1="6.5458651" + x2="53.61911" + y2="6.5458651" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4175" + id="linearGradient17166" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(77.70341,297.87469)" + x1="60.426777" + y1="18.520107" + x2="60.426777" + y2="72.082878" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4233" + id="linearGradient17168" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.882353,0,0,1,120.4093,299.87469)" + x1="24.92893" + y1="12.001067" + x2="24.92893" + y2="10.868282" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4227" + id="linearGradient17170" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.882353,0,0,1,120.4093,299.87469)" + x1="24.960155" + y1="19.00001" + x2="24.92893" + y2="17.762573" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2833" + id="linearGradient17172" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.999998,0,0,1.000003,123.70344,291.87456)" + x1="10.249995" + y1="32.593761" + x2="12.500004" + y2="36.374992" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3942" + id="linearGradient17174" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(77.70341,297.87469)" + x1="53.5625" + y1="4.4916701" + x2="53.5625" + y2="37.256325" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient17176" + gradientUnits="userSpaceOnUse" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient17178" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(2,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient17180" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(4,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient17182" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(6,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient17184" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(8,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient17186" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(10,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient17188" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(420.89198,640.51988)" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4768" + id="linearGradient17190" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(428.89198,641.51988)" + x1="22.6607" + y1="45" + x2="21.9121" + y2="8.0439377" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3683" + id="linearGradient17192" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9523808,0,0,0.9302325,-475.7015,645.47337)" + x1="15.675483" + y1="17.250002" + x2="21.829702" + y2="17.250002" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691" + id="linearGradient17194" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.4483318,426.89198,650.31239)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691" + id="linearGradient17196" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2131501,426.89198,656.7818)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691" + id="linearGradient17198" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.5000011,426.89198,657.82749)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4750" + id="linearGradient17200" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.3986748,0,0,0.4168969,420.89198,-641.51988)" + x1="11.673112" + y1="-56.420216" + x2="14.174493" + y2="-56.420216" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4132" + id="linearGradient17202" + gradientUnits="userSpaceOnUse" + x1="3.6666656" + y1="13.666667" + x2="10.303582" + y2="20.303581" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726-7" + id="linearGradient17204" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(420.89198,640.51988)" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4768-3" + id="linearGradient17206" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(428.89198,641.51988)" + x1="22.6607" + y1="45" + x2="21.9121" + y2="8.0439377" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3683-2" + id="linearGradient17208" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9523808,0,0,0.9302325,-475.7015,645.47337)" + x1="15.675483" + y1="17.250002" + x2="21.829702" + y2="17.250002" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691-5" + id="linearGradient17210" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.4483318,426.89198,650.31239)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691-5" + id="linearGradient17212" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2131501,426.89198,656.7818)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691-5" + id="linearGradient17214" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.5000011,426.89198,657.82749)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4750-6" + id="linearGradient17216" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.3986748,0,0,0.4168969,420.89198,-641.51988)" + x1="11.673112" + y1="-56.420216" + x2="14.174493" + y2="-56.420216" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4132-5" + id="linearGradient17218" + gradientUnits="userSpaceOnUse" + x1="3.6666656" + y1="13.666667" + x2="10.303582" + y2="20.303581" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726-72" + id="linearGradient17220" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(486.63858,606.43273)" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4768-1" + id="linearGradient17222" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(494.63858,607.43273)" + x1="22.6607" + y1="45" + x2="21.9121" + y2="8.0439377" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3683-8" + id="linearGradient17224" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9523808,0,0,0.9302325,-541.4481,611.38622)" + x1="15.675483" + y1="17.250002" + x2="21.829702" + y2="17.250002" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691-6" + id="linearGradient17226" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.4483318,492.63858,616.22524)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691-6" + id="linearGradient17228" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2131501,492.63858,622.69465)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3691-6" + id="linearGradient17230" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.5000011,492.63858,623.74034)" + x1="25" + y1="12" + x2="25" + y2="9" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4750-8" + id="linearGradient17232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.3986748,0,0,0.4168969,486.63858,-607.43273)" + x1="8.7548351" + y1="-56.420216" + x2="11.256216" + y2="-56.420216" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4132-7" + id="linearGradient17234" + gradientUnits="userSpaceOnUse" + x1="3.6666656" + y1="13.666667" + x2="10.303582" + y2="20.303581" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5225" + id="radialGradient17236" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.24763,0,32.1168)" + cx="23.9375" + cy="42.6875" + fx="23.9375" + fy="42.6875" + r="23.75956" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4196" + id="linearGradient17238" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.654255,0,0,0.654672,-0.481383,0.690637)" + x1="37.484837" + y1="38.267769" + x2="37.295498" + y2="33.637787" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5137" + id="linearGradient17240" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.992781,0,-2.718035)" + x1="31.743324" + y1="37.842293" + x2="31.86105" + y2="43.82579" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11400" + id="linearGradient17242" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.004187,0,0,1,-0.12454,-3.011765)" + x1="23.154902" + y1="34.572548" + x2="23.529411" + y2="40.219608" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5137" + id="linearGradient17244" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.648248,0,0,0.644253,0.433189,-0.740991)" + x1="17.247635" + y1="6.3760414" + x2="39.904388" + y2="38.876041" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3116" + id="radialGradient17246" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.836315,0,0,0.514216,-4.024721,-0.03259613)" + cx="24.006104" + cy="32.997028" + fx="24.006104" + fy="32.997028" + r="19.00016" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6240" + id="linearGradient17248" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.664512,0,0,0.651253,0.09569506,-1.210023)" + x1="20.156862" + y1="5.0996137" + x2="20.156862" + y2="26.039215" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2307" + id="linearGradient17250" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(1.673466,0.597562)" + x1="-931.75031" + y1="148.07117" + x2="-131.23589" + y2="148.07117" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060-3" + id="radialGradient17252" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060-3" + id="radialGradient17254" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3899" + id="linearGradient17256" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.647995,0,0,0.707655,0.734249,-1.447571)" + x1="29.5" + y1="46.029419" + x2="29.125" + y2="37.9375" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17258" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17262" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17264" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17266" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17268" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17270" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17272" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17274" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17276" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17278" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17280" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17282" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17284" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17286" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17288" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17290" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17292" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17294" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17296" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17298" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17300" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17302" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17304" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17306" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17308" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17310" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17312" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17314" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17316" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17318" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17320" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17322" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17324" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17326" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17328" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17330" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17332" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17334" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17336" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17338" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17340" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17342" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17344" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5225" + id="radialGradient17346" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.24763,0,32.1168)" + cx="23.9375" + cy="42.6875" + fx="23.9375" + fy="42.6875" + r="23.75956" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4196" + id="linearGradient17348" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.654255,0,0,0.654672,-0.481383,0.690637)" + x1="37.484837" + y1="38.267769" + x2="37.295498" + y2="33.637787" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5137" + id="linearGradient17350" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.992781,0,-2.718035)" + x1="31.743324" + y1="37.842293" + x2="31.86105" + y2="43.82579" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11400" + id="linearGradient17352" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.004187,0,0,1,-0.12454,-3.011765)" + x1="23.154902" + y1="34.572548" + x2="23.529411" + y2="40.219608" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5137" + id="linearGradient17354" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.648248,0,0,0.644253,0.433189,-0.740991)" + x1="17.247635" + y1="6.3760414" + x2="39.904388" + y2="38.876041" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3116" + id="radialGradient17356" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.836315,0,0,0.514216,-4.024721,-0.03259613)" + cx="24.006104" + cy="32.997028" + fx="24.006104" + fy="32.997028" + r="19.00016" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6240" + id="linearGradient17358" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.664512,0,0,0.651253,0.09569506,-1.210023)" + x1="20.156862" + y1="5.0996137" + x2="20.156862" + y2="26.039215" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2307" + id="linearGradient17360" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(1.673466,0.597562)" + x1="-931.75031" + y1="148.07117" + x2="-131.23589" + y2="148.07117" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060-3" + id="radialGradient17362" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060-3" + id="radialGradient17364" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3899" + id="linearGradient17366" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.647995,0,0,0.707655,0.734249,-1.447571)" + x1="29.5" + y1="46.029419" + x2="29.125" + y2="37.9375" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17368" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17370" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17372" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17374" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17376" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17378" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17380" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17382" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17384" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17386" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17388" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17390" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17392" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17394" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17396" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17398" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17400" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17402" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17404" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17406" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17408" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17410" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17412" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17414" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17416" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17418" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17420" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17422" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17424" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17426" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17428" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17430" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17432" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17434" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17436" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17438" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17440" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17442" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17444" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17446" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17448" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17450" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17452" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient17454" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="1" + inkscape:pageshadow="2" + inkscape:zoom="0.70710678" + inkscape:cx="545.18781" + inkscape:cy="437.62869" + inkscape:document-units="in" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:connector-spacing="3" + inkscape:window-width="1280" + inkscape:window-height="750" + inkscape:window-x="0" + inkscape:window-y="25" + inkscape:window-maximized="1" + showguides="false" + inkscape:guide-bbox="true" + objecttolerance="1" + guidetolerance="1" + inkscape:snap-from-guide="false"> + <sodipodi:guide + orientation="1,0" + position="90.509668,545.88643" + id="guide16783" /> + <sodipodi:guide + orientation="0,1" + position="195.16147,674.57987" + id="guide16785" /> + <sodipodi:guide + orientation="1,0" + position="899.43983,613.76869" + id="guide16787" /> + <sodipodi:guide + orientation="0,1" + position="526.08745,90.509668" + id="guide16789" /> + <sodipodi:guide + orientation="0,1" + position="356.38182,656.19509" + id="guide16871" /> + <sodipodi:guide + orientation="1,0" + position="69.296465,432.74935" + id="guide16873" /> + </sodipodi:namedview> + <metadata + id="metadata8326"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-287.36218)"> + <g + inkscape:label="Layer 1" + id="g3168" + transform="matrix(1.4798703,0,0,1.4798703,565.6746,468.6102)" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 295.37489,1054.9849 -7.9667,0.057" + id="path15983" + inkscape:connector-type="polyline" /> + <g + id="g7451"> + <g + transform="matrix(1.7792758,0,0,1.7792758,60.438369,-71.528631)" + id="g2713"> + <g + id="g3952" + transform="matrix(0.01477517,0,0,0.02195012,153.84497,337.6825)" + style="opacity:0.6;display:inline"> + <rect + y="-150.69685" + x="-1559.2523" + height="478.35718" + width="1339.6335" + id="rect3954" + style="opacity:0.40206185;color:#000000;fill:url(#linearGradient17158);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="cccc" + id="path3956" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient17160);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient17162);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + id="path3958" + sodipodi:nodetypes="cccc" /> + </g> + <path + style="color:#000000;fill:url(#linearGradient17164);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 135.82841,301.37469 c -0.74406,0 -1.39865,0.3133 -1.875,0.8125 l -4.21875,5.25 c -0.32763,0.58351 -0.53125,1.24938 -0.53125,1.96875 l 0,28.9375 c 0,2.23331 1.79793,4.03125 4.03125,4.03125 l 14.9375,0 c 2.23332,0 4.03125,-1.79794 4.03125,-4.03125 l 0,-28.9375 c 0,-0.71937 -0.20362,-1.38524 -0.53125,-1.96875 l -4.21875,-5.25 c -0.47635,-0.4992 -1.13094,-0.8125 -1.875,-0.8125 l -9.75,0 z" + id="path2647" + sodipodi:nodetypes="ccccccccccccc" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-1" + inkscape:original="M 58.125 3.5 C 57.380943 3.5 56.72635 3.8133048 56.25 4.3125 L 52.03125 9.5625 C 51.703624 10.146009 51.5 10.811876 51.5 11.53125 L 51.5 37.46875 C 51.5 39.702062 53.297934 41.499999 55.53125 41.5 L 70.46875 41.5 C 72.70207 41.499999 74.5 39.702062 74.5 37.46875 L 74.5 11.53125 C 74.5 10.811876 74.29638 10.146009 73.96875 9.5625 L 69.75 4.3125 C 69.27365 3.8133048 68.61906 3.5 67.875 3.5 L 58.125 3.5 z " + style="opacity:0.7;color:#000000;fill:none;stroke:#f9f9f9;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + id="path4329" + d="M 58.125,4.5 C 57.67221,4.5 57.301304,4.6939871 57,5 l -0.03125,0 -4.0625,5.0625 C 52.651026,10.51706 52.5,11.000581 52.5,11.53125 l 0,25.9375 c 0,1.69661 1.334636,3.031249 3.03125,3.03125 l 14.9375,0 C 72.165369,40.499999 73.5,39.165361 73.5,37.46875 l 0,-25.9375 c 0,-0.530673 -0.151026,-1.014195 -0.40625,-1.46875 L 69.03125,5 C 69.024311,4.9927285 69.00702,5.0071301 69,5 68.698695,4.6939857 68.327794,4.5 67.875,4.5 l -9.75,0 z" + transform="translate(77.70341,297.87469)" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path2650" + d="m 133.2319,306.37469 14.94299,0 c 1.67779,0 3.02849,1.35071 3.02849,3.0285 l 0,28.94304 c 0,1.67778 -1.3507,3.02849 -3.02849,3.02849 l -14.94299,0 c -1.67779,0 -3.0285,-1.35071 -3.0285,-3.02849 l 0,-28.94304 c 0,-1.67779 1.35071,-3.0285 3.0285,-3.0285 z" + style="color:#000000;fill:url(#linearGradient17166);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + style="color:#000000;fill:url(#linearGradient17168);fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect4183" + width="14.999999" + height="5.0000067" + x="133.20341" + y="309.37469" + rx="0" + ry="0" /> + <rect + style="fill:url(#linearGradient17170);fill-opacity:1;stroke:#babdb6;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4187" + width="14.999999" + height="5.0000067" + x="133.20341" + y="316.37469" + rx="0" + ry="0" /> + <path + sodipodi:type="arc" + style="fill:#d0d0ca;fill-opacity:1;stroke:#555753;stroke-width:1.04761803;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="path4191" + sodipodi:cx="17" + sodipodi:cy="26" + sodipodi:rx="1.5714285" + sodipodi:ry="1.5714285" + d="m 18.571429,26 c 0,0.867876 -0.703553,1.571429 -1.571429,1.571429 -0.867876,0 -1.571429,-0.703553 -1.571429,-1.571429 0,-0.867876 0.703553,-1.571429 1.571429,-1.571429 0.867876,0 1.571429,0.703553 1.571429,1.571429 z" + transform="matrix(0.954546,0,0,0.954547,118.47613,302.05647)" /> + <rect + style="fill:none;stroke:url(#linearGradient17172);stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="rect4193" + width="5.000001" + height="4.9999981" + x="132.20341" + y="324.37469" + rx="2.4999905" + ry="2.4999907" /> + <rect + style="fill:#eeeeec;fill-opacity:1;stroke:#babdb6;stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4195" + width="10.000003" + height="3.0000033" + x="139.20341" + y="325.37469" + rx="0" + ry="0" /> + <path + sodipodi:type="arc" + style="fill:#f7f7f7;fill-opacity:1;stroke:none" + id="path4197" + sodipodi:cx="16.639107" + sodipodi:cy="25.61565" + sodipodi:rx="0.53033012" + sodipodi:ry="0.46403882" + d="m 17.169437,25.61565 c 0,0.256282 -0.237437,0.464039 -0.53033,0.464039 -0.292893,0 -0.53033,-0.207757 -0.53033,-0.464039 0,-0.256281 0.237437,-0.464039 0.53033,-0.464039 0.292893,0 0.53033,0.207758 0.53033,0.464039 z" + transform="matrix(0.942803,0,0,1.077485,118.51601,298.77421)" /> + <path + sodipodi:type="arc" + style="fill:#f7f7f7;fill-opacity:1;stroke:none" + id="path4213" + sodipodi:cx="16.639107" + sodipodi:cy="25.61565" + sodipodi:rx="0.53033012" + sodipodi:ry="0.46403882" + d="m 17.169437,25.61565 c 0,0.256282 -0.237437,0.464039 -0.53033,0.464039 -0.292893,0 -0.53033,-0.207757 -0.53033,-0.464039 0,-0.256281 0.237437,-0.464039 0.53033,-0.464039 0.292893,0 0.53033,0.207758 0.53033,0.464039 z" + transform="matrix(0.942803,0,0,1.008364,118.51601,300.54479)" /> + <rect + style="opacity:0.8;color:#000000;fill:none;stroke:url(#linearGradient17174);stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect2659" + width="18.999966" + height="33" + x="131.2034" + y="307.37469" + rx="2.0110888" + ry="2.0110888" /> + <g + id="g4307" + style="opacity:0.19699246" + transform="translate(77.70341,300.87469)"> + <rect + y="31" + x="57" + height="8.000001" + width="1.0130863" + id="rect4239" + style="color:#000000;fill:url(#linearGradient17176);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="59" + height="8.000001" + width="1.0130863" + id="rect4249" + style="color:#000000;fill:url(#linearGradient17178);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="61" + height="8.000001" + width="1.0130863" + id="rect4253" + style="color:#000000;fill:url(#linearGradient17180);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="63" + height="8.000001" + width="1.0130863" + id="rect4257" + style="color:#000000;fill:url(#linearGradient17182);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="65" + height="8.000001" + width="1.0130863" + id="rect4261" + style="color:#000000;fill:url(#linearGradient17184);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="67" + height="8.000001" + width="1.0130863" + id="rect4265" + style="color:#000000;fill:url(#linearGradient17186);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + </g> + </g> + <text + sodipodi:linespacing="125%" + id="text8699-5" + y="716.85913" + x="66.293785" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + id="tspan8703-7" + y="716.85913" + x="66.293785" + sodipodi:role="line">Users</tspan></text> + <g + transform="matrix(1.4671338,0,0,1.4671338,25.10612,-331.6839)" + id="g10163"> + <path + sodipodi:type="arc" + style="opacity:0.4;fill:#2e3436;fill-opacity:0.75;fill-rule:evenodd;stroke:none;filter:url(#filter3795)" + id="path3789" + sodipodi:cx="24.456697" + sodipodi:cy="42.989361" + sodipodi:rx="14.554718" + sodipodi:ry="3.8176308" + d="m 39.011415,42.989361 c 0,2.108419 -6.516369,3.817631 -14.554718,3.817631 -8.038348,0 -14.5547176,-1.709212 -14.5547176,-3.817631 0,-2.108419 6.5163696,-3.817631 14.5547176,-3.817631 8.038349,0 14.554718,1.709212 14.554718,3.817631 z" + transform="matrix(1.5115373,0,0,1.0477704,407.92477,639.4769)" /> + <path + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 431.0204,642.01988 c -0.74406,0 -1.39866,0.31426 -1.875,0.81498 l -4.21875,5.266 c -0.32763,0.58528 -0.53125,1.25318 -0.53125,1.97475 l 0,32.91479 c 0,2.24012 1.79793,4.04354 4.03125,4.04354 l 32.93408,0 c 2.23332,0 4.03125,-1.80342 4.03125,-4.04354 l 0,-32.91479 c 0,-0.72157 -0.20362,-1.38947 -0.53125,-1.97475 l -4.21875,-5.266 c -0.47635,-0.50072 -1.13094,-0.81498 -1.875,-0.81498 l -27.74658,0 z" + id="path7931" + sodipodi:nodetypes="ccccccccccccc" /> + <path + style="opacity:0.7;color:#000000;fill:none;stroke:#f9f9f9;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 431.12517,643.01988 c -0.45697,0 -0.8313,0.19399 -1.13539,0.5 l -0.0315,0 -4.10002,5.0625 c -0.25758,0.45456 -0.41,0.93808 -0.41,1.46875 l 0,25.9375 c 0,1.69661 1.34696,3.03125 3.05925,3.03125 l 32.82526,0 c 1.71229,0 3.05925,-1.33464 3.05925,-3.03125 l 0,-25.9375 c 0,-0.53067 -0.15242,-1.0142 -0.41,-1.46875 l -4.10002,-5.0625 c -0.007,-0.007 -0.0245,0.007 -0.0315,0 -0.30409,-0.30602 -0.67842,-0.5 -1.13539,-0.5 l -27.58986,0 z" + id="path7933" + sodipodi:nodetypes="ccccccccccccscc" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path7935" + d="m 428.33952,647.01988 33.02394,0 c 1.67779,0 3.02849,1.35083 3.02849,3.02876 l 0,32.94248 c 0,1.67793 -1.3507,3.02876 -3.02849,3.02876 l -33.02394,0 c -1.67778,0 -3.02849,-1.35083 -3.02849,-3.02876 l 0,-32.94248 c 0,-1.67793 1.35071,-3.02876 3.02849,-3.02876 z" + style="color:#000000;fill:url(#linearGradient17188);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient17190);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + rx="1.4" + ry="1.4" + y="651.0199" + x="441.39197" + height="21" + width="21.000002" + id="rect3593" + style="color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:#6d6f6a;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.69620254;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/bellaich/rect3593.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <rect + rx="0.91154063" + style="opacity:0.70901639;color:#000000;fill:url(#linearGradient17192);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3673" + width="20" + height="20" + x="-461.89197" + y="651.5199" + ry="0.91154063" + transform="scale(-1,1)" /> + <rect + style="color:#000000;fill:none;stroke:url(#linearGradient17194);stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3629" + width="19" + height="0.10333849" + x="442.39197" + y="654.9682" + ry="0" + rx="0" /> + <rect + rx="0.46153843" + ry="1" + y="653.5199" + x="445.89197" + height="2" + width="12" + id="rect3641" + style="color:#000000;fill:#5f615d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="color:#000000;fill:#5f615d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3645" + width="12" + height="2" + x="445.89197" + y="657.5199" + ry="1" + rx="0.46153843" /> + <rect + rx="0" + ry="0" + y="658.9953" + x="442.39197" + height="0.049130145" + width="19" + id="rect3703" + style="color:#000000;fill:none;stroke:url(#linearGradient17196);stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="color:#000000;fill:none;stroke:url(#linearGradient17198);stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3707" + width="19" + height="0.11524805" + x="442.39197" + y="663.0199" + ry="0" + rx="0" /> + <rect + rx="0" + ry="0" + y="-665.06268" + x="449.39197" + height="0.042818163" + width="5.0000005" + id="rect3717" + style="color:#000000;fill:none;stroke:url(#linearGradient17200);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(1,-1)" /> + <rect + transform="scale(1,-1)" + style="color:#000000;fill:none;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3721" + width="5.0000005" + height="0.085639469" + x="443.39197" + y="-661.06268" + ry="0" + rx="0" /> + <rect + rx="0" + ry="0" + y="-661.06268" + x="450.39197" + height="0.085639469" + width="2.0000002" + id="rect3723" + style="color:#000000;fill:none;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(1,-1)" /> + <rect + rx="0" + ry="0" + y="461.39197" + x="652.0199" + height="1.270324e-06" + width="19" + id="rect3731" + style="opacity:0.1;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="matrix(0,1,1,0,0,0)" /> + <path + sodipodi:type="arc" + style="opacity:0.29918033;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.33333373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3976" + sodipodi:cx="5" + sodipodi:cy="15" + sodipodi:rx="2" + sodipodi:ry="2" + d="m 7,15 c 0,1.104569 -0.8954305,2 -2,2 -1.1045695,0 -2,-0.895431 -2,-2 0,-1.104569 0.8954305,-2 2,-2 1.1045695,0 2,0.895431 2,2 z" + transform="matrix(0.75,0,0,0.75,448.14198,667.26988)" /> + <path + transform="matrix(0.756755,0,0,0.7567552,448.09469,667.15504)" + d="m 7,15 c 0,1.104569 -0.8954305,2 -2,2 -1.1045695,0 -2,-0.895431 -2,-2 0,-1.104569 0.8954305,-2 2,-2 1.1045695,0 2,0.895431 2,2 z" + sodipodi:ry="2" + sodipodi:rx="2" + sodipodi:cy="15" + sodipodi:cx="5" + id="path7949" + style="opacity:0.81557378;color:#000000;fill:url(#linearGradient17202);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33333397;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <rect + rx="0.25" + ry="0.25" + y="673.7699" + x="-453.64197" + height="1.5000001" + width="3.5000002" + id="rect3713" + style="color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(-1,1)" /> + <rect + rx="0.12500001" + transform="scale(-1,1)" + style="color:#000000;fill:#204a87;fill-opacity:0.65822784;fill-rule:evenodd;stroke:none;stroke-width:0.50000006;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3715" + width="2" + height="0.75000012" + x="-448.89197" + y="682.7699" + ry="0.12500001" /> + <rect + transform="scale(-1,1)" + style="opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect4776" + width="19" + height="0.042820565" + x="-461.39197" + y="670.99847" + ry="0" + rx="0" /> + <rect + rx="0.41666663" + ry="0.41666663" + y="428.14197" + x="650.7699" + height="2.5" + width="31.75" + id="rect2810" + style="opacity:0.54918033;color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="matrix(0,1,1,0,0,0)" /> + <rect + rx="0.41666663" + transform="matrix(0,1,1,0,0,0)" + style="opacity:0.54918033;color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2812" + width="31.75" + height="2.5" + x="650.7699" + y="432.14197" + ry="0.41666663" /> + <rect + rx="0.41666663" + ry="0.41666663" + y="436.14197" + x="650.7699" + height="2.5" + width="31.75" + id="rect2814" + style="opacity:0.54918033;color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="matrix(0,1,1,0,0,0)" /> + <rect + rx="0.12500001" + ry="0.12500001" + y="682.7699" + x="-452.89197" + height="0.75000012" + width="2" + id="rect2834" + style="color:#000000;fill:#8ae234;fill-opacity:0.65822784;fill-rule:evenodd;stroke:none;stroke-width:0.50000006;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(-1,1)" /> + <rect + rx="0.12500001" + transform="scale(-1,1)" + style="color:#000000;fill:#a40000;fill-opacity:0.65822784;fill-rule:evenodd;stroke:none;stroke-width:0.50000006;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2836" + width="2" + height="0.75000012" + x="-456.89197" + y="682.7699" + ry="0.12500001" /> + </g> + <text + xml:space="preserve" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + x="714.55078" + y="634.95123" + id="text14068" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="714.55078" + y="634.95123" + id="tspan14070">Mail server</tspan></text> + <g + transform="matrix(1.4671338,0,0,1.4671338,-141.81336,-598.542)" + id="g10163-9"> + <path + sodipodi:type="arc" + style="opacity:0.4;fill:#2e3436;fill-opacity:0.75;fill-rule:evenodd;stroke:none;filter:url(#filter3795-7)" + id="path3789-2" + sodipodi:cx="24.456697" + sodipodi:cy="42.989361" + sodipodi:rx="14.554718" + sodipodi:ry="3.8176308" + d="m 39.011415,42.989361 c 0,2.108419 -6.516369,3.817631 -14.554718,3.817631 -8.038348,0 -14.5547176,-1.709212 -14.5547176,-3.817631 0,-2.108419 6.5163696,-3.817631 14.5547176,-3.817631 8.038349,0 14.554718,1.709212 14.554718,3.817631 z" + transform="matrix(1.5115373,0,0,1.0477704,407.92477,639.4769)" /> + <path + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 431.0204,642.01988 c -0.74406,0 -1.39866,0.31426 -1.875,0.81498 l -4.21875,5.266 c -0.32763,0.58528 -0.53125,1.25318 -0.53125,1.97475 l 0,32.91479 c 0,2.24012 1.79793,4.04354 4.03125,4.04354 l 32.93408,0 c 2.23332,0 4.03125,-1.80342 4.03125,-4.04354 l 0,-32.91479 c 0,-0.72157 -0.20362,-1.38947 -0.53125,-1.97475 l -4.21875,-5.266 c -0.47635,-0.50072 -1.13094,-0.81498 -1.875,-0.81498 l -27.74658,0 z" + id="path7931-8" + sodipodi:nodetypes="ccccccccccccc" /> + <path + style="opacity:0.7;color:#000000;fill:none;stroke:#f9f9f9;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 431.12517,643.01988 c -0.45697,0 -0.8313,0.19399 -1.13539,0.5 l -0.0315,0 -4.10002,5.0625 c -0.25758,0.45456 -0.41,0.93808 -0.41,1.46875 l 0,25.9375 c 0,1.69661 1.34696,3.03125 3.05925,3.03125 l 32.82526,0 c 1.71229,0 3.05925,-1.33464 3.05925,-3.03125 l 0,-25.9375 c 0,-0.53067 -0.15242,-1.0142 -0.41,-1.46875 l -4.10002,-5.0625 c -0.007,-0.007 -0.0245,0.007 -0.0315,0 -0.30409,-0.30602 -0.67842,-0.5 -1.13539,-0.5 l -27.58986,0 z" + id="path7933-2" + sodipodi:nodetypes="ccccccccccccscc" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path7935-0" + d="m 428.33952,647.01988 33.02394,0 c 1.67779,0 3.02849,1.35083 3.02849,3.02876 l 0,32.94248 c 0,1.67793 -1.3507,3.02876 -3.02849,3.02876 l -33.02394,0 c -1.67778,0 -3.02849,-1.35083 -3.02849,-3.02876 l 0,-32.94248 c 0,-1.67793 1.35071,-3.02876 3.02849,-3.02876 z" + style="color:#000000;fill:url(#linearGradient17204);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient17206);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + rx="1.4" + ry="1.4" + y="651.0199" + x="441.39197" + height="21" + width="21.000002" + id="rect3593-5" + style="color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:#6d6f6a;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.69620254;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/bellaich/rect3593.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <rect + rx="0.91154063" + style="opacity:0.70901639;color:#000000;fill:url(#linearGradient17208);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3673-4" + width="20" + height="20" + x="-461.89197" + y="651.5199" + ry="0.91154063" + transform="scale(-1,1)" /> + <rect + style="color:#000000;fill:none;stroke:url(#linearGradient17210);stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3629-1" + width="19" + height="0.10333849" + x="442.39197" + y="654.9682" + ry="0" + rx="0" /> + <rect + rx="0.46153843" + ry="1" + y="653.5199" + x="445.89197" + height="2" + width="12" + id="rect3641-0" + style="color:#000000;fill:#5f615d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="color:#000000;fill:#5f615d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3645-0" + width="12" + height="2" + x="445.89197" + y="657.5199" + ry="1" + rx="0.46153843" /> + <rect + rx="0" + ry="0" + y="658.9953" + x="442.39197" + height="0.049130145" + width="19" + id="rect3703-2" + style="color:#000000;fill:none;stroke:url(#linearGradient17212);stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="color:#000000;fill:none;stroke:url(#linearGradient17214);stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3707-5" + width="19" + height="0.11524805" + x="442.39197" + y="663.0199" + ry="0" + rx="0" /> + <rect + rx="0" + ry="0" + y="-665.06268" + x="449.39197" + height="0.042818163" + width="5.0000005" + id="rect3717-3" + style="color:#000000;fill:none;stroke:url(#linearGradient17216);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(1,-1)" /> + <rect + transform="scale(1,-1)" + style="color:#000000;fill:none;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3721-6" + width="5.0000005" + height="0.085639469" + x="443.39197" + y="-661.06268" + ry="0" + rx="0" /> + <rect + rx="0" + ry="0" + y="-661.06268" + x="450.39197" + height="0.085639469" + width="2.0000002" + id="rect3723-2" + style="color:#000000;fill:none;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(1,-1)" /> + <rect + rx="0" + ry="0" + y="461.39197" + x="652.0199" + height="1.270324e-06" + width="19" + id="rect3731-3" + style="opacity:0.1;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="matrix(0,1,1,0,0,0)" /> + <path + sodipodi:type="arc" + style="opacity:0.29918033;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.33333373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3976-9" + sodipodi:cx="5" + sodipodi:cy="15" + sodipodi:rx="2" + sodipodi:ry="2" + d="m 7,15 c 0,1.104569 -0.8954305,2 -2,2 -1.1045695,0 -2,-0.895431 -2,-2 0,-1.104569 0.8954305,-2 2,-2 1.1045695,0 2,0.895431 2,2 z" + transform="matrix(0.75,0,0,0.75,448.14198,667.26988)" /> + <path + transform="matrix(0.756755,0,0,0.7567552,448.09469,667.15504)" + d="m 7,15 c 0,1.104569 -0.8954305,2 -2,2 -1.1045695,0 -2,-0.895431 -2,-2 0,-1.104569 0.8954305,-2 2,-2 1.1045695,0 2,0.895431 2,2 z" + sodipodi:ry="2" + sodipodi:rx="2" + sodipodi:cy="15" + sodipodi:cx="5" + id="path7949-7" + style="opacity:0.81557378;color:#000000;fill:url(#linearGradient17218);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33333397;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <rect + rx="0.25" + ry="0.25" + y="673.7699" + x="-453.64197" + height="1.5000001" + width="3.5000002" + id="rect3713-5" + style="color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(-1,1)" /> + <rect + rx="0.12500001" + transform="scale(-1,1)" + style="color:#000000;fill:#204a87;fill-opacity:0.65822784;fill-rule:evenodd;stroke:none;stroke-width:0.50000006;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3715-1" + width="2" + height="0.75000012" + x="-448.89197" + y="682.7699" + ry="0.12500001" /> + <rect + transform="scale(-1,1)" + style="opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect4776-4" + width="19" + height="0.042820565" + x="-461.39197" + y="670.99847" + ry="0" + rx="0" /> + <rect + rx="0.41666663" + ry="0.41666663" + y="428.14197" + x="650.7699" + height="2.5" + width="31.75" + id="rect2810-2" + style="opacity:0.54918033;color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="matrix(0,1,1,0,0,0)" /> + <rect + rx="0.41666663" + transform="matrix(0,1,1,0,0,0)" + style="opacity:0.54918033;color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2812-8" + width="31.75" + height="2.5" + x="650.7699" + y="432.14197" + ry="0.41666663" /> + <rect + rx="0.12500001" + ry="0.12500001" + y="682.7699" + x="-452.89197" + height="0.75000012" + width="2" + id="rect2834-8" + style="color:#000000;fill:#8ae234;fill-opacity:0.65822784;fill-rule:evenodd;stroke:none;stroke-width:0.50000006;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(-1,1)" /> + <rect + rx="0.12500001" + transform="scale(-1,1)" + style="color:#000000;fill:#a40000;fill-opacity:0.65822784;fill-rule:evenodd;stroke:none;stroke-width:0.50000006;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect2836-2" + width="2" + height="0.75000012" + x="-456.89197" + y="682.7699" + ry="0.12500001" /> + </g> + <text + xml:space="preserve" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + x="548.34406" + y="366.88861" + id="text14068-9" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="548.34406" + y="366.88861" + id="tspan14070-9">Database server</tspan></text> + <text + sodipodi:linespacing="125%" + id="text14938" + y="384.14932" + x="548.99976" + style="font-size:22.39748764px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + id="tspan14942" + style="font-size:14.93165874px" + y="384.14932" + x="548.99976" + sodipodi:role="line">PostgreSQL, MySQL, Oracle</tspan></text> + <text + sodipodi:linespacing="125%" + id="text14938-2" + y="650.91644" + x="716.00122" + style="font-size:22.39748764px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + style="font-size:14.93165874px" + y="650.91644" + x="716.00122" + id="tspan14940-1" + sodipodi:role="line">postfix, exim, qmail,</tspan><tspan + dy="-3.6132979" + id="tspan14942-4" + style="font-size:14.93165874px" + y="669.58099" + x="716.00122" + sodipodi:role="line">sendmail, Exchange, etc.</tspan></text> + <g + transform="translate(-10.990182,-52.1269)" + id="g16865"> + <text + xml:space="preserve" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + x="162.95667" + y="544.06238" + id="text8699" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="162.95667" + y="544.06238" + id="tspan8703">RT webserver</tspan></text> + <text + xml:space="preserve" + style="font-size:22.39748764px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + x="109.15011" + y="561.18988" + id="text14938-7" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="109.15011" + y="561.18988" + style="font-size:14.93165874px" + id="tspan14942-7">Apache, lighttpd, nginx, etc.</tspan></text> + </g> + <path + inkscape:connection-end="#g2713" + inkscape:connection-start="#g10163-9" + inkscape:connector-type="polyline" + id="path15939" + d="M 480.83148,397.44525 331.25021,490.25831" + style="fill:none;stroke:#000000;stroke-width:1.20443273px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <g + transform="matrix(1.5649426,0,0,1.5649426,-113.85819,-485.61126)" + id="g9993"> + <path + sodipodi:type="arc" + style="opacity:0.4;fill:#2e3436;fill-opacity:0.75;fill-rule:evenodd;stroke:none;filter:url(#filter3795-78)" + id="path9673" + sodipodi:cx="24.456697" + sodipodi:cy="42.989361" + sodipodi:rx="14.554718" + sodipodi:ry="3.8176308" + d="m 39.011415,42.989361 c 0,2.108419 -6.516369,3.817631 -14.554718,3.817631 -8.038348,0 -14.5547176,-1.709212 -14.5547176,-3.817631 0,-2.108419 6.5163696,-3.817631 14.5547176,-3.817631 8.038349,0 14.554718,1.709212 14.554718,3.817631 z" + transform="matrix(0.9652547,0,0,1.0477704,487.08065,605.38975)" /> + <path + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 504.79511,607.93273 c -0.74405,0 -1.39865,0.31426 -1.875,0.81498 l -4.21875,5.266 c -0.32762,0.58528 -0.53125,1.25318 -0.53125,1.97475 l 0,32.91479 c 0,2.24012 1.79794,4.04354 4.03125,4.04354 l 16.90597,0 c 2.23332,0 4.03125,-1.80342 4.03125,-4.04354 l 0,-32.91479 c 0,-0.72157 -0.20362,-1.38947 -0.53125,-1.97475 l -4.21875,-5.266 c -0.47635,-0.50072 -1.13094,-0.81498 -1.875,-0.81498 l -11.71847,0 z" + id="path9679" + sodipodi:nodetypes="ccccccccccccc" /> + <path + style="opacity:0.7;color:#000000;fill:none;stroke:#f9f9f9;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 504.81553,608.93273 c -0.45697,0 -0.8313,0.19399 -1.13539,0.5 l -0.0315,0 -4.10002,5.0625 c -0.25758,0.45456 -0.41,0.93808 -0.41,1.46875 l 0,25.9375 c 0,1.69661 1.34696,3.03125 3.05925,3.03125 l 16.8815,0 c 1.71229,0 3.05925,-1.33464 3.05925,-3.03125 l 0,-25.9375 c 0,-0.53067 -0.15242,-1.0142 -0.41,-1.46875 l -4.10002,-5.0625 c -0.007,-0.007 -0.0245,0.007 -0.0315,0 -0.30409,-0.30602 -0.67842,-0.5 -1.13539,-0.5 l -11.6461,0 z" + id="path9681" + sodipodi:nodetypes="ccccccccccccscc" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path9683" + d="m 502.1986,612.93273 16.91146,0 c 1.67779,0 3.02849,1.35083 3.02849,3.02876 l 0,32.94248 c 0,1.67794 -1.3507,3.02876 -3.02849,3.02876 l -16.91146,0 c -1.67779,0 -3.02849,-1.35082 -3.02849,-3.02876 l 0,-32.94248 c 0,-1.67793 1.3507,-3.02876 3.02849,-3.02876 z" + style="color:#000000;fill:url(#linearGradient17220);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient17222);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + rx="1.4" + ry="1.4" + y="616.93274" + x="500.13858" + height="21" + width="21.000002" + id="rect9685" + style="color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:#6d6f6a;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.69620254;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/bellaich/rect3593.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <rect + rx="0.91154063" + style="opacity:0.70901639;color:#000000;fill:url(#linearGradient17224);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9687" + width="20" + height="20" + x="-520.63855" + y="617.43274" + ry="0.91154063" + transform="scale(-1,1)" /> + <rect + style="color:#000000;fill:none;stroke:url(#linearGradient17226);stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9689" + width="19" + height="0.10333849" + x="501.13858" + y="620.88104" + ry="0" + rx="0" /> + <rect + rx="0.46153843" + ry="1" + y="619.43274" + x="504.63858" + height="2" + width="12" + id="rect9691" + style="color:#000000;fill:#5f615d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="color:#000000;fill:#5f615d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9693" + width="12" + height="2" + x="504.63858" + y="623.43274" + ry="1" + rx="0.46153843" /> + <rect + rx="0" + ry="0" + y="624.90814" + x="501.13858" + height="0.049130145" + width="19" + id="rect9695" + style="color:#000000;fill:none;stroke:url(#linearGradient17228);stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="color:#000000;fill:none;stroke:url(#linearGradient17230);stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9697" + width="19" + height="0.11524805" + x="501.13858" + y="628.93274" + ry="0" + rx="0" /> + <rect + rx="0" + ry="0" + y="-630.97552" + x="508.13858" + height="0.042818163" + width="5.0000005" + id="rect9699" + style="color:#000000;fill:none;stroke:url(#linearGradient17232);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(1,-1)" /> + <rect + transform="scale(1,-1)" + style="color:#000000;fill:none;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9701" + width="5.0000005" + height="0.085639469" + x="502.13858" + y="-626.97552" + ry="0" + rx="0" /> + <rect + rx="0" + ry="0" + y="-626.97552" + x="509.13858" + height="0.085639469" + width="2.0000002" + id="rect9703" + style="color:#000000;fill:none;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(1,-1)" /> + <rect + rx="0" + ry="0" + y="520.13855" + x="617.93274" + height="1.270324e-06" + width="19" + id="rect9705" + style="opacity:0.1;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="matrix(0,1,1,0,0,0)" /> + <path + sodipodi:type="arc" + style="opacity:0.29918033;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.33333373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path9707" + sodipodi:cx="5" + sodipodi:cy="15" + sodipodi:rx="2" + sodipodi:ry="2" + d="m 7,15 c 0,1.104569 -0.8954305,2 -2,2 -1.1045695,0 -2,-0.895431 -2,-2 0,-1.104569 0.8954305,-2 2,-2 1.1045695,0 2,0.895431 2,2 z" + transform="matrix(0.75,0,0,0.75,506.88858,633.18273)" /> + <path + transform="matrix(0.756755,0,0,0.7567552,506.84129,633.06789)" + d="m 7,15 c 0,1.104569 -0.8954305,2 -2,2 -1.1045695,0 -2,-0.895431 -2,-2 0,-1.104569 0.8954305,-2 2,-2 1.1045695,0 2,0.895431 2,2 z" + sodipodi:ry="2" + sodipodi:rx="2" + sodipodi:cy="15" + sodipodi:cx="5" + id="path9709" + style="opacity:0.81557378;color:#000000;fill:url(#linearGradient17234);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33333397;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <rect + rx="0.41666663" + transform="scale(-1,1)" + style="opacity:0.54918033;color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9711" + width="11.5" + height="2.5" + x="-516.38855" + y="647.68274" + ry="0.41666663" /> + <rect + rx="0.25" + ry="0.25" + y="639.68274" + x="-512.38855" + height="1.5000001" + width="3.5000002" + id="rect9713" + style="color:#000000;fill:#eeeeec;fill-opacity:0.10126582;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.37815127;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="scale(-1,1)" /> + <rect + rx="0.12500001" + transform="scale(-1,1)" + style="color:#000000;fill:#fcea4f;fill-opacity:0.65822784;fill-rule:evenodd;stroke:none;stroke-width:0.50000006;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9715" + width="2" + height="0.75000012" + x="-511.63858" + y="646.68274" + ry="0.12500001" /> + <rect + transform="scale(1,-1)" + style="opacity:0.47950816;color:#000000;fill:none;stroke:#888a85;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9717" + width="3.0000002" + height="0.093660474" + x="509.13858" + y="-649.02637" + ry="0" + rx="0" /> + <rect + transform="scale(-1,1)" + style="opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect9719" + width="19" + height="0.042820565" + x="-520.13855" + y="636.91132" + ry="0" + rx="0" /> + </g> + <text + xml:space="preserve" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + x="711.17914" + y="490.94763" + id="text14068-9-8" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="711.17914" + y="490.94763" + id="tspan14070-9-3">External authentication</tspan></text> + <text + sodipodi:linespacing="125%" + id="text14938-73" + y="508.20837" + x="711.8349" + style="font-size:22.39748764px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + id="tspan14942-8" + style="font-size:14.93165874px" + y="508.20837" + x="711.8349" + sodipodi:role="line">LDAP, Active Directory, external</tspan><tspan + dy="-3.6132979" + id="tspan16491" + style="font-size:14.93165874px" + y="526.87292" + x="711.8349" + sodipodi:role="line">database, webauth</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16495" + y="637.66766" + x="220.75829" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + style="font-size:16.86205673px" + id="tspan16499" + y="637.66766" + x="220.75829" + sodipodi:role="line">New tickets and replies via email to RT<tspan + dx="0 -1.2044327" + dy="1.2044327" + id="tspan16781" + style="font-size:21.67978859px"> →</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text16503" + y="663.95544" + x="242.39751" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + dy="0 0 -1.2044327" + style="font-size:16.86205673px" + y="663.95544" + x="242.39751" + id="tspan16505" + sodipodi:role="line"><tspan + dy="1.2044327" + id="tspan16779" + style="font-size:21.67978859px">← </tspan>Notification emails from RT</tspan></text> + <text + transform="matrix(0.81826508,-0.57484107,0.57484107,0.81826508,0,0)" + sodipodi:linespacing="125%" + id="text16503-6" + y="608.0415" + x="-206.62967" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + style="font-size:16.86205673px" + y="608.0415" + x="-206.62967" + id="tspan16505-2" + sodipodi:role="line"><tspan + dy="0 0 0 0 0 0 0 0 0 0 0 0 0" + id="tspan16509-6" + style="font-size:16.86205673px">Web interface</tspan></tspan></text> + <text + transform="matrix(0.99998599,-0.00529335,0.00529335,0.99998599,0,0)" + sodipodi:linespacing="125%" + id="text16503-5" + y="496.79718" + x="399.05661" + style="font-size:21.67978859px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + style="font-size:16.86205673px" + y="496.79718" + x="399.05661" + id="tspan16505-9" + sodipodi:role="line">Optional authentication source</tspan></text> + <flowRoot + transform="matrix(1.2044327,0,0,1.2044327,0.38683784,-113.64736)" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:94.99999881%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + id="flowRoot16575" + xml:space="preserve"><flowRegion + id="flowRegion16577"><rect + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:94.99999881%;writing-mode:lr-tb;text-anchor:start;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + y="424" + x="456" + height="67" + width="223" + id="rect16579" /></flowRegion><flowPara + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:94.99999881%;writing-mode:lr-tb;text-anchor:start;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + id="flowPara16581">For small installations, the database server can be on the same server as RT.</flowPara></flowRoot> <path + inkscape:connection-start="#g2713" + inkscape:connection-end="#g9993" + inkscape:connector-type="polyline" + id="path16589" + d="m 331.25021,502.98581 334.49923,0.51214" + style="fill:none;stroke:#000000;stroke-width:1.20443273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:9.63546145, 9.63546145;stroke-dashoffset:0" /> + <path + inkscape:connection-start="#g2713" + inkscape:connection-end="#g5480" + inkscape:connector-type="polyline" + id="path16665" + d="M 290.32687,517.21069 132.56673,627.12654" + style="fill:none;stroke:#000000;stroke-width:1.20443273px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <g + id="g5480" + transform="matrix(1.7824042,0,0,1.7824042,78.043365,615.66018)"> + <g + style="display:inline" + inkscape:label="Layer 1" + id="g5482" /> + <g + style="display:inline" + inkscape:label="tastiera" + id="g5484"> + <g + transform="translate(-54,0.18088)" + inkscape:label="Shadow" + id="g5486" /> + <g + id="g5488" + inkscape:label="Shadow" + transform="translate(-54,15.24691)" /> + <g + id="g5490" + inkscape:label="Lavoro" + style="display:inline" + transform="translate(-54,15.24691)" /> + </g> + <g + style="display:inline" + inkscape:label="tasti" + id="g5492"> + <path + transform="matrix(0.633479,0,0,0.565504,1.119993,0.201324)" + d="m 47.69706,42.6875 c 0,3.249411 -10.637518,5.883578 -23.75956,5.883578 -13.122042,0 -23.75955963,-2.634167 -23.75955963,-5.883578 0,-3.249411 10.63751763,-5.883578 23.75955963,-5.883578 13.122042,0 23.75956,2.634167 23.75956,5.883578 z" + sodipodi:ry="5.8835783" + sodipodi:rx="23.75956" + sodipodi:cy="42.6875" + sodipodi:cx="23.9375" + id="path5494" + style="opacity:0.3;fill:url(#radialGradient17236);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" + sodipodi:type="arc" /> + <path + style="opacity:0.20786516;fill:none;stroke:url(#linearGradient17238);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" + d="m 27.082936,28.048013 c -5.41957,-6.912065 4.864917,-1.498623 3.772836,-3.894135 -1.0702,-2.347514 -13.447733,0.441363 -12.14622,-3.486669" + id="path5496" + sodipodi:nodetypes="czz" /> + <path + sodipodi:nodetypes="czz" + id="path5498" + d="m 26.784723,27.671888 c -5.246085,-7.259257 4.73584,-1.184456 3.589428,-4.067731 -1.301513,-3.27336 -12.175505,0.672825 -11.567934,-3.197342" + style="fill:none;stroke:#729fcf;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + <g + transform="matrix(0.530612,0,0,0.53095,3.140616,3.404111)" + id="g5500" + style="display:inline"> + <path + sodipodi:nodetypes="csccscc" + id="path5502" + d="m 14.375479,32.558794 c 0,0 1.216876,4.898976 -3.856329,4.944966 -2.4302757,0.02175 -1.9324777,4.006021 -1.9324777,4.006021 l 30.8464667,-0.03115 c 0,0 0.418438,-3.867241 -2.022217,-3.912581 -4.987467,-0.09147 -3.810529,-5.06955 -3.810529,-5.06955 l -19.224914,0.06229 z" + style="color:#000000;fill:url(#linearGradient17240);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.88401449;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="ccccc" + id="path5504" + d="m 13.926195,33.027451 c 0.08401,2.172549 -0.28454,2.911443 -1.640464,3.675231 L 36,38 c -0.952992,-1.168628 -2.339163,-2.933334 -1.961117,-4.988235 l -20.112688,0.01569 z" + style="opacity:0.5;fill:url(#linearGradient17242);fill-opacity:1;fill-rule:evenodd;stroke:none" /> + <path + style="fill:none;stroke:#8d8d8f;stroke-width:1.88401508px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.43902438" + d="m 10.436202,38.661601 c 6.564263,0.002 27.126435,0 27.126435,0" + id="path5506" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + id="path5508" + d="m 11.134219,39.660187 c 6.012537,0.002 25.747298,0 25.747298,0" + style="fill:none;stroke:#ffffff;stroke-width:1.88401532px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <path + sodipodi:nodetypes="ccccccccc" + id="path5510" + d="m 3.602229,1.4999996 24.716925,0 c 1.312778,0 2.269499,0.9197698 2.269499,2.3361502 l 0.0071,16.2366782 c 0,1.090117 -0.3425,1.427166 -1.318961,1.427166 L 2.7228402,21.487795 C 1.9583807,21.469246 1.414291,21.169109 1.404027,20.186855 L 1.413867,3.7151949 c 0,-1.1427919 0.9979174,-2.2151953 2.1883638,-2.2151953 z" + style="fill:url(#linearGradient17244);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" /> + <rect + y="3.5000005" + x="3.4999971" + height="15.194118" + width="25.103695" + id="rect5512" + style="fill:url(#radialGradient17246);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:0.99999958px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="ccccc" + id="path5514" + d="m 4.0984042,4.0204313 0,11.7276597 C 15.025941,14.866132 19.115514,9.1623492 28,8.5664313 L 28,4 4.0984042,4.0204313 z" + style="opacity:0.75;fill:url(#linearGradient17248);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" /> + <path + sodipodi:nodetypes="cccsccscccc" + id="path5516" + d="m 4.056094,2.4999991 c -0.8161996,0 -1.5600827,0.7952865 -1.5600827,1.5741105 l -5e-7,15.7156244 c 0.00391,0.370585 0.09092,0.485648 0.1755094,0.556697 0.08459,0.07105 0.2632912,0.12711 0.56553,0.134375 l 25.5463538,0.0192 c 0.406354,0 0.534785,-0.06206 0.58503,-0.115178 0.05025,-0.05312 0.136507,-0.246146 0.136507,-0.71027 l 1e-6,-15.4852656 c 0,-1.1101089 -0.630764,-1.6892893 -1.638087,-1.6892893 l -23.810761,0 z" + style="fill:none;stroke:#ffffff;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" /> + <g + id="g5518" + transform="matrix(0.01543206,0,0,0.01215502,29.57023,28.01728)" + style="display:inline"> + <rect + y="-150.69685" + x="-1559.2523" + height="478.35718" + width="1339.6335" + id="rect5520" + style="opacity:0.40206185;color:#000000;fill:url(#linearGradient17250);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="cccc" + id="path5522" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient17252);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient17254);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + id="path5524" + sodipodi:nodetypes="cccc" /> + </g> + <path + sodipodi:nodetypes="ccccccccc" + id="path5526" + d="m 3.643761,26.504783 25.278177,0 C 29.226374,26.504783 29.788645,26.492665 30,27 l 1.5,3 c 0.0625,0.406064 -0.01297,1.562501 -1.5,1.562501 L 2.5,31.500001 C 1,31.562501 1.0652178,30.281064 1.0652178,30 L 3,27 c 0.2113561,-0.507335 0.3393239,-0.495217 0.643761,-0.495217 z" + style="color:#000000;fill:url(#linearGradient17256);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path5528" + d="M 4.0955909,27.111942 28.49679,27.10614 c 0.291751,0 0.324078,0 0.526628,0.343448 l 1.39724,2.701171 c 0,0.19027 -0.234876,0.343448 -0.526629,0.343448 l -27.2157949,0.0058 c -0.2917523,0 -0.5266285,-0.153179 -0.5266285,-0.343449 L 3.5689622,27.45539 c 0.2025495,-0.343448 0.2348764,-0.343448 0.5266287,-0.343448 z" + style="color:#000000;fill:none;stroke:#ffffff;stroke-width:0.99999964;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="csssssssccssssssssssssccccssscccccccccssssssssssssccsssssssssccccccc" + id="path5530" + d="m 4.9039459,26.500588 c -0.00197,0.0019 0.0018,0.01435 0,0.01582 -0.00951,0.0025 -0.032542,0.01229 -0.042271,0.01582 -0.00325,0.0013 -0.017896,-0.0014 -0.021136,0 -0.00322,0.0015 -0.017941,0.01417 -0.021136,0.01582 -0.00631,0.0035 -0.01504,0.01182 -0.021136,0.01582 -0.00298,0.0021 -0.018238,0.01358 -0.021136,0.01582 -0.00281,0.0024 -0.018431,0.01334 -0.021135,0.01582 -0.042036,0.04562 -0.086304,0.124928 -0.1479492,0.221446 l -1.4434418,2.404285 c 0,0.003 -1.479e-4,0.0128 0,0.01582 2.934e-4,0.003 -4.366e-4,0.0128 0,0.01582 5.774e-4,0.003 -7.158e-4,0.01281 0,0.01582 0.0017,0.006 0.018902,0.02568 0.021136,0.03163 0.00125,0.003 -0.00137,0.01288 0,0.01582 0.00449,0.0088 0.01557,0.02314 0.021136,0.03163 0.00591,0.0084 0.014235,0.0236 0.021136,0.03164 0.00241,0.0026 0.018627,0.01324 0.021136,0.01582 0.00261,0.0025 0.018428,0.01334 0.021136,0.01582 0.016818,0.01451 0.043435,0.03539 0.063407,0.04745 0.00341,0.0019 0.017651,0.01397 0.021136,0.01582 0.01069,0.0048 0.030687,0.01146 0.042271,0.01582 0.077907,0.02677 0.180974,0.04745 0.2747628,0.04745 l 14.9781763,0 -0.06341,-3.036987 -13.4713276,-4e-6 c -0.044397,0 -0.093157,-0.0012 -0.1268135,0 -0.00788,3.5e-5 -0.033715,3.11e-4 -0.042271,0 -0.00261,1.5e-5 -0.018765,-1.3e-4 -0.021136,0 -0.00183,0.0014 -0.019162,-0.0019 -0.021135,0 z m 14.9296841,4e-6 0.06341,1.012329 3.656459,0 -0.169085,-1.012329 -3.55078,0 z m 4.818916,0 0.760882,3.036987 3.381696,0 c 0.09379,0 0.196855,-0.02068 0.274762,-0.04745 0.01159,-0.0044 0.03158,-0.01101 0.04227,-0.01582 0.0035,-0.0019 0.01773,-0.01389 0.02114,-0.01582 0.01997,-0.01206 0.04659,-0.03295 0.06341,-0.04745 0.0027,-0.0025 0.01853,-0.01329 0.02114,-0.01582 0.0025,-0.0026 0.01873,-0.01319 0.02114,-0.01582 0.0069,-0.008 0.01523,-0.02324 0.02114,-0.03164 0.0056,-0.0085 0.01664,-0.02288 0.02113,-0.03163 0.0014,-0.0029 -0.0012,-0.01286 0,-0.01582 0.0022,-0.006 0.01943,-0.02563 0.02114,-0.03163 7.15e-4,-0.003 -5.78e-4,-0.0128 0,-0.01582 4.36e-4,-0.003 -2.95e-4,-0.0128 0,-0.01582 1.49e-4,-0.003 0,-0.01281 0,-0.01582 l -1.183249,-2.404285 c -0.06165,-0.09652 -0.105914,-0.175827 -0.147949,-0.221446 -0.0027,-0.0025 -0.01833,-0.01346 -0.02114,-0.01582 -0.0029,-0.0022 -0.01816,-0.0137 -0.02114,-0.01582 -0.0061,-0.004 -0.01482,-0.01229 -0.02114,-0.01582 -0.0032,-0.0016 -0.01791,-0.01429 -0.02113,-0.01582 -0.0032,-0.0014 -0.01789,0.0013 -0.02114,0 -0.0097,-0.0035 -0.03276,-0.01333 -0.04227,-0.01582 -0.01044,-0.0019 -0.02693,-0.0125 -0.04227,-0.01582 -0.0077,-0.0015 -0.03522,8.6e-4 -0.04227,0 -0.03366,-0.0012 -0.08242,0 -0.126813,0 l -2.959329,4e-6 z m -3.973492,2.024657 -0.676339,1.01233 3.888949,0 -0.845424,-1.01233 -2.367186,0 z" + style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:0.99999923;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + style="color:#000000;fill:url(#radialGradient17258);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5532" + width="1" + height="1" + x="5" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17260);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5534" + width="1" + height="1" + x="7" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17262);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5536" + width="1" + height="1" + x="9" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17264);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5538" + width="1" + height="1" + x="11" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17266);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5540" + width="1" + height="1" + x="13" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17268);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5542" + width="1" + height="1" + x="15" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17270);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5544" + width="1" + height="1" + x="17" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17272);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5546" + width="1" + height="1" + x="4" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17274);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5548" + width="1" + height="1" + x="6" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17276);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5550" + width="1" + height="1" + x="8" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17278);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5552" + width="1" + height="1" + x="10" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17280);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5554" + width="1" + height="1" + x="12" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17282);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5556" + width="1" + height="1" + x="14" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17284);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5558" + width="1" + height="1" + x="16" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17286);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5560" + width="1" + height="1" + x="18" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17288);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5562" + width="1" + height="1" + x="5" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17290);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5564" + width="1" + height="1" + x="7" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17292);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5566" + width="1" + height="1" + x="9" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17294);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5568" + width="1" + height="1" + x="11" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17296);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5570" + width="1" + height="1" + x="13" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17298);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5572" + width="1" + height="1" + x="15" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17300);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5574" + width="1" + height="1" + x="17" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17302);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5576" + width="1" + height="1" + x="4" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17304);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5578" + width="1" + height="1" + x="6" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17306);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5580" + width="1" + height="1" + x="8" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17308);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5582" + width="1" + height="1" + x="10" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17310);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5584" + width="1" + height="1" + x="12" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17312);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5586" + width="1" + height="1" + x="14" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17314);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5588" + width="1" + height="1" + x="16" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17316);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5590" + width="1" + height="1" + x="18" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17318);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5592" + width="1" + height="1" + x="21" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17320);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5594" + width="1" + height="1" + x="20" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17322);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5596" + width="1" + height="1" + x="22" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17324);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5598" + width="1" + height="1" + x="21" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17326);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5600" + width="1" + height="1" + x="23" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17328);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5602" + width="1" + height="1" + x="20" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17330);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5604" + width="1" + height="1" + x="22" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17332);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5606" + width="1" + height="1" + x="26" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17334);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5608" + width="1" + height="1" + x="25" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17336);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5610" + width="1" + height="1" + x="27" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17338);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5612" + width="1" + height="1" + x="26" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17340);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5614" + width="1" + height="1" + x="28" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17342);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5616" + width="1" + height="1" + x="25" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17344);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5618" + width="1" + height="1" + x="27" + y="29" + rx="0.26516503" + ry="0.26516503" /> + </g> + </g> + <g + id="g5340" + transform="matrix(1.7824042,0,0,1.7824042,53.089704,635.26662)"> + <g + style="display:inline" + inkscape:label="Layer 1" + id="g5342" /> + <g + style="display:inline" + inkscape:label="tastiera" + id="g5344"> + <g + transform="translate(-54,0.18088)" + inkscape:label="Shadow" + id="g5346" /> + <g + id="g5348" + inkscape:label="Shadow" + transform="translate(-54,15.24691)" /> + <g + id="g5350" + inkscape:label="Lavoro" + style="display:inline" + transform="translate(-54,15.24691)" /> + </g> + <g + style="display:inline" + inkscape:label="tasti" + id="g3246"> + <path + transform="matrix(0.633479,0,0,0.565504,1.119993,0.201324)" + d="m 47.69706,42.6875 c 0,3.249411 -10.637518,5.883578 -23.75956,5.883578 -13.122042,0 -23.75955963,-2.634167 -23.75955963,-5.883578 0,-3.249411 10.63751763,-5.883578 23.75955963,-5.883578 13.122042,0 23.75956,2.634167 23.75956,5.883578 z" + sodipodi:ry="5.8835783" + sodipodi:rx="23.75956" + sodipodi:cy="42.6875" + sodipodi:cx="23.9375" + id="path5353" + style="opacity:0.3;fill:url(#radialGradient17346);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" + sodipodi:type="arc" /> + <path + style="opacity:0.20786516;fill:none;stroke:url(#linearGradient17348);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" + d="m 27.082936,28.048013 c -5.41957,-6.912065 4.864917,-1.498623 3.772836,-3.894135 -1.0702,-2.347514 -13.447733,0.441363 -12.14622,-3.486669" + id="path5355" + sodipodi:nodetypes="czz" /> + <path + sodipodi:nodetypes="czz" + id="path5357" + d="m 26.784723,27.671888 c -5.246085,-7.259257 4.73584,-1.184456 3.589428,-4.067731 -1.301513,-3.27336 -12.175505,0.672825 -11.567934,-3.197342" + style="fill:none;stroke:#729fcf;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + <g + transform="matrix(0.530612,0,0,0.53095,3.140616,3.404111)" + id="g5359" + style="display:inline"> + <path + sodipodi:nodetypes="csccscc" + id="path5361" + d="m 14.375479,32.558794 c 0,0 1.216876,4.898976 -3.856329,4.944966 -2.4302757,0.02175 -1.9324777,4.006021 -1.9324777,4.006021 l 30.8464667,-0.03115 c 0,0 0.418438,-3.867241 -2.022217,-3.912581 -4.987467,-0.09147 -3.810529,-5.06955 -3.810529,-5.06955 l -19.224914,0.06229 z" + style="color:#000000;fill:url(#linearGradient17350);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.88401449;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="ccccc" + id="path5363" + d="m 13.926195,33.027451 c 0.08401,2.172549 -0.28454,2.911443 -1.640464,3.675231 L 36,38 c -0.952992,-1.168628 -2.339163,-2.933334 -1.961117,-4.988235 l -20.112688,0.01569 z" + style="opacity:0.5;fill:url(#linearGradient17352);fill-opacity:1;fill-rule:evenodd;stroke:none" /> + <path + style="fill:none;stroke:#8d8d8f;stroke-width:1.88401508px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.43902438" + d="m 10.436202,38.661601 c 6.564263,0.002 27.126435,0 27.126435,0" + id="path5365" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + id="path5367" + d="m 11.134219,39.660187 c 6.012537,0.002 25.747298,0 25.747298,0" + style="fill:none;stroke:#ffffff;stroke-width:1.88401532px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <path + sodipodi:nodetypes="ccccccccc" + id="path5369" + d="m 3.602229,1.4999996 24.716925,0 c 1.312778,0 2.269499,0.9197698 2.269499,2.3361502 l 0.0071,16.2366782 c 0,1.090117 -0.3425,1.427166 -1.318961,1.427166 L 2.7228402,21.487795 C 1.9583807,21.469246 1.414291,21.169109 1.404027,20.186855 L 1.413867,3.7151949 c 0,-1.1427919 0.9979174,-2.2151953 2.1883638,-2.2151953 z" + style="fill:url(#linearGradient17354);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" /> + <rect + y="3.5000005" + x="3.4999971" + height="15.194118" + width="25.103695" + id="rect5371" + style="fill:url(#radialGradient17356);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:0.99999958px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="ccccc" + id="path5373" + d="m 4.0984042,4.0204313 0,11.7276597 C 15.025941,14.866132 19.115514,9.1623492 28,8.5664313 L 28,4 4.0984042,4.0204313 z" + style="opacity:0.75;fill:url(#linearGradient17358);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" /> + <path + sodipodi:nodetypes="cccsccscccc" + id="path5375" + d="m 4.056094,2.4999991 c -0.8161996,0 -1.5600827,0.7952865 -1.5600827,1.5741105 l -5e-7,15.7156244 c 0.00391,0.370585 0.09092,0.485648 0.1755094,0.556697 0.08459,0.07105 0.2632912,0.12711 0.56553,0.134375 l 25.5463538,0.0192 c 0.406354,0 0.534785,-0.06206 0.58503,-0.115178 0.05025,-0.05312 0.136507,-0.246146 0.136507,-0.71027 l 1e-6,-15.4852656 c 0,-1.1101089 -0.630764,-1.6892893 -1.638087,-1.6892893 l -23.810761,0 z" + style="fill:none;stroke:#ffffff;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" /> + <g + id="g5377" + transform="matrix(0.01543206,0,0,0.01215502,29.57023,28.01728)" + style="display:inline"> + <rect + y="-150.69685" + x="-1559.2523" + height="478.35718" + width="1339.6335" + id="rect6709" + style="opacity:0.40206185;color:#000000;fill:url(#linearGradient17360);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="cccc" + id="path5380" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient17362);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient17364);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + id="path5382" + sodipodi:nodetypes="cccc" /> + </g> + <path + sodipodi:nodetypes="ccccccccc" + id="path5384" + d="m 3.643761,26.504783 25.278177,0 C 29.226374,26.504783 29.788645,26.492665 30,27 l 1.5,3 c 0.0625,0.406064 -0.01297,1.562501 -1.5,1.562501 L 2.5,31.500001 C 1,31.562501 1.0652178,30.281064 1.0652178,30 L 3,27 c 0.2113561,-0.507335 0.3393239,-0.495217 0.643761,-0.495217 z" + style="color:#000000;fill:url(#linearGradient17366);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path5386" + d="M 4.0955909,27.111942 28.49679,27.10614 c 0.291751,0 0.324078,0 0.526628,0.343448 l 1.39724,2.701171 c 0,0.19027 -0.234876,0.343448 -0.526629,0.343448 l -27.2157949,0.0058 c -0.2917523,0 -0.5266285,-0.153179 -0.5266285,-0.343449 L 3.5689622,27.45539 c 0.2025495,-0.343448 0.2348764,-0.343448 0.5266287,-0.343448 z" + style="color:#000000;fill:none;stroke:#ffffff;stroke-width:0.99999964;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="csssssssccssssssssssssccccssscccccccccssssssssssssccsssssssssccccccc" + id="path5388" + d="m 4.9039459,26.500588 c -0.00197,0.0019 0.0018,0.01435 0,0.01582 -0.00951,0.0025 -0.032542,0.01229 -0.042271,0.01582 -0.00325,0.0013 -0.017896,-0.0014 -0.021136,0 -0.00322,0.0015 -0.017941,0.01417 -0.021136,0.01582 -0.00631,0.0035 -0.01504,0.01182 -0.021136,0.01582 -0.00298,0.0021 -0.018238,0.01358 -0.021136,0.01582 -0.00281,0.0024 -0.018431,0.01334 -0.021135,0.01582 -0.042036,0.04562 -0.086304,0.124928 -0.1479492,0.221446 l -1.4434418,2.404285 c 0,0.003 -1.479e-4,0.0128 0,0.01582 2.934e-4,0.003 -4.366e-4,0.0128 0,0.01582 5.774e-4,0.003 -7.158e-4,0.01281 0,0.01582 0.0017,0.006 0.018902,0.02568 0.021136,0.03163 0.00125,0.003 -0.00137,0.01288 0,0.01582 0.00449,0.0088 0.01557,0.02314 0.021136,0.03163 0.00591,0.0084 0.014235,0.0236 0.021136,0.03164 0.00241,0.0026 0.018627,0.01324 0.021136,0.01582 0.00261,0.0025 0.018428,0.01334 0.021136,0.01582 0.016818,0.01451 0.043435,0.03539 0.063407,0.04745 0.00341,0.0019 0.017651,0.01397 0.021136,0.01582 0.01069,0.0048 0.030687,0.01146 0.042271,0.01582 0.077907,0.02677 0.180974,0.04745 0.2747628,0.04745 l 14.9781763,0 -0.06341,-3.036987 -13.4713276,-4e-6 c -0.044397,0 -0.093157,-0.0012 -0.1268135,0 -0.00788,3.5e-5 -0.033715,3.11e-4 -0.042271,0 -0.00261,1.5e-5 -0.018765,-1.3e-4 -0.021136,0 -0.00183,0.0014 -0.019162,-0.0019 -0.021135,0 z m 14.9296841,4e-6 0.06341,1.012329 3.656459,0 -0.169085,-1.012329 -3.55078,0 z m 4.818916,0 0.760882,3.036987 3.381696,0 c 0.09379,0 0.196855,-0.02068 0.274762,-0.04745 0.01159,-0.0044 0.03158,-0.01101 0.04227,-0.01582 0.0035,-0.0019 0.01773,-0.01389 0.02114,-0.01582 0.01997,-0.01206 0.04659,-0.03295 0.06341,-0.04745 0.0027,-0.0025 0.01853,-0.01329 0.02114,-0.01582 0.0025,-0.0026 0.01873,-0.01319 0.02114,-0.01582 0.0069,-0.008 0.01523,-0.02324 0.02114,-0.03164 0.0056,-0.0085 0.01664,-0.02288 0.02113,-0.03163 0.0014,-0.0029 -0.0012,-0.01286 0,-0.01582 0.0022,-0.006 0.01943,-0.02563 0.02114,-0.03163 7.15e-4,-0.003 -5.78e-4,-0.0128 0,-0.01582 4.36e-4,-0.003 -2.95e-4,-0.0128 0,-0.01582 1.49e-4,-0.003 0,-0.01281 0,-0.01582 l -1.183249,-2.404285 c -0.06165,-0.09652 -0.105914,-0.175827 -0.147949,-0.221446 -0.0027,-0.0025 -0.01833,-0.01346 -0.02114,-0.01582 -0.0029,-0.0022 -0.01816,-0.0137 -0.02114,-0.01582 -0.0061,-0.004 -0.01482,-0.01229 -0.02114,-0.01582 -0.0032,-0.0016 -0.01791,-0.01429 -0.02113,-0.01582 -0.0032,-0.0014 -0.01789,0.0013 -0.02114,0 -0.0097,-0.0035 -0.03276,-0.01333 -0.04227,-0.01582 -0.01044,-0.0019 -0.02693,-0.0125 -0.04227,-0.01582 -0.0077,-0.0015 -0.03522,8.6e-4 -0.04227,0 -0.03366,-0.0012 -0.08242,0 -0.126813,0 l -2.959329,4e-6 z m -3.973492,2.024657 -0.676339,1.01233 3.888949,0 -0.845424,-1.01233 -2.367186,0 z" + style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:0.99999923;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + style="color:#000000;fill:url(#radialGradient17368);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5390" + width="1" + height="1" + x="5" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17370);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5392" + width="1" + height="1" + x="7" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17372);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5394" + width="1" + height="1" + x="9" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17374);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5396" + width="1" + height="1" + x="11" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17376);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5398" + width="1" + height="1" + x="13" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17378);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5400" + width="1" + height="1" + x="15" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17380);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5402" + width="1" + height="1" + x="17" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17382);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5404" + width="1" + height="1" + x="4" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17384);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5406" + width="1" + height="1" + x="6" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17386);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5408" + width="1" + height="1" + x="8" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17388);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5410" + width="1" + height="1" + x="10" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17390);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5412" + width="1" + height="1" + x="12" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17392);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5414" + width="1" + height="1" + x="14" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17394);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5416" + width="1" + height="1" + x="16" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17396);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5418" + width="1" + height="1" + x="18" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17398);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5420" + width="1" + height="1" + x="5" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17400);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5422" + width="1" + height="1" + x="7" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17402);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5424" + width="1" + height="1" + x="9" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17404);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5426" + width="1" + height="1" + x="11" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17406);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5428" + width="1" + height="1" + x="13" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17408);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5430" + width="1" + height="1" + x="15" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17410);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5432" + width="1" + height="1" + x="17" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17412);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5434" + width="1" + height="1" + x="4" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17414);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5436" + width="1" + height="1" + x="6" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17416);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5438" + width="1" + height="1" + x="8" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17418);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5440" + width="1" + height="1" + x="10" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17420);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5442" + width="1" + height="1" + x="12" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17422);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5444" + width="1" + height="1" + x="14" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17424);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5446" + width="1" + height="1" + x="16" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17426);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5448" + width="1" + height="1" + x="18" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17428);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5450" + width="1" + height="1" + x="21" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17430);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5452" + width="1" + height="1" + x="20" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17432);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5454" + width="1" + height="1" + x="22" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17434);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5456" + width="1" + height="1" + x="21" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17436);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5458" + width="1" + height="1" + x="23" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17438);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5460" + width="1" + height="1" + x="20" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17440);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5462" + width="1" + height="1" + x="22" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17442);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5464" + width="1" + height="1" + x="26" + y="26" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17444);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5466" + width="1" + height="1" + x="25" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17446);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5468" + width="1" + height="1" + x="27" + y="27" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17448);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5470" + width="1" + height="1" + x="26" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17450);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5472" + width="1" + height="1" + x="28" + y="28" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17452);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5474" + width="1" + height="1" + x="25" + y="29" + rx="0.26516503" + ry="0.26516503" /> + <rect + style="color:#000000;fill:url(#radialGradient17454);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect5476" + width="1" + height="1" + x="27" + y="29" + rx="0.26516503" + ry="0.26516503" /> + </g> + </g> + <path + inkscape:connection-end="#g10163" + inkscape:connection-start="#g5480" + inkscape:connector-type="polyline" + id="path16667" + d="m 132.57461,645.14904 515.17635,0.46821" + style="fill:none;stroke:#000000;stroke-width:1.20443273px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text16791" + y="367.16852" + x="54.603577" + style="font-size:28.55020714px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + y="367.16852" + x="54.603577" + id="tspan16793" + sodipodi:role="line">Example Request Tracker</tspan><tspan + dy="-5.6568542" + id="tspan16795" + y="402.85626" + x="54.603577" + sodipodi:role="line">network setup</tspan></text> + <path + inkscape:connection-end="#g10163" + inkscape:connection-start="#g2713" + inkscape:connector-type="polyline" + transform="translate(0,287.36218)" + id="path4301" + d="M 331.25021,223.5471 647.75096,346.59174" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + </g> +</svg> diff --git a/rt/docs/schema.dot b/rt/docs/schema.dot new file mode 100644 index 000000000..d81ceee12 --- /dev/null +++ b/rt/docs/schema.dot @@ -0,0 +1,99 @@ +digraph g { +graph [ +rankdir = "RL", + concentrate = true, +ratio = auto +]; +node [ +fontsize = "18", +shape = record, fontsize = 18 +]; +edge [ +]; + +"Records" [shape = record, fontsize = 18, label = "(Any RT::Record)" ]; +"Records" -> "Principals" [label = "Creator → id"]; +"ACL" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"ACL" -> "Principals" [label="PrincipalId → id"]; +"ACL" -> "Records" [label="ObjectId → id"]; + +"Attachments" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"Attachments" -> "Transactions" [label="TransactionId → id"]; +"Attachments" -> "Attachments" [label="Parent → id"]; + +"CachedGroupMembers" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"CachedGroupMembers" -> "Groups" [label="GroupId → id", weight=2]; +"CachedGroupMembers" -> "Principals" [label="MemberId → id"]; +"CachedGroupMembers" -> "CachedGroupMembers" [label="Via → id"]; +"CachedGroupMembers" -> "Groups" [label="ImmediateParentId → id"]; + +"CustomFields" [shape = record, fontsize = 18, label = "<col0> \N " ]; + +"CustomFieldValues" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"CustomFieldValues" -> "CustomFields" [label="CustomField → id"]; + +"GroupMembers" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"GroupMembers" -> "Groups" [label="GroupId → id", weight=2]; +"GroupMembers" -> "Principals" [label="MemberId → id", weight = 2]; + +"Groups" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"Groups" -> "Principals" [label="id → id"]; + +"Links" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"Links" -> "Tickets" [label="LocalBase ⇢ id (usually)", style="dotted"]; +"Links" -> "Tickets" [label="LocalTarget ⇢ id (usually)", style="dotted"]; + +"Principals" [shape = record, fontsize = 18, label = "<col0> \N " ]; + +"Attributes" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"Attributes" -> "Records" [label="ObjectId → id"]; + +"Queues" [shape = record, fontsize = 18, label = "<col0> \N " ]; + +"ScripActions" [shape = record, fontsize = 18, label = "<col0> \N " ]; + +"ScripConditions" [shape = record, fontsize = 18, label = "<col0> \N " ]; + +"Scrips" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"Scrips" -> "ScripConditions" [label="ScripCondition → id"]; +"Scrips" -> "ScripActions" [label="ScripAction → id"]; +"Scrips" -> "Templates" [label="Template → id"]; +"Scrips" -> "Queues" [label="Queue → id"]; + +"Templates" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"Templates" -> "Queues" [label ="Queue → id" ]; + +"ObjectCustomFields" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"ObjectCustomFields" -> "CustomFields" [label="CustomField → id"]; +"ObjectCustomFields" -> "Records" [label="ObjectId → id"]; + +"ObjectCustomFieldValues" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"ObjectCustomFieldValues" -> "CustomFields" [label="CustomField → id"]; +"ObjectCustomFieldValues" -> "Records" [label="ObjectId → id"]; + +"Tickets" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"Tickets" -> "Tickets" [label="EffectiveId → id"]; +"Tickets" -> "Principals" [label="Owner → id"]; +"Queues" -> "Tickets" [style="invis"]; +"Tickets" -> "Queues" [label="Queue → id"]; + +"Transactions" [shape = record, fontsize = 18, label = "<col0> \N " ]; +"Transactions" -> "Records" [label="ObjectId → id"]; + +"Users" [shape = record, fontsize = 18, label = "<col0> \N " ]; + +"Users" -> "Principals" [label="id → id"]; + +// "Classes" [shape = record, fontsize = 18 label = "<col0> \N " ]; +// "Articles" [shape = record, fontsize = 18 label = "<col0> \N " ]; +// "Articles" -> "Classes" [ label="Class → id"]; +// "Articles" -> "Articles" [ label="Parent → id"]; +// "ObjectClasses" [shape = record, fontsize = 18 label = "<col0> \N " ]; +// "ObjectClasses" -> "Records" [label="ObjectId → id"]; +// "ObjectClasses" -> "Classes" [label="Class → id"]; +// "Topics" [shape = record, fontsize = 18 label = "<col0> \N " ]; +// "ObjectTopics" [shape = record, fontsize = 18 label = "<col0> \N " ]; +// "ObjectTopics" -> "Records" [label="ObjectId → id"]; +// "ObjectTopics" -> "Topics" [label="Topic → id"]; + +} diff --git a/rt/docs/security.pod b/rt/docs/security.pod new file mode 100644 index 000000000..b8650e05d --- /dev/null +++ b/rt/docs/security.pod @@ -0,0 +1,77 @@ +=head1 RT Security + +=head2 Reporting security vulnerabilities in RT + +If you believe you've discovered a security issue in RT, please send an +email to <security@bestpractical.com> with a detailed description of the +issue, and a secure means to respond to you (such as your PGP public +key). + +More information is available at L<http://bestpractical.com/security/>. + +=head2 Security tips for running RT + +=over + +=item * + +Protect your RT installation by making it only accessible via SSL. This +will protect against users' passwords being sniffed as they go over the +wire, as well as helping prevent phishing attacks. If you use SSL, you +will need to install some additional Perl libraries so that C<rt-mailgate> +can connect. You can use the C<--enable-ssl-mailgate> command to +configure to automate the installation of these dependencies. This is +documented further in step 10 of the README. + +You should use a certificate signed by a reputable authority, or at very +least a certificate signed by a consistent local CA, which you configure +your local systems to trust. If your SSL certificate is self-signed, it +does little to prevent phishing, as users are trained to accept the +unauthorized certificate. See also the C<--no-verify-ssl> flag to +C<rt-mailgate>. + +=item * + +Be sure to change the password for the C<root> user of RT. The default +password is C<password>. This can be changed via the RT web interface +at: Preferences > About me + + +=item * + +Be sure to protect your F<RT_SiteConfig.pm> file if it contains database +credentials or other sensitive information. This file only needs to be +readable by RT and your web server. One way to accomplish this is to +make the file readable only by root and the group that RT runs as, and +then make sure your web server is a member of that group. Advanced +configuration may be required if other users have the ability to run +CGIs or access the server where RT is running. + + +=item * + +Be sure to protect your database. If it does not need to talk to the +world, then don't allow it to listen for remote connections. With MySQL +this can be accomplished via C<skip-networking>. If you use your +database for other things and must allow remote connections, be sure to +use a strong, hard to guess password for RT. + + +=item * + +Apache, lighttpd, and most other web servers support name based virtual +hosts. When possible, configure RT as a name based virtual host to +raise the bar against DNS rebinding attacks. If you see RT when you +visit http://your.servers.ipaddress.here, it means you are likely not +getting this additional protection. + + +=item * + +Use groups to organize RT permissions. Granting permissions per-user +makes them, in general, more easily over-granted and forgotten, and more +likely to diverge from each other, forming a maintenance hassle. + +=back + +=cut diff --git a/rt/docs/web_deployment.pod b/rt/docs/web_deployment.pod new file mode 100644 index 000000000..65065c5cd --- /dev/null +++ b/rt/docs/web_deployment.pod @@ -0,0 +1,233 @@ +=head1 Setting up the web interface + +As of RT 3.9, RT's web interface speaks PSGI +(L<http://plackperl.org>) which lets you use RT with any PSGI-supported web +server (which includes Apache, nginx, lighttpd, etc). + +=head2 Standalone + +The standalone RT web server is backed by a pure-Perl server engine +(L<HTTP::Server::PSGI>). This standalone server is appropriate for development +and testing, but is not appropriate for production use. + +You should not run this server against port 80 (which is the default port) +because that requires root-level privileges and may conflict with any existing +listeners. So choose a high port (for example 8080) and start the standalone +server with: + + /opt/rt4/sbin/rt-server --port 8080 + +You can also run C<rt-server> with any other PSGI server, for example, +to use L<Starman>, a high performance preforking server: + + /opt/rt4/sbin/rt-server --server Starman --port 8080 + +B<NOTICE>: After you run the standalone server as root, you will need to +remove your C<var/mason> directory, or the non-standalone servers +(Apache, etc), which run as a non-privileged user, will not be able to +write to it and will not work. + + +=head2 Apache + +B<WARNING>: Both C<mod_speling> and C<mod_cache> are known to break RT. +C<mod_speling> will cause RT's CSS and JS to not be loaded, making RT +appear unstyled. C<mod_cache> will cache cookies, making users be +spontaneously logged in as other users in the system. + +=head3 mod_fastcgi + + # Tell FastCGI to put its temporary files somewhere sane; this may + # be necessary if your distribution doesn't already set it + #FastCgiIpcDir /tmp + + FastCgiServer /opt/rt4/sbin/rt-server.fcgi -processes 5 -idle-timeout 300 + + <VirtualHost rt.example.com> + ### Optional apache logs for RT + # Ensure that your log rotation scripts know about these files + # ErrorLog /opt/rt4/var/log/apache2.error + # TransferLog /opt/rt4/var/log/apache2.access + # LogLevel debug + + AddDefaultCharset UTF-8 + + Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/ + ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/ + + DocumentRoot "/opt/rt4/share/html" + <Location /> + Order allow,deny + Allow from all + + Options +ExecCGI + AddHandler fastcgi-script fcgi + </Location> + </VirtualHost> + +=head3 mod_fcgid + + <VirtualHost rt.example.com> + ### Optional apache logs for RT + # Ensure that your log rotation scripts know about these files + # ErrorLog /opt/rt4/var/log/apache2.error + # TransferLog /opt/rt4/var/log/apache2.access + # LogLevel debug + + AddDefaultCharset UTF-8 + + Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/ + ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/ + + DocumentRoot "/opt/rt4/share/html" + <Location /> + Order allow,deny + Allow from all + + Options +ExecCGI + AddHandler fcgid-script fcgi + </Location> + </VirtualHost> + +=head3 mod_perl 2.xx + +B<WARNING: mod_perl 1.99_xx is not supported.> + +B<WARNING>: Due to thread-safety limitations, all timestamps will be +presented in the webserver's default time zone when using the C<worker> +and C<event> MPMs; the C<$Timezone> setting and the user's timezone +preference are ignored. We suggest the C<prefork> MPM or FastCGI +deployment if your privileged users are in a different timezone than the +one the server is configured for. + + <VirtualHost rt.example.com> + ### Optional apache logs for RT + # ErrorLog /opt/rt4/var/log/apache2.error + # TransferLog /opt/rt4/var/log/apache2.access + # LogLevel debug + + AddDefaultCharset UTF-8 + + DocumentRoot "/opt/rt4/share/html" + <Location /> + Order allow,deny + Allow from all + + SetHandler modperl + PerlResponseHandler Plack::Handler::Apache2 + PerlSetVar psgi_app /opt/rt4/sbin/rt-server + </Location> + <Perl> + use Plack::Handler::Apache2; + Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server"); + </Perl> + </VirtualHost> + +=head3 mod_perl 1.xx + +B<WARNING: mod_perl 1.99_xx is not supported.> + +To run RT using mod_perl 1.xx please see L<Plack::Handler::Apache1> for +configuration examples. + + +=head2 nginx + +C<nginx> requires that you start RT's fastcgi process externally, for +example using C<spawn-fcgi>: + + spawn-fcgi -u www-data -g www-data -a 127.0.0.1 -p 9000 \ + -- /opt/rt4/sbin/rt-server.fcgi + +With the nginx configuration: + + server { + listen 80; + server_name rt.example.com; + access_log /var/log/nginx/access.log; + + location / { + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + + fastcgi_param SCRIPT_NAME ""; + fastcgi_param PATH_INFO $uri; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + fastcgi_pass 127.0.0.1:9000; + } + + location /NoAuth/images { + root /opt/rt4/share/html; + } + } + + +=head2 lighttpd + + server.modules += ( "mod_fastcgi" ) + $HTTP["host"] =~ "^rt.example.com" { + alias.url = ( + "/NoAuth/images/" => "/opt/rt4/share/html/NoAuth/images/", + ) + $HTTP["url"] !~ "^/NoAuth/images/" { + fastcgi.server = ( + "/" => ( + "rt" => ( + "port" => "9000", + "bin-path" => "/opt/rt4/sbin/rt-server.fcgi", + "check-local" => "disable", + "fix-root-scriptname" => "enable", + ) + ) + ) + } + } + + +=head1 Running RT at /rt rather than / + +First you need to tell RT where it's located by setting C<$WebPath> in your +F<RT_SiteConfig.pm>: + + # Important: don't include a trailing slash here. Read `perldoc + # etc/RT_Config.pm` for more information. + Set($WebPath, "/rt"); + +Then you need to update your Apache configuration to match. Prefix any RT +related C<Alias>, C<ScriptAlias> and C<Location> directives with C</rt>. You +should also make sure C<DocumentRoot> is B<not> set to +C</opt/rt4/share/html/>, otherwise RT's source will be served from C</>. + +For example: if you're using the sample FastCGI config above, you might change +the relevant directives to: + + Alias /rt/NoAuth/images/ /opt/rt4/share/html/NoAuth/images/ + ScriptAlias /rt /opt/rt4/sbin/rt-server.fcgi/ + + # Set DocumentRoot as appropriate for the other content you want to serve + DocumentRoot /var/www + + <Location /rt> + ... + </Location> + +If you're using the sample mod_perl configuration, you only need to change the +C<Location> directive. + +If you're not using Apache, please see L<Plack::Handler::FCGI> or the web +server's own documentation for configuration examples. + |