Index: /applications/editors/josm/plugins/AddrInterpolation/.checkstyle
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/.checkstyle	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/.checkstyle	(revision 36424)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="JOSM" location="/JOSM/tools/checkstyle/josm_checks.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="JOSM" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="DerivedFiles" enabled="true"/>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value=".svn"/>
+    <filter-data value="data"/>
+    <filter-data value="images"/>
+    <filter-data value="resources"/>
+    <filter-data value="styles"/>
+    <filter-data value="scripts"/>
+  </filter>
+</fileset-config>
Index: /applications/editors/josm/plugins/AddrInterpolation/LICENSE
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/LICENSE	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/LICENSE	(revision 36424)
@@ -0,0 +1,345 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+	51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/AddrInterpolation/README
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/README	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/README	(revision 36424)
@@ -0,0 +1,15 @@
+README 
+======
+
+Address Interpolation Plugin
+
+
+The Address Interpolation described in the Karlsruhe Schema allows marking 
+many house addresses with minimal effort. While JOSM has a preset to assist 
+with creating the key, there are several steps required to create each 
+address interpolation way. This plugin combines the steps into one screen 
+for ease of use and to minimize chances for error. 
+
+For more information, refer to the Wiki page at 
+https://wiki.openstreetmap.org/wiki/JOSM/Plugins/AddrInterpolation
+
Index: /applications/editors/josm/plugins/AddrInterpolation/build.xml
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/build.xml	(revision 36424)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="AddrInterpolation" default="dist" basedir=".">
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="Impoved Icon"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+    
+    <!-- Configure these properties (replace "..." accordingly).
+         See https://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
+    -->
+    <property name="plugin.author" value="Mike Nice"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.AddrInterpolation.AddrInterpolationPlugin"/>
+    <property name="plugin.description" value="Group common Address Interpolation inputs in a single dialog, as well as an option to automatically generate individual house number nodes from a Way."/>
+    <property name="plugin.icon" value="images/AddrInterpolation.png"/>
+    <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/JOSM/Plugins/AddrInterpolation"/>
+
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>
+</project>
Index: /applications/editors/josm/plugins/AddrInterpolation/pom.xml
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/pom.xml	(revision 36424)
@@ -0,0 +1,42 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>addrinterpolation</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Mike Nice</name>
+        </developer>
+    </developers>
+    <properties>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+        <plugin.author>Mike Nice</plugin.author>
+        <plugin.class>org.openstreetmap.josm.plugins.AddrInterpolation.AddrInterpolationPlugin</plugin.class>
+        <plugin.description>Group common Address Interpolation inputs in a single dialog, as well as an option to automatically generate individual house number nodes from a Way.</plugin.description>
+        <plugin.link>https://wiki.openstreetmap.org/wiki/JOSM/Plugins/AddrInterpolation</plugin.link>
+        <plugin.icon>images/AddrInterpolation.png</plugin.icon>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationAction.java
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationAction.java	(revision 36424)
@@ -0,0 +1,45 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.AddrInterpolation;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+
+import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.osm.DataSelectionListener;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
+import org.openstreetmap.josm.tools.Shortcut;
+
+/**
+ * Handy Address Interpolation Functions
+ */
+public class AddrInterpolationAction extends JosmAction implements DataSelectionListener {
+
+    public AddrInterpolationAction() {
+        super(tr("Address Interpolation"), "AddrInterpolation", tr("Handy Address Interpolation Functions"),
+                Shortcut.registerShortcut("tools:AddressInterpolation", tr("Data: {0}", tr("Address Interpolation")),
+                        KeyEvent.VK_Z, Shortcut.ALT_CTRL), false);
+        setEnabled(false);
+        SelectionEventManager.getInstance().addSelectionListener(this);
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        /*AddrInterpolationDialog addrDialog =*/ new AddrInterpolationDialog(tr("Define Address Interpolation"));
+    }
+
+    @Override
+    public void selectionChanged(SelectionChangeEvent event) {
+
+        for (OsmPrimitive osm : event.getSelection()) {
+            if (osm instanceof Way) {
+                setEnabled(true);
+                return;
+            }
+        }
+        setEnabled(false);
+    }
+}
Index: /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java	(revision 36424)
@@ -0,0 +1,1284 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.AddrInterpolation;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.BorderLayout;
+import java.awt.Checkbox;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+import javax.swing.border.Border;
+import javax.swing.border.TitledBorder;
+
+import org.openstreetmap.josm.command.AddCommand;
+import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.DeleteCommand;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.UndoRedoHandler;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.data.osm.Tagged;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.widgets.UrlLabel;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
+
+/**
+ * Address Interpolation dialog
+ */
+public class AddrInterpolationDialog extends JDialog implements ActionListener {
+
+    private Way selectedStreet;
+    private Way addrInterpolationWay;
+    private Relation associatedStreetRelation;
+    private ArrayList<Node> houseNumberNodes;  // Additional nodes with addr:housenumber
+
+    private static String lastIncrement = "";
+    private static int lastAccuracyIndex;
+    private static String lastCity = "";
+    private static String lastState = "";
+    private static String lastPostCode = "";
+    private static String lastCountry = "";
+    private static String lastFullAddress = "";
+    private static boolean lastConvertToHousenumber;
+
+    // Edit controls
+    private EscapeDialog dialog;
+    private JRadioButton streetNameButton;
+    private JRadioButton streetRelationButton;
+    private JTextField startTextField;
+    private JTextField endTextField;
+    private JTextField incrementTextField;
+    private JTextField cityTextField;
+    private JTextField stateTextField;
+    private JTextField postCodeTextField;
+    private JTextField countryTextField;
+    private JTextField fullTextField;
+    private Checkbox cbConvertToHouseNumbers;
+
+    private boolean relationChanged; // Whether to re-trigger data changed for relation
+    // Track whether interpolation method is known so that auto detect doesn't override a previous choice.
+    private boolean interpolationMethodSet;
+
+    // NOTE: The following 2 arrays must match in number of elements and position
+    // Tag values for map (Except that 'Numeric' is replaced by actual # on map)
+    String[] addrInterpolationTags = {"odd", "even", "all", "alphabetic", "Numeric"};
+    String[] addrInterpolationStrings = {tr("Odd"), tr("Even"), tr("All"), tr("Alphabetic"), tr("Numeric") }; // Translatable names for display
+    private static final int NUMERIC_INDEX = 4;
+    private JComboBox<String> addrInterpolationList;
+
+    // NOTE: The following 2 arrays must match in number of elements and position
+    String[] addrInclusionTags = {"actual", "estimate", "potential" }; // Tag values for map
+    String[] addrInclusionStrings = {tr("Actual"), tr("Estimate"), tr("Potential") }; // Translatable names for display
+    private JComboBox<String> addrInclusionList;
+
+    // For tracking edit changes as group for undo
+    private Collection<Command> commandGroup;
+    private Relation editedRelation;
+
+    /**
+     * Create a new address interpolation dialog with a specified name
+     * @param name The name to show in the title bar
+     */
+    public AddrInterpolationDialog(String name) {
+
+        if (!findAndSaveSelections()) {
+            return;
+        }
+
+        JPanel editControlsPane = createEditControls();
+
+        showDialog(editControlsPane, name);
+    }
+
+    /**
+     * Show the dialog
+     * @param editControlsPane The controls to show
+     * @param name The name of the dialog
+     */
+    private void showDialog(JPanel editControlsPane, String name) {
+        dialog = new EscapeDialog(MainApplication.getMainFrame(), name, true);
+
+        dialog.add(editControlsPane);
+        dialog.setSize(new Dimension(300, 500));
+        dialog.setLocation(new Point(100, 300));
+
+        // Listen for windowOpened event to set focus
+        dialog.addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowOpened(WindowEvent e) {
+                if (addrInterpolationWay != null) {
+                    startTextField.requestFocus();
+                } else {
+                    cityTextField.requestFocus();
+                }
+            }
+        });
+
+        dialog.setVisible(true);
+        updateFields(this);
+    }
+
+    private static void updateFields(AddrInterpolationDialog dialog) {
+        lastIncrement = dialog.incrementTextField.getText();
+        lastCity = dialog.cityTextField.getText();
+        lastState = dialog.stateTextField.getText();
+        lastPostCode = dialog.postCodeTextField.getText();
+        lastCountry = dialog.countryTextField.getText();
+        lastFullAddress = dialog.fullTextField.getText();
+        lastConvertToHousenumber = dialog.cbConvertToHouseNumbers.getState();
+    }
+
+    /**
+     * Create edit control items and return JPanel on which they reside
+     * @return the edit controls
+     */
+    private JPanel createEditControls() {
+
+        JPanel editControlsPane = new JPanel();
+        GridBagLayout gridbag = new GridBagLayout();
+        GridBagConstraints c = new GridBagConstraints();
+
+        editControlsPane.setLayout(gridbag);
+
+        editControlsPane.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
+
+        String streetName = selectedStreet.get("name");
+        String streetRelation = findRelation();
+        if ("".equals(streetRelation)) {
+            streetRelation = " (Create new)";
+        }
+        streetNameButton = new JRadioButton(tr("Name: {0}", streetName));
+        streetRelationButton = new JRadioButton(tr("Relation: {0}", streetRelation));
+        if (associatedStreetRelation == null) {
+            streetNameButton.setSelected(true);
+        } else {
+            streetRelationButton.setSelected(true);
+        }
+
+        // Create edit controls for street / relation radio buttons
+        ButtonGroup group = new ButtonGroup();
+        group.add(streetNameButton);
+        group.add(streetRelationButton);
+        JPanel radioButtonPanel = new JPanel(new BorderLayout());
+        radioButtonPanel.setBorder(BorderFactory.createTitledBorder(tr("Associate with street using:")));
+        radioButtonPanel.add(streetNameButton, BorderLayout.NORTH);
+        radioButtonPanel.add(streetRelationButton, BorderLayout.SOUTH);
+
+        // Add to edit panel
+        c.gridx = 0;
+        c.gridwidth = 2; // # of columns to span
+        c.fill = GridBagConstraints.HORIZONTAL;      // Full width
+        c.gridwidth = GridBagConstraints.REMAINDER;     //end row
+        editControlsPane.add(radioButtonPanel, c);
+
+        JLabel numberingLabel = new JLabel(tr("Numbering Scheme:"));
+        addrInterpolationList = new JComboBox<>(addrInterpolationStrings);
+
+        JLabel incrementLabel = new JLabel(tr("Increment:"));
+        incrementTextField = new JTextField(lastIncrement, 100);
+        incrementTextField.setEnabled(false);
+
+        JLabel startLabel = new JLabel(tr("Starting #:"));
+        JLabel endLabel = new JLabel(tr("Ending #:"));
+
+        startTextField = new JTextField(10);
+        endTextField = new JTextField(10);
+
+        JLabel inclusionLabel = new JLabel(tr("Accuracy:"));
+        addrInclusionList = new JComboBox<>(addrInclusionStrings);
+        addrInclusionList.setSelectedIndex(lastAccuracyIndex);
+
+        // Preload any values already set in map
+        getExistingMapKeys();
+
+
+        JLabel[] textLabels = {startLabel, endLabel, numberingLabel, incrementLabel, inclusionLabel};
+        Component[] editFields = {startTextField, endTextField, addrInterpolationList, incrementTextField, addrInclusionList};
+        addEditControlRows(textLabels, editFields, editControlsPane);
+
+        cbConvertToHouseNumbers = new Checkbox(tr("Convert way to individual house numbers."), null, lastConvertToHousenumber);
+        // cbConvertToHouseNumbers.setSelected(lastConvertToHousenumber);
+
+        // Address interpolation fields not valid if Way not selected
+        if (addrInterpolationWay == null) {
+            addrInterpolationList.setEnabled(false);
+            startTextField.setEnabled(false);
+            endTextField.setEnabled(false);
+            cbConvertToHouseNumbers.setEnabled(false);
+        }
+
+        JPanel optionPanel = createOptionalFields();
+        c.gridx = 0;
+        c.gridwidth = 2; // # of columns to span
+        c.fill = GridBagConstraints.BOTH;      // Full width
+        c.gridwidth = GridBagConstraints.REMAINDER;     //end row
+
+        editControlsPane.add(optionPanel, c);
+
+        KeyAdapter enterProcessor = new KeyAdapter() {
+            @Override
+            public void keyPressed(KeyEvent e) {
+                if (e.getKeyCode() == KeyEvent.VK_ENTER && validateAndSave()) {
+                    dialog.dispose();
+                }
+            }
+        };
+
+        // Make Enter == OK click on fields using this adapter
+        endTextField.addKeyListener(enterProcessor);
+        cityTextField.addKeyListener(enterProcessor);
+        addrInterpolationList.addKeyListener(enterProcessor);
+        incrementTextField.addKeyListener(enterProcessor);
+
+        // Watch when Interpolation Method combo box is selected so that
+        // it can auto-detect method based on entered numbers.
+        addrInterpolationList.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusGained(FocusEvent fe) {
+                if (!interpolationMethodSet && autoDetectInterpolationMethod()) {
+                    interpolationMethodSet = true;  // Don't auto detect over a previous choice
+                }
+            }
+        });
+
+        // Watch when Interpolation Method combo box is changed so that
+        // Numeric increment box can be enabled or disabled.
+        addrInterpolationList.addActionListener(e -> {
+            int selectedIndex = addrInterpolationList.getSelectedIndex();
+            incrementTextField.setEnabled(selectedIndex == NUMERIC_INDEX); // Enable or disable numeric field
+        });
+
+        editControlsPane.add(cbConvertToHouseNumbers, c);
+
+        if (!houseNumberNodes.isEmpty()) {
+            JLabel houseNumberNodeNote = new JLabel(tr("Will associate {0} additional house number nodes",
+                    houseNumberNodes.size()));
+            editControlsPane.add(houseNumberNodeNote, c);
+        }
+
+        editControlsPane.add(new UrlLabel("https://wiki.openstreetmap.org/wiki/JOSM/Plugins/AddrInterpolation",
+                tr("More information about this feature"), 2), c);
+
+        c.gridx = 0;
+        c.gridwidth = 1; //next-to-last
+        c.fill = GridBagConstraints.NONE;      //reset to default
+        c.weightx = 0.0;
+        c.insets = new Insets(15, 0, 0, 0);
+        c.anchor = GridBagConstraints.LINE_END;
+        JButton okButton = new JButton(tr("OK"), ImageProvider.get("ok"));
+        editControlsPane.add(okButton, c);
+
+        c.gridx = 1;
+        c.gridwidth = GridBagConstraints.REMAINDER;     //end row
+        c.weightx = 1.0;
+        c.anchor = GridBagConstraints.LINE_START;
+
+        JButton cancelButton = new JButton(tr("Cancel"), ImageProvider.get("cancel"));
+        editControlsPane.add(cancelButton, c);
+
+        okButton.setActionCommand("ok");
+        okButton.addActionListener(this);
+        cancelButton.setActionCommand("cancel");
+        cancelButton.addActionListener(this);
+
+        return editControlsPane;
+    }
+
+    // Call after both starting and ending housenumbers have been entered - usually when
+    // combo box gets focus.
+    // Return true if a method was detected
+    private boolean autoDetectInterpolationMethod() {
+        String startValueString = readTextField(startTextField);
+        String endValueString = readTextField(endTextField);
+        if ((startValueString == null) || (endValueString == null)) {
+            // Not all values entered yet
+            return false;
+        }
+
+        // String[] addrInterpolationTags = { "odd", "even", "all", "alphabetic", ### };  // Tag values for map
+
+        if (isLong(startValueString) && isLong(endValueString)) {
+            // Have 2 numeric values
+            long startValue = Long.parseLong(startValueString);
+            long endValue = Long.parseLong(endValueString);
+
+            if (isEven(startValue)) {
+                if (isEven(endValue)) {
+                    selectInterpolationMethod("even");
+                } else {
+                    selectInterpolationMethod("all");
+                }
+            } else {
+                if (!isEven(endValue)) {
+                    selectInterpolationMethod("odd");
+                } else {
+                    selectInterpolationMethod("all");
+                }
+            }
+        } else {
+            // Test for possible alpha
+            char startingChar = startValueString.charAt(startValueString.length()-1);
+            char endingChar = endValueString.charAt(endValueString.length()-1);
+
+            if (!isNumeric("" + startingChar) && !isNumeric("" + endingChar)) {
+                // Both end with alpha
+                selectInterpolationMethod("alphabetic");
+                return true;
+            }
+
+            if (isNumeric("" + startingChar) && !isNumeric("" + endingChar)) {
+                endingChar = Character.toUpperCase(endingChar);
+                if ((endingChar >= 'A') && (endingChar <= 'Z')) {
+                    // First is a number, last is Latin alpha
+                    selectInterpolationMethod("alphabetic");
+                    return true;
+                }
+            }
+            
+            // Did not detect alpha
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Set Interpolation Method combo box to method specified by 'currentMethod' (an OSM key value)
+     * @param currentMethod The current interpolation method (number or key values)
+     */
+    private void selectInterpolationMethod(String currentMethod) {
+        int currentIndex = 0;
+        if (isLong(currentMethod)) {
+            // Valid number: Numeric increment method
+            currentIndex = addrInterpolationTags.length-1;
+            incrementTextField.setText(currentMethod);
+            incrementTextField.setEnabled(true);
+        } else {
+            // Must scan OSM key values because combo box is already loaded with translated strings
+            for (int i = 0; i < addrInterpolationTags.length; i++) {
+                if (addrInterpolationTags[i].equals(currentMethod)) {
+                    currentIndex = i;
+                    break;
+                }
+            }
+        }
+        addrInterpolationList.setSelectedIndex(currentIndex);
+
+    }
+
+    /**
+     * Set Inclusion Method combo box to method specified by 'currentMethod' (an OSM key value)
+     * @param currentMethod The key to use
+     */
+    private void selectInclusion(String currentMethod) {
+        int currentIndex = 0;
+        // Must scan OSM key values because combo box is already loaded with translated strings
+        for (int i = 0; i < addrInclusionTags.length; i++) {
+            if (addrInclusionTags[i].equals(currentMethod)) {
+                currentIndex = i;
+                break;
+            }
+        }
+        addrInclusionList.setSelectedIndex(currentIndex);
+    }
+
+    /**
+     * Create optional control fields in a group box
+     * @return a panel with optional fields
+     */
+    private JPanel createOptionalFields() {
+
+        JPanel editControlsPane = new JPanel();
+        GridBagLayout gridbag = new GridBagLayout();
+
+        editControlsPane.setLayout(gridbag);
+
+        editControlsPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
+        JLabel[] optionalTextLabels = {new JLabel(tr("City:")),
+                new JLabel(tr("State:")),
+                new JLabel(tr("Post Code:")),
+                new JLabel(tr("Country:")),
+                new JLabel(tr("Full Address:"))};
+        cityTextField = new JTextField(lastCity, 100);
+        stateTextField = new JTextField(lastState, 100);
+        postCodeTextField = new JTextField(lastPostCode, 20);
+        countryTextField = new JTextField(lastCountry, 2);
+        fullTextField = new JTextField(lastFullAddress, 300);
+
+        // Special processing for addr:country code, max length and uppercase
+        countryTextField.addKeyListener(new KeyAdapter() {
+            @Override
+            public void keyTyped(KeyEvent e) {
+                JTextField jtextfield = (JTextField) e.getSource();
+                String text = jtextfield.getText();
+                int length = text.length();
+                if (length == jtextfield.getColumns()) {
+                    e.consume();
+                } else if (length > jtextfield.getColumns()) {
+                    // show error message ??
+                    e.consume();
+                } else {
+                    // Accept key; convert to upper case
+                    if (!e.isActionKey()) {
+                        e.setKeyChar(Character.toUpperCase(e.getKeyChar()));
+                    }
+                }
+            }
+        });
+
+        Component[] optionalEditFields = {cityTextField, stateTextField, postCodeTextField, countryTextField, fullTextField};
+        addEditControlRows(optionalTextLabels, optionalEditFields, editControlsPane);
+
+        JPanel optionPanel = new JPanel(new BorderLayout());
+        Border groupBox = BorderFactory.createEtchedBorder();
+        TitledBorder titleBorder = BorderFactory.createTitledBorder(groupBox, tr("Optional Information:"),
+                TitledBorder.LEFT, TitledBorder.TOP);
+
+        optionPanel.setBorder(titleBorder);
+        optionPanel.add(editControlsPane, BorderLayout.CENTER);
+
+        return optionPanel;
+    }
+
+    /**
+     * Populate dialog for any possible existing settings if editing an existing Address interpolation way
+     */
+    private void getExistingMapKeys() {
+
+        // Check all nodes for optional addressing data
+        //    Address interpolation nodes will overwrite these value if they contain optional data
+        for (Node node : houseNumberNodes) {
+            checkNodeForAddressTags(node);
+        }
+
+        if (addrInterpolationWay != null) {
+            String currentMethod = addrInterpolationWay.get("addr:interpolation");
+            if (currentMethod != null) {
+
+                selectInterpolationMethod(currentMethod);
+                interpolationMethodSet = true;  // Don't auto detect over a previous choice
+            }
+
+            String currentInclusion = addrInterpolationWay.get("addr:inclusion");
+            if (currentInclusion != null) {
+                selectInclusion(currentInclusion);
+            }
+
+            Node firstNode = addrInterpolationWay.getNode(0);
+            Node lastNode = addrInterpolationWay.getNode(addrInterpolationWay.getNodesCount()-1);
+
+            // Get any existing start / end # values
+            String value = firstNode.get("addr:housenumber");
+            if (value != null) {
+                startTextField.setText(value);
+            }
+
+            value = lastNode.get("addr:housenumber");
+            if (value != null) {
+                endTextField.setText(value);
+            }
+            checkNodeForAddressTags(firstNode);
+            checkNodeForAddressTags(lastNode);
+        }
+    }
+
+    /**
+     * Check for any existing address data.
+     * If found, overwrite any previous data
+     * @param checkNode The node to look for possible existing values
+     */
+    private static void checkNodeForAddressTags(Tagged checkNode) {
+        // Interrogate possible existing optional values
+        String value = checkNode.get("addr:city");
+        if (value != null) {
+            lastCity = value;
+        }
+        value = checkNode.get("addr:state");
+        if (value != null) {
+            lastState = value;
+        }
+        value = checkNode.get("addr:postcode");
+        if (value != null) {
+            lastPostCode = value;
+        }
+        value = checkNode.get("addr:country");
+        if (value != null) {
+            lastCountry = value;
+        }
+        value = checkNode.get("addr:full");
+        if (value != null) {
+            lastFullAddress = value;
+        }
+    }
+
+    /**
+     * Look for a possible 'associatedStreet' type of relation for selected street
+     * @return relation description, or an empty string
+     */
+    private String findRelation() {
+        final DataSet currentDataSet = MainApplication.getLayerManager().getEditDataSet();
+        if (currentDataSet != null) {
+            for (Relation relation : currentDataSet.getRelations()) {
+                if ("associatedStreet".equals(relation.get("type"))) {
+                    for (RelationMember relationMember : relation.getMembers()) {
+                        if (relationMember.isWay()) {
+                            final StringBuilder relationDescription = new StringBuilder();
+                            Way way = (Way) relationMember.getMember();
+                            // System.out.println("Name: " + way.get("name") );
+                            if (way == selectedStreet) {
+                                associatedStreetRelation = relation;
+                                relationDescription.append(way.getId()).append('(');
+
+                                if (relation.getKeys().containsKey("name")) {
+                                    relationDescription.append(relation.get("name"));
+                                } else {
+                                    // Relation is unnamed - use street name
+                                    relationDescription.append(selectedStreet.get("name"));
+                                }
+                                relationDescription.append(')');
+                                return relationDescription.toString();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return "";
+    }
+
+    /** We can proceed only if there is both a named way (the 'street') and
+     * one un-named way (the address interpolation way ) selected.
+     *    The plugin menu item is enabled after a single way is selected to display a more meaningful
+     *    message (a new user may not realize that they need to select both the street and
+     *    address interpolation way first).
+     * Also, selected street and working address interpolation ways are saved.
+     * @return {@code true} if
+     */
+    private boolean findAndSaveSelections() {
+
+        boolean isValid = false;
+
+        int namedWayCount = 0;
+        int unNamedWayCount = 0;
+        DataSet currentDataSet = MainApplication.getLayerManager().getEditDataSet();
+        if (currentDataSet != null) {
+            for (Way way : currentDataSet.getSelectedWays()) {
+                if (way.getKeys().containsKey("name")) {
+                    namedWayCount++;
+                    this.selectedStreet = way;
+                } else {
+                    unNamedWayCount++;
+                    this.addrInterpolationWay = way;
+                }
+            }
+
+            // Get additional nodes with addr:housenumber tags:
+            //   Either selected or in the middle of the Address Interpolation way
+            //     Do not include end points of Address Interpolation way in this set yet.
+            houseNumberNodes = new ArrayList<>();
+            // Check selected nodes
+            for (Node node : currentDataSet.getSelectedNodes()) {
+                if (node.getKeys().containsKey("addr:housenumber")) {
+                    houseNumberNodes.add(node);
+                }
+            }
+
+            // Check nodes in middle of address interpolation way
+            if (addrInterpolationWay != null && addrInterpolationWay.getNodesCount() > 2) {
+                for (int i = 1; i < (addrInterpolationWay.getNodesCount()-2); i++) {
+                    Node testNode = addrInterpolationWay.getNode(i);
+                    if (testNode.getKeys().containsKey("addr:housenumber")) {
+                        houseNumberNodes.add(testNode);
+                    }
+                }
+            }
+        }
+
+        if (namedWayCount != 1) {
+            JOptionPane.showMessageDialog(
+                    MainApplication.getMainFrame(),
+                    tr("Please select a street to associate with address interpolation way"),
+                    tr("Error"),
+                    JOptionPane.ERROR_MESSAGE
+            );
+        } else {
+            // Avoid 2 error dialogs if both conditions don't match
+            if (unNamedWayCount != 1) {
+                // Allow for street + house number nodes only to be selected (no address interpolation way).
+                if (!houseNumberNodes.isEmpty()) {
+                    isValid = true;
+                } else {
+                    JOptionPane.showMessageDialog(
+                            MainApplication.getMainFrame(),
+                            tr("Please select address interpolation way for this street"),
+                            tr("Error"),
+                            JOptionPane.ERROR_MESSAGE
+                    );
+                }
+            } else {
+                isValid = true;
+            }
+        }
+
+        return isValid;
+    }
+
+    /**
+     * Add rows of edit controls - with labels in the left column, and controls in the right
+     * column on the gridbag of the specified container.
+     * @param labels labels on left column
+     * @param editFields edit fields on the right column
+     * @param container container
+     */
+    private static void addEditControlRows(JLabel[] labels,
+                                    Component[] editFields,
+                                    Container container) {
+        GridBagConstraints c = new GridBagConstraints();
+        c.anchor = GridBagConstraints.EAST;
+        int numLabels = labels.length;
+
+        for (int i = 0; i < numLabels; i++) {
+            c.gridx = 0;
+            c.gridwidth = 1; //next-to-last
+            c.fill = GridBagConstraints.NONE;      //reset to default
+            c.weightx = 0.0;                       //reset to default
+            container.add(labels[i], c);
+
+            c.gridx = 1;
+            c.gridwidth = GridBagConstraints.REMAINDER;     //end row
+            c.fill = GridBagConstraints.HORIZONTAL;
+            c.weightx = 1.0;
+            container.add(editFields[i], c);
+        }
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        if ("ok".equals(e.getActionCommand())) {
+            if (validateAndSave()) {
+                dialog.dispose();
+            }
+        } else if ("cancel".equals(e.getActionCommand())) {
+            dialog.dispose();
+        }
+    }
+
+    /**
+     * For Alpha interpolation, return base string
+     * For example: "22A" -> "22"
+     * For example: "A" -> ""
+     *  Input string must not be empty
+     * @param strValue The value to get the base string of
+     * @return the base string, or an empty string
+     */
+    private static String baseAlpha(String strValue) {
+        if (strValue.length() > 0) {
+            return strValue.substring(0, strValue.length() - 1);
+        } else {
+            return "";
+        }
+    }
+
+    /**
+     * Get the last char of a string
+     * @param strValue The string to get the last char of
+     * @return The last char, or {@code 0}.
+     */
+    private static char lastChar(String strValue) {
+        if (strValue.length() > 0) {
+            return strValue.charAt(strValue.length() - 1);
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Test for valid positive long int
+     * @param input The input string
+     * @return {@code true} if the input is a positive long
+     */
+    private static boolean isLong(String input) {
+        try {
+            long val = Long.parseLong(input);
+            return (val > 0);
+        } catch (NumberFormatException e) {
+            Logging.trace(e);
+            return false;
+        }
+    }
+
+    /**
+     * Check if a number is even
+     * @param input The input number
+     * @return {@code true} if the number is even
+     */
+    private static boolean isEven(long input) {
+        return ((input % 2) == 0);
+    }
+
+    private static final Pattern PATTERN_NUMERIC = Pattern.compile("^[0-9]+$");
+
+    /**
+     * Check if a string is numeric
+     * @param s The string to check
+     * @return {@code true} if it is a numeric string
+     */
+    private static boolean isNumeric(String s) {
+        return PATTERN_NUMERIC.matcher(s).matches();
+    }
+
+
+    private void interpolateAlphaSection(int startNodeIndex, int endNodeIndex, String endValueString,
+                                         char startingChar, char endingChar) {
+
+
+        String baseAlpha = baseAlpha(endValueString);
+        int nSegments = endNodeIndex - startNodeIndex;
+
+        double[] segmentLengths = new double[nSegments];
+        // Total length of address interpolation way section
+        double totalLength = calculateSegmentLengths(startNodeIndex, endNodeIndex, segmentLengths);
+
+
+        int nHouses = endingChar - startingChar-1;  // # of house number nodes to create
+        if (nHouses > 0) {
+
+            double houseSpacing = totalLength / (nHouses+1);
+
+            Node lastHouseNode = addrInterpolationWay.getNode(startNodeIndex);
+            int currentSegment = 0; // Segment being used to place new house # node
+            char currentChar = startingChar;
+            while (nHouses > 0) {
+                double distanceNeeded = houseSpacing;
+
+                // Move along segments until we can place the new house number
+                while (distanceNeeded > segmentLengths[currentSegment]) {
+                    distanceNeeded -= segmentLengths[currentSegment];
+                    currentSegment++;
+                    lastHouseNode = addrInterpolationWay.getNode(startNodeIndex + currentSegment);
+                }
+
+                // House number is to be positioned in current segment.
+                double proportion = distanceNeeded / segmentLengths[currentSegment];
+                Node toNode = addrInterpolationWay.getNode(startNodeIndex + 1 + currentSegment);
+                LatLon newHouseNumberPosition = lastHouseNode.getCoor().interpolate(toNode.getCoor(), proportion);
+
+                Node newHouseNumberNode = new Node(newHouseNumberPosition);
+                currentChar++;
+                if ((currentChar > 'Z') && (currentChar < 'a')) {
+                    // Wraparound past uppercase Z: go directly to lower case a
+                    currentChar = 'a';
+
+                }
+                String newHouseNumber = baseAlpha + currentChar;
+                newHouseNumberNode.put("addr:housenumber", newHouseNumber);
+
+                commandGroup.add(new AddCommand(MainApplication.getLayerManager().getEditDataSet(), newHouseNumberNode));
+                houseNumberNodes.add(newHouseNumberNode);   // Street, etc information to be added later
+
+                lastHouseNode = newHouseNumberNode;
+
+
+                segmentLengths[currentSegment] -= distanceNeeded; // Track amount used
+                nHouses--;
+            }
+        }
+    }
+
+    private void createAlphaInterpolation(String startValueString, String endValueString) {
+        char startingChar = lastChar(startValueString);
+        char endingChar = lastChar(endValueString);
+
+        if (isLong(startValueString)) {
+            // Special case of numeric first value, followed by 'A'
+            startingChar = 'A'-1;
+        }
+
+        // Search for possible anchors from the 2nd node to 2nd from last, interpolating between each anchor
+        int startIndex = 0; // Index into first interpolation zone of address interpolation way
+        for (int i = 1; i < addrInterpolationWay.getNodesCount()-1; i++) {
+            Node testNode = addrInterpolationWay.getNode(i);
+            String endNodeNumber = testNode.get("addr:housenumber");
+            // This is a potential anchor node
+            if (endNodeNumber != null && !"".equals(endNodeNumber)) {
+                char anchorChar = lastChar(endNodeNumber);
+                if ((anchorChar > startingChar) && (anchorChar < endingChar)) {
+                    // Lies within the expected range
+                    interpolateAlphaSection(startIndex, i, endNodeNumber, startingChar, anchorChar);
+
+                    // For next interpolation section
+                    startingChar = anchorChar;
+                    startValueString = endNodeNumber;
+                    startIndex = i;
+                }
+            }
+        }
+
+        // End nodes do not actually contain housenumber value yet (command has not executed), so use user-entered value
+        interpolateAlphaSection(startIndex, addrInterpolationWay.getNodesCount()-1, endValueString, startingChar, endingChar);
+    }
+
+    private double calculateSegmentLengths(int startNodeIndex, int endNodeIndex, double[] segmentLengths) {
+        Node fromNode = addrInterpolationWay.getNode(startNodeIndex);
+        double totalLength = 0.0;
+        int nSegments = segmentLengths.length;
+        for (int segment = 0; segment < nSegments; segment++) {
+            Node toNode = addrInterpolationWay.getNode(startNodeIndex + 1 + segment);
+            segmentLengths[segment] = fromNode.greatCircleDistance(toNode);
+            totalLength += segmentLengths[segment];
+
+            fromNode = toNode;
+        }
+        return totalLength;
+    }
+
+    private void interpolateNumericSection(int startNodeIndex, int endNodeIndex,
+                                           long startingAddr, long endingAddr,
+                                           long increment) {
+
+        int nSegments = endNodeIndex - startNodeIndex;
+
+        double[] segmentLengths = new double[nSegments];
+
+        // Total length of address interpolation way section
+        double totalLength = calculateSegmentLengths(startNodeIndex, endNodeIndex, segmentLengths);
+
+        int nHouses = (int) ((endingAddr - startingAddr) / increment) -1;
+        if (nHouses > 0) {
+
+            double houseSpacing = totalLength / (nHouses+1);
+
+            Node lastHouseNode = addrInterpolationWay.getNode(startNodeIndex);
+            int currentSegment = 0; // Segment being used to place new house # node
+            long currentHouseNumber = startingAddr;
+            while (nHouses > 0) {
+                double distanceNeeded = houseSpacing;
+
+                // Move along segments until we can place the new house number
+                while (distanceNeeded > segmentLengths[currentSegment]) {
+                    distanceNeeded -= segmentLengths[currentSegment];
+                    currentSegment++;
+                    lastHouseNode = addrInterpolationWay.getNode(startNodeIndex + currentSegment);
+                }
+
+                // House number is to be positioned in current segment.
+                double proportion = distanceNeeded / segmentLengths[currentSegment];
+                Node toNode = addrInterpolationWay.getNode(startNodeIndex + 1 + currentSegment);
+                LatLon newHouseNumberPosition = lastHouseNode.getCoor().interpolate(toNode.getCoor(), proportion);
+
+
+                Node newHouseNumberNode = new Node(newHouseNumberPosition);
+                currentHouseNumber += increment;
+                String newHouseNumber = Long.toString(currentHouseNumber);
+                newHouseNumberNode.put("addr:housenumber", newHouseNumber);
+
+                commandGroup.add(new AddCommand(MainApplication.getLayerManager().getEditDataSet(), newHouseNumberNode));
+                houseNumberNodes.add(newHouseNumberNode);   // Street, etc information to be added later
+
+                lastHouseNode = newHouseNumberNode;
+
+                segmentLengths[currentSegment] -= distanceNeeded; // Track amount used
+                nHouses--;
+            }
+        }
+    }
+
+    private void createNumericInterpolation(String startValueString, String endValueString, long increment) {
+
+        long startingAddr = Long.parseLong(startValueString);
+        long endingAddr = Long.parseLong(endValueString);
+
+        // Search for possible anchors from the 2nd node to 2nd from last, interpolating between each anchor
+        int startIndex = 0; // Index into first interpolation zone of address interpolation way
+        for (int i = 1; i < addrInterpolationWay.getNodesCount()-1; i++) {
+            Node testNode = addrInterpolationWay.getNode(i);
+            String strEndNodeNumber = testNode.get("addr:housenumber");
+            // This is a potential anchor node
+            if (strEndNodeNumber != null && isLong(strEndNodeNumber)) {
+                long anchorAddrNumber = Long.parseLong(strEndNodeNumber);
+                if ((anchorAddrNumber > startingAddr) && (anchorAddrNumber < endingAddr)) {
+                    // Lies within the expected range
+                    interpolateNumericSection(startIndex, i, startingAddr, anchorAddrNumber, increment);
+
+                    // For next interpolation section
+                    startingAddr = anchorAddrNumber;
+                    startValueString = strEndNodeNumber;
+                    startIndex = i;
+                }
+            }
+        }
+
+        // End nodes do not actually contain housenumber value yet (command has not executed), so use user-entered value
+        interpolateNumericSection(startIndex, addrInterpolationWay.getNodesCount()-1, startingAddr, endingAddr, increment);
+    }
+
+    // Called if user has checked "Convert to House Numbers" checkbox.
+    private void convertWayToHousenumbers(String selectedMethod, String startValueString, String endValueString,
+                                          String incrementString) {
+        // - Use nodes labeled with 'same type' as interim anchors in the middle of the way to identify unequal spacing.
+        // - Ignore nodes of different type; for example '25b' is ignored in sequence 5..15
+
+        // Calculate required number of house numbers to create
+        if ("alphabetic".equals(selectedMethod)) {
+
+            createAlphaInterpolation(startValueString, endValueString);
+
+        } else {
+            long increment = 1;
+            if ("odd".equals(selectedMethod) || "even".equals(selectedMethod)) {
+                increment = 2;
+            } else if ("Numeric".equals(selectedMethod)) {
+                increment = Long.parseLong(incrementString);
+            }
+            createNumericInterpolation(startValueString, endValueString, increment);
+        }
+
+        removeAddressInterpolationWay();
+
+    }
+
+    private void removeAddressInterpolationWay() {
+        final Command deleteCommand = DeleteCommand.delete(Collections.singleton(addrInterpolationWay), true);
+        if (deleteCommand != null) {
+            commandGroup.add(deleteCommand);
+        }
+
+        addrInterpolationWay = null;
+    }
+
+    private boolean validateAndSave() {
+
+        String startValueString = readTextField(startTextField);
+        String endValueString = readTextField(endTextField);
+        String incrementString = readTextField(incrementTextField);
+        String city = readTextField(cityTextField);
+        String state = readTextField(stateTextField);
+        String postCode = readTextField(postCodeTextField);
+        String country = readTextField(countryTextField);
+        String fullAddress = readTextField(fullTextField);
+
+        String selectedMethod = getInterpolationMethod();
+        if (addrInterpolationWay != null) {
+            Long startAddr = 0L, endAddr = 0L;
+            if (!"alphabetic".equals(selectedMethod)) {
+                Long[] addrArray = {startAddr, endAddr};
+                if (!validAddressNumbers(startValueString, endValueString, addrArray)) {
+                    return false;
+                }
+                startAddr = addrArray[0];
+                endAddr = addrArray[1];
+            }
+
+            String errorMessage = "";
+            switch (selectedMethod) {
+                case "odd":
+                    if (isEven(startAddr) || isEven(endAddr)) {
+                        errorMessage = tr("Expected odd numbers for addresses");
+                    }
+                    break;
+                case "even":
+                    if (!isEven(startAddr) || !isEven(endAddr)) {
+                        errorMessage = tr("Expected even numbers for addresses");
+                    }
+                    break;
+                case "alphabetic":
+                    errorMessage = validateAlphaAddress(startValueString, endValueString);
+                    break;
+                case "Numeric":
+                    if (!validNumericIncrementString(incrementString, startAddr, endAddr)) {
+                        errorMessage = tr("Expected valid number for increment");
+                    }
+                    break;
+                case "all":
+                default:
+                    // Fall through
+            }
+            if (!"".equals(errorMessage)) {
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), errorMessage, tr("Error"), JOptionPane.ERROR_MESSAGE);
+                return false;
+            }
+        }
+
+        if (country != null && country.length() != 2) {
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
+                    tr("Country code must be 2 letters"), tr("Error"), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+
+        // Entries are valid ... save in map
+
+        commandGroup = new LinkedList<>();
+
+        String streetName = selectedStreet.get("name");
+        DataSet currentDataSet = MainApplication.getLayerManager().getEditDataSet();
+
+        if (addrInterpolationWay != null) {
+
+            Node firstNode = addrInterpolationWay.getNode(0);
+            Node lastNode = addrInterpolationWay.getNode(addrInterpolationWay.getNodesCount()-1);
+
+            // De-select address interpolation way; leave street selected
+            currentDataSet.clearSelection(addrInterpolationWay);
+            currentDataSet.clearSelection(lastNode);  // Workaround for JOSM Bug #3838
+
+            String interpolationTagValue = selectedMethod;
+            if ("Numeric".equals(selectedMethod)) {
+                // The interpolation method is the number for 'Numeric' case
+                interpolationTagValue = incrementString;
+            }
+
+            if (cbConvertToHouseNumbers.getState()) {
+                // Convert way to house numbers is checked.
+                //  Create individual nodes and delete interpolation way
+                convertWayToHousenumbers(selectedMethod, startValueString, endValueString, incrementString);
+            } else {
+                // Address interpolation way will remain
+                commandGroup.add(new ChangePropertyCommand(addrInterpolationWay, "addr:interpolation", interpolationTagValue));
+                commandGroup.add(new ChangePropertyCommand(addrInterpolationWay, "addr:inclusion", getInclusionMethod()));
+            }
+
+            commandGroup.add(new ChangePropertyCommand(firstNode, "addr:housenumber", startValueString));
+            commandGroup.add(new ChangePropertyCommand(lastNode, "addr:housenumber", endValueString));
+            // Add address interpolation house number nodes to main house number node list for common processing
+            houseNumberNodes.add(firstNode);
+            houseNumberNodes.add(lastNode);
+
+        }
+
+        if (streetRelationButton.isSelected()) {
+
+            // Relation button was selected
+            if (associatedStreetRelation == null) {
+                createRelation(currentDataSet, streetName);
+                // relationChanged = true;   (not changed since it was created)
+            }
+            // Make any additional changes only to the copy
+            editedRelation = new Relation(associatedStreetRelation);
+
+            if (addrInterpolationWay != null) {
+                addToRelation(associatedStreetRelation, addrInterpolationWay, "house");
+            }
+        }
+
+        // For all nodes, add to relation and
+        //   Add optional text fields to all nodes if specified
+        for (Node node : houseNumberNodes) {
+
+            if (streetRelationButton.isSelected()) {
+                addToRelation(associatedStreetRelation, node, "house");
+            }
+            Map<String, String> tags = new HashMap<>();
+            if (city != null || streetNameButton.isSelected()) {
+                // Include street unconditionally if adding nodes only or city name specified
+                tags.put("addr:street", streetName);
+            }
+            // Set or remove remaining optional fields
+            tags.put("addr:city", city);
+            tags.put("addr:state", state);
+            tags.put("addr:postcode", postCode);
+            tags.put("addr:country", country);
+            tags.put("addr:full", fullAddress);
+            commandGroup.add(new ChangePropertyCommand(currentDataSet, Collections.singleton(node), tags));
+        }
+
+        if (relationChanged) {
+            commandGroup.add(new ChangeCommand(currentDataSet, associatedStreetRelation, editedRelation));
+        }
+
+        if (!commandGroup.isEmpty()) {
+            UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Address Interpolation"), commandGroup));
+            MainApplication.getLayerManager().getEditLayer().invalidate();
+        }
+
+        return true;
+    }
+
+    private static boolean validNumericIncrementString(String incrementString, long startingAddr, long endingAddr) {
+
+        if (!isLong(incrementString)) {
+            return false;
+        }
+        long testIncrement = Long.parseLong(incrementString);
+        if ((testIncrement <= 0) || (testIncrement > endingAddr)) {
+            return false;
+        }
+
+        return ((endingAddr - startingAddr) % testIncrement) == 0;
+    }
+
+    // Create Associated Street relation, add street, and add to list of commands to perform
+    private void createRelation(DataSet currentDataSet, String streetName) {
+        associatedStreetRelation = new Relation();
+        associatedStreetRelation.put("name", streetName);
+        associatedStreetRelation.put("type", "associatedStreet");
+        RelationMember newStreetMember = new RelationMember("street", selectedStreet);
+        associatedStreetRelation.addMember(newStreetMember);
+        commandGroup.add(new AddCommand(currentDataSet, associatedStreetRelation));
+    }
+
+    // Read from dialog text box, removing leading and trailing spaces
+    // Return the string, or null for a zero length string
+    private static String readTextField(JTextField field) {
+        String value = field.getText();
+        if (value != null) {
+            value = value.trim();
+            if ("".equals(value)) {
+                value = null;
+            }
+        }
+        return value;
+    }
+
+    // Test if relation contains specified member
+    //   If not already present, it is added
+    private void addToRelation(Relation relation, OsmPrimitive testMember, String role) {
+        boolean isFound = false;
+        for (RelationMember relationMember : relation.getMembers()) {
+
+            if (testMember == relationMember.getMember()) {
+                isFound = true;
+                break;
+            }
+        }
+
+        if (!isFound) {
+            RelationMember newMember = new RelationMember(role, testMember);
+            editedRelation.addMember(newMember);
+
+            relationChanged = true;
+        }
+    }
+
+    // Check alphabetic style address
+    //   Last character of both must be alpha
+    //   Last character of ending must be greater than starting
+    //   Return empty error message if OK
+    private static String validateAlphaAddress(String startValueString,
+                                        String endValueString) {
+        String errorMessage = "";
+
+        if ("".equals(startValueString) || "".equals(endValueString)) {
+            errorMessage = tr("Please enter valid number for starting and ending address");
+        } else {
+            char startingChar = lastChar(startValueString);
+            char endingChar = lastChar(endValueString);
+
+
+            boolean isOk = false;
+            if (isNumeric("" + startingChar) && !isNumeric("" + endingChar)) {
+                endingChar = Character.toUpperCase(endingChar);
+                if ((endingChar >= 'A') && (endingChar <= 'Z')) {
+                    // First is a number, last is Latin alpha
+                    isOk = true;
+                }
+            } else if (!isNumeric("" + startingChar) && !isNumeric("" + endingChar)) {
+                // Both are alpha
+                isOk = true;
+            }
+            if (!isOk) {
+                errorMessage = tr("Alphabetic address must end with a letter");
+            }
+
+            // if a number is included, validate that it is the same number
+            if (endValueString.length() > 1) {
+
+                // Get number portion of first item: may or may not have letter suffix
+                String numStart = baseAlpha(startValueString);
+                if (isNumeric(startValueString)) {
+                    numStart = startValueString;
+                }
+
+                String numEnd = baseAlpha(endValueString);
+                if (!numStart.equals(numEnd)) {
+                    errorMessage = tr("Starting and ending numbers must be the same for alphabetic addresses");
+                }
+            }
+
+            // ?? Character collation in all languages ??
+            if (startingChar >= endingChar) {
+                errorMessage = tr("Starting address letter must be less than ending address letter");
+            }
+        }
+
+        return errorMessage;
+    }
+
+    // Convert string addresses to numeric, with error check
+    private static boolean validAddressNumbers(String startValueString,
+                                        String endValueString, Long[] addrArray) {
+        String errorMessage = "";
+
+        if (!isLong(startValueString)) {
+            errorMessage = tr("Please enter valid number for starting address");
+        }
+        if (!isLong(endValueString)) {
+            errorMessage = tr("Please enter valid number for ending address");
+        }
+        if ("".equals(errorMessage)) {
+            addrArray[0] = Long.parseLong(startValueString);
+            addrArray[1] = Long.parseLong(endValueString);
+
+            if (addrArray[1] <= addrArray[0]) {
+                errorMessage = tr("Starting address number must be less than ending address number");
+            }
+        }
+
+        if ("".equals(errorMessage)) {
+            return true;
+
+        } else {
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), errorMessage, tr("Error"), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+    }
+
+    private String getInterpolationMethod() {
+        int selectedIndex = addrInterpolationList.getSelectedIndex();
+        return addrInterpolationTags[selectedIndex];
+    }
+
+    private String getInclusionMethod() {
+        int selectedIndex = addrInclusionList.getSelectedIndex();
+        lastAccuracyIndex = selectedIndex;
+        return addrInclusionTags[selectedIndex];
+    }
+}
Index: /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationPlugin.java
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationPlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationPlugin.java	(revision 36424)
@@ -0,0 +1,22 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.AddrInterpolation;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginInformation;
+
+/**
+ * Address Interpolation plugin
+ */
+public class AddrInterpolationPlugin extends Plugin {
+
+    /**
+     * constructor
+     * @param info plugin information
+     */
+    public AddrInterpolationPlugin(PluginInformation info) {
+        super(info);
+        MainMenu.add(MainApplication.getMenu().dataMenu, new AddrInterpolationAction(), false, 0);
+    }
+}
Index: /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/EscapeDialog.java
===================================================================
--- /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/EscapeDialog.java	(revision 36424)
+++ /applications/editors/josm/plugins/AddrInterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/EscapeDialog.java	(revision 36424)
@@ -0,0 +1,28 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.AddrInterpolation;
+
+import java.awt.Frame;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JRootPane;
+import javax.swing.KeyStroke;
+
+public class EscapeDialog extends JDialog {
+    
+    public EscapeDialog(Frame owner, String title, boolean modal) {
+        super(owner, title, modal);
+    }
+    
+    @Override
+    protected JRootPane createRootPane() {
+        ActionListener escapeActionListener = actionEvent -> dispose();
+        JRootPane rootPane = new JRootPane();
+        KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
+        rootPane.registerKeyboardAction(escapeActionListener, stroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+
+        return rootPane;
+    }
+}
Index: /applications/editors/josm/plugins/ImageIO/LICENSE
===================================================================
--- /applications/editors/josm/plugins/ImageIO/LICENSE	(revision 36424)
+++ /applications/editors/josm/plugins/ImageIO/LICENSE	(revision 36424)
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/ImageIO/README.md
===================================================================
--- /applications/editors/josm/plugins/ImageIO/README.md	(revision 36424)
+++ /applications/editors/josm/plugins/ImageIO/README.md	(revision 36424)
@@ -0,0 +1,17 @@
+README 
+======
+
+# Usage
+1. Install the plugin
+2. Go to JOSM Preferences -> `Imagery` -> `ImageIO`
+3. Enable the additional image formats you want JOSM to read
+
+Right now, ImageIO plugins should be updated if you go to the ImageIO plugin page (in `Imagery`).
+
+# Plugin Information
+## License
+GPL v2 or any later version
+
+# Authors
+* Taylor Smock (taylor.smock)
+
Index: /applications/editors/josm/plugins/ImageIO/build.xml
===================================================================
--- /applications/editors/josm/plugins/ImageIO/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/ImageIO/build.xml	(revision 36424)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="ImageIO" default="dist" basedir=".">
+    <property name="plugin.src.dir" value="src/main/java"/>
+    <property name="plugin.test.dir" location="src/test/java"/>
+    <property name="plugin.resources.dir" value="src/main/resources"/>
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="Commit message"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="18877"/>
+
+    <property name="plugin.author" value="Taylor Smock"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.imageio.ImageIOPlugin"/>
+    <property name="plugin.description" value="Enable additional image types such as webp (each image type must be enabled in preferences)"/>
+    <!--<property name="plugin.icon" value=""/>-->
+    <!--<property name="plugin.link" value=""/>-->
+    <property name="plugin.canloadatruntime" value="true"/>
+    <property name="plugin.minimum.java.version" value="17"/>
+    <property name="java.lang.version" value="17"/>
+
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>
+</project>
Index: /applications/editors/josm/plugins/ImageIO/pom.xml
===================================================================
--- /applications/editors/josm/plugins/ImageIO/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/ImageIO/pom.xml	(revision 36424)
@@ -0,0 +1,46 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>imageio</artifactId>
+
+    <developers>
+        <developer>
+            <id>taylor.smock</id>
+            <name>Taylor Smock</name>
+            <email>tsmock@meta.com</email>
+        </developer>
+    </developers>
+    <properties>
+        <plugin.src.dir>src/main/java</plugin.src.dir>
+        <plugin.test.dir>src/test/java</plugin.test.dir>
+        <plugin.resources.dir>src/main/resources</plugin.resources.dir>
+        <plugin.main.version>18877</plugin.main.version>
+
+        <plugin.author>Taylor Smock</plugin.author>
+        <plugin.class>org.openstreetmap.josm.plugins.imageio.ImageIOPlugin</plugin.class>
+        <plugin.description>Enable additional image types such as webp (each image type must be enabled in preferences)</plugin.description>
+        <plugin.canloadatruntime>true</plugin.canloadatruntime>
+        <java.lang.version>17</java.lang.version>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Minimum-Java-Version>${java.lang.version}</Plugin-Minimum-Java-Version>
+                            <Plugin-Canloadatruntime>${plugin.canloadatruntime}</Plugin-Canloadatruntime>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/Artifact.java
===================================================================
--- /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/Artifact.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/Artifact.java	(revision 36424)
@@ -0,0 +1,91 @@
+// License: GPL. For details, see LICENSE file.
+// SPDX-License-Identifier: GPL-2.0-or-later
+package org.openstreetmap.josm.plugins.imageio;
+
+import org.openstreetmap.josm.spi.preferences.Config;
+
+import jakarta.annotation.Nullable;
+
+/**
+ * An artifact from Maven
+ * @param group The artifact group
+ * @param artifact The artifact to get
+ * @param version The artifact version, may be {@code null}, in which case the latest version should be used
+ */
+record Artifact(String group, String artifact, @Nullable String version) implements Comparable<Artifact> {
+
+    /**
+     * Get the name of the jar file that will be saved to disk
+     * @return The jar name
+     */
+    public String getLocalName() {
+        if (version() == null) {
+            return group() + '.' + artifact();
+        }
+        return group() + '.' + artifact() + '-' + version() + ".jar";
+    }
+
+    /**
+     * Get the jar URL for this artifact
+     * @return The jar url
+     */
+    public String jar() {
+        if (version == null) {
+            throw new IllegalStateException("jar cannot be called when no version is set");
+        }
+        return getBaseUrl() + ".jar";
+    }
+
+    /**
+     * Get the pom for this artifact
+     * @return The pom
+     */
+    public String pom() {
+        if (version == null) {
+            throw new IllegalStateException("pom cannot be called when no version is set");
+        }
+        return getBaseUrl() + ".pom";
+    }
+
+    /**
+     * Get the URL for additional versions of the artifact
+     * @return The version URL
+     */
+    public String versions() {
+        return baseUrl() + dotGroup() + '/' + artifact() + "/maven-metadata.xml";
+    }
+
+    private String getBaseUrl() {
+        final var dotGroup = dotGroup();
+        return baseUrl() + dotGroup + '/' + artifact() + '/' + version() + '/' + artifact() + '-' + version();
+    }
+
+    private String baseUrl() {
+        return Config.getPref().get("imageio.nexus.url", "https://josm.openstreetmap.de/nexus/service/local/repositories/central/content/");
+    }
+
+    private String dotGroup() {
+        return group().replace(".", "/");
+    }
+
+    @Override
+    public int compareTo(Artifact o) {
+        final int gComp = group.compareTo(o.group);
+        if (gComp != 0) {
+            return gComp;
+        }
+        final int aComp = artifact.compareTo(o.artifact);
+        if (aComp != 0) {
+            return aComp;
+        }
+        if (version == null && o.version == null) {
+            return 0;
+        }
+        if (version == null) {
+            return -1;
+        } else if (o.version == null) {
+            return 1;
+        }
+        return version.compareTo(o.version);
+    }
+}
Index: /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/ImageIOPlugin.java
===================================================================
--- /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/ImageIOPlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/ImageIOPlugin.java	(revision 36424)
@@ -0,0 +1,91 @@
+// License: GPL. For details, see LICENSE file.
+// SPDX-License-Identifier: GPL-2.0-or-later
+package org.openstreetmap.josm.plugins.imageio;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginHandler;
+import org.openstreetmap.josm.plugins.PluginInformation;
+import org.openstreetmap.josm.spi.preferences.Config;
+
+import javax.imageio.ImageIO;
+import java.io.UncheckedIOException;
+import java.net.MalformedURLException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.TreeSet;
+
+/**
+ * The entry point for the plugin
+ */
+public final class ImageIOPlugin extends Plugin {
+    /** Used to check and see if we have ensured that the ImageIO plugins have been initialized */
+    private static boolean initialized;
+
+    /**
+     * Creates the plugin
+     *
+     * @param info the plugin information describing the plugin.
+     */
+    public ImageIOPlugin(PluginInformation info) {
+        super(info);
+        initialize(false);
+        MainApplication.worker.submit(() -> NexusDownloader.setDownloadDirectory(this.getPluginDirs().getCacheDirectory(true)));
+    }
+
+    @Override
+    public PreferenceSetting getPreferenceSetting() {
+        initialize(false);
+        return new ImageIOPreferenceSetting(() -> this.initialize(true));
+    }
+
+    @Override
+    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+        initialize(false);
+        super.mapFrameInitialized(oldFrame, newFrame);
+    }
+
+    synchronized void initialize(boolean force) {
+        // This is why we cannot do the initialization in the constructor; it currently returns null until
+        // after the constructor is finished.
+        final var pluginLoader = PluginHandler.getPluginClassLoader(getPluginInformation().getName());
+        if ((!initialized || force) && pluginLoader != null && !Config.getPref().getList("imageio.classpath").isEmpty()) {
+            final var urlList = Arrays.asList(pluginLoader.getURLs());
+            final var loaded = new TreeSet<>(Config.getPref().getList("imageio.classpath"));
+            final var missing = new TreeSet<String>();
+            for (String classPath : loaded) {
+                final var path = Path.of(classPath);
+                if (!Files.isRegularFile(path)) {
+                    missing.add(classPath);
+                    continue;
+                }
+                try {
+                    final var url = path.toUri().toURL();
+                    if (!urlList.contains(url)) {
+                        pluginLoader.addURL(url);
+                    }
+                } catch (MalformedURLException e) {
+                    Config.getPref().put("imageio.classpath", null); // Reset since someone probably borked their config
+                    throw new UncheckedIOException(e);
+                }
+            }
+            if (!missing.isEmpty()) {
+                loaded.removeAll(missing);
+                Config.getPref().putList("imageio.classpath", new ArrayList<>(loaded));
+            }
+            final var currentLoader = Thread.currentThread().getContextClassLoader();
+
+            try {
+                Thread.currentThread().setContextClassLoader(pluginLoader);
+                ImageIO.scanForPlugins();
+            } finally {
+                Thread.currentThread().setContextClassLoader(currentLoader);
+            }
+            initialized = true;
+        }
+    }
+}
Index: /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/ImageIOPreferenceSetting.java
===================================================================
--- /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/ImageIOPreferenceSetting.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/ImageIOPreferenceSetting.java	(revision 36424)
@@ -0,0 +1,97 @@
+// License: GPL. For details, see LICENSE file.
+// SPDX-License-Identifier: GPL-2.0-or-later
+package org.openstreetmap.josm.plugins.imageio;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
+import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
+import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.tools.GBC;
+
+import javax.imageio.ImageIO;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
+import java.awt.GridBagLayout;
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.TreeSet;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+/**
+ * The preferences class for the {@link ImageIOPlugin}
+ */
+final class ImageIOPreferenceSetting implements SubPreferenceSetting {
+    private final Set<Artifact> imagePlugins = new TreeSet<>();
+    private final Runnable callback;
+
+    ImageIOPreferenceSetting(Runnable callback) {
+        this.callback = callback;
+    }
+
+    @Override
+    public void addGui(PreferenceTabbedPane gui) {
+        final var panel = new JPanel(new GridBagLayout());
+        panel.add(new JLabel("<html><h4>" +
+                        tr("Enable or disable additional image formats. Disabling an image format requires a restart.")
+                + "</h4></html>"),
+                GBC.eol().anchor(GBC.PAGE_START).insets(5, 5, 5, 5).fill(GBC.HORIZONTAL));
+        panel.add(new JSeparator(JSeparator.HORIZONTAL), GBC.eol());
+        final var checkboxes = new JPanel(new GridBagLayout());
+        panel.add(new JScrollPane(checkboxes), GBC.eol().fill(GBC.BOTH));
+        addWebPPanel(checkboxes);
+        // Used to force the panel to put the checkboxes at the top of the screen.
+        // There is probably a better way, but I don't know it off the top of my head.
+        checkboxes.add(new JLabel(""), GBC.eol().fill(GBC.BOTH));
+
+        getTabPreferenceSetting(gui).addSubTab(this, tr("ImageIO"), panel);
+    }
+
+    private void addWebPPanel(JPanel panel) {
+        final var webp = new Artifact("com.twelvemonkeys.imageio", "imageio-webp", null);
+        final var webpCheck = new JCheckBox(tr("webp (recommended, implementation provided by TwelveMonkeys, BSD-3-Clause)"));
+        final var webpIterator = ImageIO.getImageReadersByFormatName("WEBP");
+        webpCheck.setSelected(webpIterator.hasNext()
+                && "com.twelvemonkeys.imageio.plugins.webp.WebPImageReader"
+                    .equals(webpIterator.next().getClass().getCanonicalName()));
+        if (webpCheck.isSelected()) {
+            imagePlugins.add(webp);
+        }
+        webpCheck.addActionListener(l -> {
+            if (webpCheck.isSelected()) {
+                imagePlugins.add(webp);
+            } else {
+                imagePlugins.remove(webp);
+            }
+        });
+        panel.add(webpCheck, GBC.eol().anchor(GBC.PAGE_START));
+    }
+
+    @Override
+    public boolean ok() {
+        final var classPath = new TreeSet<String>();
+        for (var artifact : imagePlugins) {
+            classPath.addAll(NexusDownloader.download(artifact));
+        }
+        final var oldConfig = new TreeSet<>(Config.getPref().getList("imageio.classpath"));
+        if (Config.getPref().putList("imageio.classpath", new ArrayList<>(classPath))) {
+            MainApplication.worker.execute(this.callback);
+        }
+        // If the user removed an ImageIO plugin, they need to restart to actually remove it.
+        return !classPath.containsAll(oldConfig);
+    }
+
+    @Override
+    public boolean isExpert() {
+        return false;
+    }
+
+    @Override
+    public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) {
+        return gui.getImageryPreference();
+    }
+}
Index: /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/NexusDownloader.java
===================================================================
--- /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/NexusDownloader.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageIO/src/main/java/org/openstreetmap/josm/plugins/imageio/NexusDownloader.java	(revision 36424)
@@ -0,0 +1,325 @@
+// License: GPL. For details, see LICENSE file.
+// SPDX-License-Identifier: GPL-2.0-or-later
+package org.openstreetmap.josm.plugins.imageio;
+
+import org.apache.commons.jcs3.access.CacheAccess;
+import org.openstreetmap.josm.data.cache.JCSCacheManager;
+import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.XmlUtils;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
+import java.security.DigestInputStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * Download files from JOSM nexus
+ */
+final class NexusDownloader {
+    private record ResponseHeader(String etag, long size, long lastModified) {}
+    private NexusDownloader() {
+        // Hide constructor
+    }
+
+    private static final CacheAccess<String, ResponseHeader> CACHED_RESPONSES_HEAD = JCSCacheManager.getCache("imageio.maven.head",
+            100, 0, null);
+    private static final CacheAccess<String, String> CACHED_RESPONSES_GET = JCSCacheManager.getCache("imageio.maven.get",
+            100, 0, null);
+
+    static {
+        CACHED_RESPONSES_GET.getDefaultElementAttributes()
+                .setMaxLife(TimeUnit.SECONDS.toMillis(Config.getPref().getLong("mirror.maxtime", TimeUnit.DAYS.toSeconds(7))));
+    }
+
+    private static Path cacheDirectory;
+
+    /**
+     * Set the download directory for the files
+     * @param cacheDirectory The directory to use
+     */
+    static void setDownloadDirectory(File cacheDirectory) {
+        if (NexusDownloader.cacheDirectory != null) {
+            throw new IllegalStateException("setDownloadDirectory can only be called once!");
+        }
+        NexusDownloader.cacheDirectory = cacheDirectory.getAbsoluteFile().toPath();
+    }
+
+    /**
+     * Download a maven artifact
+     * @param artifact The artifact to download
+     * @return A set of jars to add to the classpath
+     */
+    static Set<String> download(Artifact artifact) {
+        try {
+            if (artifact.version() == null) {
+                artifact = getLatest(artifact);
+            }
+            return new TreeSet<>(getDependencies(artifact))
+                    .stream().map(NexusDownloader::realDownload)
+                    .collect(Collectors.toCollection(TreeSet::new));
+        } catch (IOException e) {
+            throw new JosmRuntimeException(e);
+        }
+    }
+
+    private static String realDownload(Artifact artifact) {
+        final Path output;
+        try {
+            if (artifact.version() == null) {
+                artifact = getLatest(artifact);
+            }
+            final var baseName = artifact.group() + '.' + artifact.artifact();
+            output = NexusDownloader.cacheDirectory.resolve(artifact.getLocalName());
+
+            // Check if the file is already downloaded
+            final var jarUrl = URI.create(artifact.jar()).toURL();
+            final var head = CACHED_RESPONSES_HEAD.get(artifact.jar(), () -> {
+                final var client = HttpClient.create(jarUrl, "HEAD");
+                try {
+                    final var response = client.connect();
+                    return new ResponseHeader(response.getHeaderField("ETag"), response.getContentLength(), response.getLastModified());
+                } catch (IOException e) {
+                    // We cannot put null in the cache
+                    throw new UncheckedIOException(e);
+                } finally {
+                    client.disconnect();
+                }
+            });
+            final var alreadyDownloaded = Files.exists(output) && head.size() == Files.size(output)
+                    && Files.getLastModifiedTime(output).toMillis() == head.lastModified()
+                    && checkETag(output, head.etag());
+
+            if (!alreadyDownloaded) {
+                final var client = HttpClient.create(jarUrl);
+                final var response = client.connect();
+                try (var writer = Files.newOutputStream(output)) {
+                    var is = response.getContent();
+                    is.transferTo(writer);
+                    Files.setLastModifiedTime(output, FileTime.fromMillis(response.getLastModified()));
+                }
+                client.disconnect();
+            }
+            // Now we can delete "old" versions of the artifact
+            try (var files = Files.walk(NexusDownloader.cacheDirectory)) {
+                    files.filter(path -> path.startsWith(baseName) && !path.equals(output))
+                        .filter(Files::isWritable)
+                        .filter(Files::isRegularFile)
+                        .forEach(path -> {
+                            try {
+                                Files.deleteIfExists(path);
+                            } catch (IOException e) {
+                                throw new UncheckedIOException(e);
+                            }
+                        });
+            }
+        } catch (IOException exception) {
+            throw new JosmRuntimeException(exception);
+        }
+        return output.toString();
+    }
+
+    /**
+     * If the etag matches a well-known hash pattern, check that the file content matches
+     * @param path The path to hash
+     * @param etag The ETag to check the path against
+     * @return {@code true} if the ETag is not a well-known hash pattern <i>or</i> the file matches the expected hash.
+     */
+    private static boolean checkETag(Path path, String etag) {
+        final MessageDigest md;
+        final String expected;
+        if (etag.startsWith("\"") && etag.endsWith("\"")) {
+            etag = etag.substring(1, etag.length() - 1);
+        }
+        if (etag.startsWith("{SHA1{")) {
+            try {
+                md = MessageDigest.getInstance("SHA-1");
+                expected = etag.substring("{SHA1{".length(), etag.length() - 2);
+            } catch (NoSuchAlgorithmException e) {
+                // Realistically, we shouldn't hit this. But if we do, maybe SHA1 has been removed, and hopefully
+                // etags use something else.
+                throw new JosmRuntimeException(e);
+            }
+        } else {
+            return true;
+        }
+        try (var is = Files.newInputStream(path);
+             var dis = new DigestInputStream(is, md)) {
+            final var tByte = new byte[4096];
+            while (dis.readNBytes(tByte, 0, tByte.length) > 0) {
+                // We need to read the bytes...
+            }
+        } catch (IOException e) {
+            Logging.error(e);
+            return false; // Assume that the file is corrupted
+        }
+        return expected.equals(Utils.toHexString(md.digest()));
+    }
+
+    /**
+     * Get the dependencies from a pom
+     * @param artifact The artifact to use
+     * @return The jars to add to the classpath
+     * @throws MalformedURLException if the pom string is not a valid URL
+     * @throws IOException if there is a read error
+     */
+    private static Set<Artifact> getDependencies(Artifact artifact) throws IOException {
+        final var url = URI.create(artifact.pom()).toURL();
+        final var text = CACHED_RESPONSES_GET.get(artifact.pom(), () -> {
+            final var client = HttpClient.create(url);
+            try {
+                return client.connect().fetchContent();
+            } catch (IOException e) {
+                throw new UncheckedIOException(e);
+            } finally {
+                client.disconnect();
+            }
+        });
+        try (var is = new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8))) {
+            var handler = new MavenDependenciesHandler();
+            XmlUtils.newSafeSAXParser().parse(is, handler);
+            final var dependencies = new TreeSet<>(handler.dependencies);
+            dependencies.add(artifact);
+            for (var dependency : handler.dependencies) {
+                if (dependency.version() == null) {
+                    dependency = getLatest(dependency);
+                }
+                dependencies.addAll(getDependencies(dependency));
+            }
+            return dependencies;
+        } catch (ParserConfigurationException | SAXException e) {
+            throw new JosmRuntimeException(e);
+        }
+    }
+
+    private static Artifact getLatest(Artifact artifact) throws IOException {
+        final var url = URI.create(artifact.versions()).toURL();
+        final var text = CACHED_RESPONSES_GET.get(artifact.versions(), () -> {
+            final var client = HttpClient.create(url);
+            try {
+                return client.connect().fetchContent();
+            } catch (IOException e) {
+                throw new UncheckedIOException(e);
+            } finally {
+                client.disconnect();
+            }
+        });
+        try (var is = new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8))) {
+            final var handler = new MavenMetadataHandler();
+            XmlUtils.newSafeSAXParser().parse(is, handler);
+            final var version = Utils.firstNotEmptyString(handler.release, handler.latest,
+                    handler.versions.stream()
+                            .filter(v -> !v.contains("rc") && !v.contains("b"))
+                            .findFirst().orElse(artifact.version()));
+            return new Artifact(artifact.group(), artifact.artifact(), version);
+        } catch (ParserConfigurationException | SAXException e) {
+            throw new JosmRuntimeException(e);
+        }
+    }
+
+    private static class MavenMetadataHandler extends DefaultHandler {
+        private final StringBuilder characters = new StringBuilder();
+        private final List<String> versions = new ArrayList<>();
+        private String latest;
+        private String release;
+
+        @Override
+        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+            super.startElement(uri, localName, qName, attributes);
+            this.characters.setLength(0);
+        }
+
+        @Override
+        public void endElement(String uri, String localName, String qName) throws SAXException {
+            if ("latest".equals(qName)) {
+                this.latest = this.characters.toString();
+            } else if ("release".equals(qName)) {
+                this.release = this.characters.toString();
+            } else if ("version".equals(qName)) {
+                this.versions.add(this.characters.toString());
+            }
+        }
+
+        @Override
+        public void characters(char[] ch, int start, int length) throws SAXException {
+            super.characters(ch, start, length);
+            this.characters.append(ch, start, length);
+        }
+    }
+
+    private static class MavenDependenciesHandler extends DefaultHandler {
+        private final List<Artifact> dependencies = new ArrayList<>();
+        private final StringBuilder characters = new StringBuilder();
+        private Artifact parent;
+        private String groupId;
+        private String artifactId;
+        private String version;
+        private String type;
+        private String scope;
+        @Override
+        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+            super.startElement(uri, localName, qName, attributes);
+            this.characters.setLength(0);
+            if ("dependency".equals(qName) || "parent".equals(qName)) {
+                this.groupId = null;
+                this.artifactId = null;
+                this.version = null;
+                this.type = null;
+                this.scope = null;
+            }
+        }
+
+        @Override
+        public void endElement(String uri, String localName, String qName) throws SAXException {
+            super.endElement(uri, localName, qName);
+            if ("parent".equals(qName) && groupId != null && artifactId != null) {
+                this.parent = new Artifact(groupId, artifactId, version);
+            } else if ("dependency".equals(qName) && groupId != null && artifactId != null) {
+                if (!"test-jar".equals(this.type) && !"test".equals(this.scope) && !"provided".equals(this.scope)) {
+                    dependencies.add(new Artifact(groupId, artifactId, version));
+                }
+            } else if ("groupId".equals(qName)) {
+                this.groupId = this.characters.toString();
+                if ("${project.groupId}".equals(this.groupId)) {
+                    this.groupId = this.parent.group();
+                }
+            } else if ("artifactId".equals(qName)) {
+                this.artifactId = this.characters.toString();
+            } else if ("version".equals(qName)) {
+                this.version = this.characters.toString();
+            } else if ("type".equals(qName)) {
+                this.type = this.characters.toString();
+            } else if ("scope".equals(qName)) {
+                this.scope = this.characters.toString();
+            }
+        }
+
+        @Override
+        public void characters(char[] ch, int start, int length) throws SAXException {
+            super.characters(ch, start, length);
+            this.characters.append(ch, start, length);
+        }
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/.checkstyle
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/.checkstyle	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/.checkstyle	(revision 36424)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="JOSM" location="/JOSM/tools/checkstyle/josm_checks.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="JOSM" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="DerivedFiles" enabled="true"/>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value=".svn"/>
+    <filter-data value="data"/>
+    <filter-data value="images"/>
+    <filter-data value="resources"/>
+    <filter-data value="styles"/>
+    <filter-data value="scripts"/>
+  </filter>
+</fileset-config>
Index: /applications/editors/josm/plugins/ImageWayPoint/build.xml
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/build.xml	(revision 36424)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="ImageWayPoint" default="dist" basedir=".">
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="[josm/ImageWayPoint] move opening to File/Open"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+    
+    <!-- Configure these properties (replace "..." accordingly).
+         See https://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
+    -->
+    <property name="plugin.author" value="Flint"/>
+    <property name="plugin.class" value="org.insignificant.josm.plugins.imagewaypoint.ImageWayPointPlugin"/>
+    <property name="plugin.description" value="Another plugin to match images to the waypoints in a GPX file. A match is made when the ''name'', ''cmt'' or ''desc'' attribute of a waypoint tag matches the filename of an image."/>
+    <property name="plugin.icon" value="images/dialogs/imagewaypoint.png"/>
+    <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/JOSM/Plugins/ImageWayPoint"/>
+
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>
+</project>
Index: /applications/editors/josm/plugins/ImageWayPoint/pom.xml
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/pom.xml	(revision 36424)
@@ -0,0 +1,42 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>imagewaypoint</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Flint</name>
+        </developer>
+    </developers>
+    <properties>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+        <plugin.author>Flint</plugin.author>
+        <plugin.class>org.insignificant.josm.plugins.imagewaypoint.ImageWayPointPlugin</plugin.class>
+        <plugin.description>Another plugin to match images to the waypoints in a GPX file. A match is made when the ''name'', ''cmt'' or ''desc'' attribute of a waypoint tag matches the filename of an image.</plugin.description>
+        <plugin.icon>images/dialogs/imagewaypoint.png</plugin.icon>
+        <plugin.link>https://wiki.openstreetmap.org/wiki/JOSM/Plugins/ImageWayPoint</plugin.link>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/IImageChangeListener.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/IImageChangeListener.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/IImageChangeListener.java	(revision 36424)
@@ -0,0 +1,8 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint;
+
+public interface IImageChangeListener {
+    void onAvailableImageEntriesChanged(ImageEntries entries);
+
+    void onSelectedImageEntryChanged(ImageEntries entries);
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageChangeListener.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageChangeListener.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageChangeListener.java	(revision 36424)
@@ -0,0 +1,24 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint;
+
+final class ImageChangeListener implements
+    IImageChangeListener {
+    private final ImageWayPointDialog dialog;
+
+    ImageChangeListener(final ImageWayPointDialog dialog) {
+        this.dialog = dialog;
+    }
+
+    @Override
+    public void onAvailableImageEntriesChanged(
+        final ImageEntries entries) {
+        this.dialog.imageDisplay.setImage(entries.getCurrentImage());
+        this.dialog.updateGUI();
+    }
+
+    @Override
+    public void onSelectedImageEntryChanged(final ImageEntries entries) {
+        this.dialog.imageDisplay.setImage(entries.getCurrentImage());
+        this.dialog.updateGUI();
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageComponent.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageComponent.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageComponent.java	(revision 36424)
@@ -0,0 +1,64 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Image;
+
+import javax.swing.JComponent;
+
+final class ImageComponent extends JComponent {
+    private static final long serialVersionUID = -5207198660736375133L;
+
+    private Image image;
+
+    ImageComponent() {
+        this.image = null;
+    }
+
+    @Override
+    public void paint(final Graphics g) {
+        if (null == this.image || 0 >= this.image.getWidth(null)
+            || 0 >= this.image.getHeight(null)) {
+        g.setColor(Color.white);
+        g.fillRect(0, 0, this.getSize().width, this.getSize().height);
+        } else {
+        final int maxWidth = this.getSize().width;
+        final int maxHeight = this.getSize().height;
+        final int imageWidth = this.image.getWidth(null);
+        final int imageHeight = this.image.getHeight(null);
+
+        final double aspect = 1.0 * imageWidth / imageHeight;
+
+        // what's the width if the height is 100%?
+        final int widthIfHeightIsMax = (int) (aspect * maxHeight);
+
+        // now find the real width and height
+        final int resizedWidth;
+        final int resizedHeight;
+        if (widthIfHeightIsMax > maxWidth) {
+            // oops - burst the width - so width should be the max, and
+            // work out the resulting height
+            resizedWidth = maxWidth;
+            resizedHeight = (int) (resizedWidth / aspect);
+        } else {
+            // that'll do...
+            resizedWidth = widthIfHeightIsMax;
+            resizedHeight = maxHeight;
+        }
+
+        g.drawImage(this.image,
+            (maxWidth - resizedWidth) / 2,
+            (maxHeight - resizedHeight) / 2,
+            resizedWidth,
+            resizedHeight,
+            Color.black,
+            null);
+        }
+    }
+
+    public void setImage(final Image image) {
+        this.image = image;
+        this.repaint();
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageEntries.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageEntries.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageEntries.java	(revision 36424)
@@ -0,0 +1,228 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint;
+
+import java.awt.Image;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.insignificant.josm.plugins.imagewaypoint.ImageEntry.IImageReadyListener;
+import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.Layer;
+
+public final class ImageEntries {
+    private static final class ImageReadyListener implements
+        IImageReadyListener {
+        private final ImageEntries imageEntries;
+
+        ImageReadyListener(final ImageEntries imageEntries) {
+            this.imageEntries = imageEntries;
+        }
+
+        @Override
+        public void onImageReady(final ImageEntry imageEntry,
+            final Image image) {
+            this.imageEntries.setCurrentImage(imageEntry, image);
+        }
+    }
+
+    private static final ImageEntries INSTANCE = new ImageEntries();
+
+    private final List<ImageEntry> images;
+    private final List<ImageEntry> locatedImages;
+    private final List<IImageChangeListener> listeners;
+    private final IImageReadyListener listener;
+
+    private ImageEntry currentImageEntry;
+    private Image currentImage;
+
+    private ImageEntries() {
+        this.images = new ArrayList<>();
+        this.locatedImages = new ArrayList<>();
+        this.listeners = new ArrayList<>();
+        this.listener = new ImageReadyListener(this);
+
+        this.currentImageEntry = null;
+        this.currentImage = null;
+    }
+
+    public static ImageEntries getInstance() {
+        return ImageEntries.INSTANCE;
+    }
+
+    public void addListener(final IImageChangeListener listener) {
+        this.listeners.add(listener);
+    }
+
+    public void removeListener(final IImageChangeListener listener) {
+        this.listeners.remove(listener);
+    }
+
+    public void add(final File[] imageFiles) {
+        if (null != imageFiles) {
+            for (int index = 0; index < imageFiles.length; index++) {
+            this.images.add(new ImageEntry(imageFiles[index]));
+            }
+            this.associateAllLayers();
+        }
+    }
+
+    public void associateAllLayers() {
+        for (int index = 0; index < this.images.size(); index++) {
+            this.images.get(index).setWayPoint(null);
+        }
+        this.locatedImages.clear();
+
+        final Collection<Layer> layerCollection = MainApplication.getLayerManager().getLayers();
+        final Layer[] layers = layerCollection.toArray(new Layer[layerCollection.size()]);
+
+        for (int index = 0; index < layers.length; index++) {
+            if (layers[index] instanceof GpxLayer
+            && null != ((GpxLayer) layers[index]).data
+            && !((GpxLayer) layers[index]).data.fromServer) {
+                this.doAssociateLayer((GpxLayer) layers[index]);
+            }
+        }
+
+        for (IImageChangeListener listener : this.listeners) {
+            listener.onSelectedImageEntryChanged(this);
+        }
+    }
+
+    private void doAssociateLayer(final GpxLayer gpxLayer) {
+        if (null != gpxLayer && null != gpxLayer.data
+        && !gpxLayer.data.fromServer) {
+            for (WayPoint wayPoint : gpxLayer.data.waypoints) {
+                final List<String> texts = this.getTextContentsFromWayPoint(wayPoint);
+
+                for (String text : texts) {
+                    final ImageEntry image = this.findImageEntryWithFileName(text);
+                    if (null != image) {
+                    image.setWayPoint(wayPoint);
+                    this.locatedImages.add(image);
+                    }
+                }
+            }
+        }
+    }
+
+    private List<String> getTextContentsFromWayPoint(
+        final WayPoint wayPoint) {
+        final List<String> texts = new ArrayList<>();
+        for (String s : new String[]{"name", "cmt", "desc"}) {
+            String t = wayPoint.getString(s);
+            if (null != t && 0 < t.length())
+                texts.add(t);
+        }
+
+        return texts;
+    }
+
+    // private final String getFileNameFromWayPointAttribute(
+    // final String attributeValue) {
+    // return null != attributeValue
+    // && (attributeValue.toLowerCase().endsWith(".jpg")
+    // || attributeValue.toLowerCase().endsWith(".jpeg")
+    // || attributeValue.toLowerCase().endsWith(".png") ||
+    // attributeValue.toLowerCase()
+    // .endsWith(".gif")) ? attributeValue : null;
+    // }
+
+    private ImageEntry findImageEntryWithFileName(final String fileName) {
+        ImageEntry foundimage = null;
+
+        for (int index = 0; index < this.images.size() && null == foundimage; index++) {
+            final ImageEntry image = this.images.get(index);
+            if (null == image.getWayPoint()
+                && image.getFileName().startsWith(fileName)) {
+            foundimage = image;
+            }
+        }
+
+        return foundimage;
+    }
+
+    private void setCurrentImage(final ImageEntry imageEntry, final Image image) {
+        if (imageEntry == this.currentImageEntry) {
+            this.currentImage = image;
+        }
+
+        for (IImageChangeListener listener : this.listeners) {
+            listener.onSelectedImageEntryChanged(this);
+        }
+    }
+
+    public ImageEntry[] getImages() {
+        return this.locatedImages.toArray(new ImageEntry[this.locatedImages.size()]);
+    }
+
+    public ImageEntry getCurrentImageEntry() {
+        return this.currentImageEntry;
+    }
+
+    public Image getCurrentImage() {
+        return this.currentImage;
+    }
+
+    public boolean hasNext() {
+        return null != this.currentImageEntry
+        && this.locatedImages.indexOf(this.currentImageEntry) < this.locatedImages.size() - 1;
+    }
+
+    public boolean hasPrevious() {
+        return null != this.currentImageEntry
+        && this.locatedImages.indexOf(this.currentImageEntry) > 0;
+    }
+
+    public void next() {
+        if (null != this.currentImageEntry
+        && this.locatedImages.indexOf(this.currentImageEntry) < this.locatedImages.size() - 1) {
+            this.setCurrentImageEntry(this.locatedImages.get(this.locatedImages.indexOf(this.currentImageEntry) + 1));
+        }
+    }
+
+    public void previous() {
+        if (null != this.currentImageEntry
+        && this.locatedImages.indexOf(this.currentImageEntry) > 0) {
+            this.setCurrentImageEntry(this.locatedImages.get(this.locatedImages.indexOf(this.currentImageEntry) - 1));
+        }
+    }
+
+    public void rotateCurrentImageLeft() {
+        if (null != this.currentImageEntry) {
+            this.currentImageEntry.setOrientation(this.currentImageEntry.getOrientation()
+            .rotateLeft());
+        }
+
+        this.setCurrentImageEntry(this.currentImageEntry);
+    }
+
+    public void rotateCurrentImageRight() {
+        if (null != this.currentImageEntry) {
+            this.currentImageEntry.setOrientation(this.currentImageEntry.getOrientation()
+            .rotateRight());
+        }
+
+        this.setCurrentImageEntry(this.currentImageEntry);
+    }
+
+    public void setCurrentImageEntry(final ImageEntry imageEntry) {
+        if (null == imageEntry || this.locatedImages.contains(imageEntry)) {
+            if (null != this.currentImageEntry)
+                this.currentImageEntry.flush();
+
+            this.currentImageEntry = imageEntry;
+            this.currentImage = null;
+
+            for (IImageChangeListener listener : this.listeners) {
+                listener.onSelectedImageEntryChanged(this);
+            }
+
+            if (imageEntry != null) // now try to get the image
+                this.currentImageEntry.requestImage(this.listener);
+        }
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageEntry.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageEntry.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageEntry.java	(revision 36424)
@@ -0,0 +1,260 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.image.ImageObserver;
+import java.awt.image.MemoryImageSource;
+import java.awt.image.PixelGrabber;
+import java.io.File;
+
+import javax.swing.Icon;
+
+import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+public final class ImageEntry implements Comparable<ImageEntry> {
+    public interface IImageReadyListener {
+        void onImageReady(ImageEntry imageEntry, Image image);
+    }
+
+    private static final class Observer implements ImageObserver {
+        private final ImageEntry imageEntry;
+
+        Observer(final ImageEntry imageEntry) {
+            this.imageEntry = imageEntry;
+        }
+
+        /**
+         * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int,
+         *      int, int, int, int)
+         * @return true if this ImageObserver still wants to be updates about
+         *         image loading progress
+         */
+        @Override
+        public boolean imageUpdate(final Image image,
+            final int infoflags, final int x, final int y, final int width,
+            final int height) {
+            final boolean complete = ImageObserver.ALLBITS == (infoflags | ImageObserver.ALLBITS);
+            if (complete) {
+                this.imageEntry.imageLoaded(image);
+            }
+
+            return !complete;
+        }
+    }
+
+    public static final class Orientation {
+    private static final Orientation[] orientations = new Orientation[4];
+
+    public static final Orientation NORMAL = new Orientation(tr("Normal"), 0);
+    public static final Orientation ROTATE_90 = new Orientation(tr("Rotate 90"),
+        1);
+    public static final Orientation ROTATE_180 = new Orientation(tr("Rotate 180"),
+        2);
+    public static final Orientation ROTATE_270 = new Orientation(tr("Rotate 270"),
+        3);
+
+    private final String name;
+    private final int index;
+
+    private Orientation(final String name, final int index) {
+        this.name = name;
+        this.index = index;
+        Orientation.orientations[index] = this;
+    }
+
+    public Orientation rotateRight() {
+        if (this.index < Orientation.orientations.length - 1) {
+        return Orientation.orientations[this.index + 1];
+        } else {
+        return Orientation.orientations[0];
+        }
+    }
+
+    public Orientation rotateLeft() {
+        if (this.index == 0) {
+        return Orientation.orientations[Orientation.orientations.length - 1];
+        } else {
+        return Orientation.orientations[this.index - 1];
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "[" + this.name + "]";
+    }
+    }
+
+    public static final Icon ICON = ImageProvider.get("dialogs/imagewaypoint-marker");
+    public static final Icon SELECTED_ICON = ImageProvider.get("dialogs/imagewaypoint-marker-selected");
+    private static final int ICON_WIDTH = ImageEntry.ICON.getIconWidth();
+    private static final int ICON_HEIGHT = ImageEntry.ICON.getIconHeight();
+
+    private final String filePath;
+    private final String fileName;
+    private final ImageObserver observer;
+    private WayPoint wayPoint;
+    private Orientation orientation;
+    private IImageReadyListener listener;
+    private Image normalImage;
+    private Image rotatedImage;
+
+    public ImageEntry(final File file) {
+    this.filePath = file.getAbsolutePath();
+    this.fileName = file.getName();
+    this.observer = new Observer(this);
+
+    this.wayPoint = null;
+    this.orientation = Orientation.NORMAL;
+    this.listener = null;
+    this.normalImage = null;
+    this.rotatedImage = null;
+    }
+
+    @Override
+    public int compareTo(final ImageEntry image) {
+        return this.fileName.compareTo(image.fileName);
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public WayPoint getWayPoint() {
+        return wayPoint;
+    }
+
+    public void setWayPoint(final WayPoint wayPoint) {
+        this.wayPoint = wayPoint;
+    }
+
+    public Orientation getOrientation() {
+        return orientation;
+    }
+
+    public void setOrientation(final Orientation orientation) {
+        this.orientation = orientation;
+        this.normalImage = null;
+        this.rotatedImage = null;
+    }
+
+    public Rectangle getBounds(final MapView mapView) {
+        final Rectangle bounds;
+
+        if (null == this.wayPoint) {
+            bounds = null;
+        } else {
+            final Point point = mapView.getPoint(this.getWayPoint().getCoor());
+            bounds = new Rectangle(point.x - ImageEntry.ICON_WIDTH,
+            point.y - ImageEntry.ICON_HEIGHT,
+            ImageEntry.ICON_WIDTH,
+            ImageEntry.ICON_WIDTH);
+        }
+
+        return bounds;
+    }
+
+    public void requestImage(final IImageReadyListener imageReadyListener) {
+        this.listener = imageReadyListener;
+
+        if (null == this.rotatedImage) {
+            final Image image = Toolkit.getDefaultToolkit()
+            .getImage(this.filePath);
+            if (Toolkit.getDefaultToolkit().prepareImage(image,
+            -1,
+            -1,
+            this.observer)) {
+            this.imageLoaded(image);
+            }
+        } else if (null != this.listener) {
+            this.listener.onImageReady(this, this.rotatedImage);
+        }
+    }
+
+    public void flush() {
+        if (null != this.normalImage) {
+            this.normalImage.flush();
+            this.normalImage = null;
+        }
+
+        if (null != this.rotatedImage) {
+            this.rotatedImage.flush();
+            this.rotatedImage = null;
+        }
+    }
+
+    private void imageLoaded(final Image image) {
+    if (Orientation.NORMAL == this.getOrientation()) {
+        this.rotatedImage = image;
+    } else {
+        final int[] buffer = new int[image.getWidth(null)
+            * image.getHeight(null)];
+        PixelGrabber grabber = new PixelGrabber(image,
+        0,
+        0,
+        image.getWidth(null),
+        image.getHeight(null),
+        buffer,
+        0,
+        image.getWidth(null));
+        try {
+        grabber.grabPixels();
+
+        final int newHeight;
+        final int newWidth;
+
+        if (Orientation.ROTATE_180 == this.getOrientation()) {
+            newHeight = image.getHeight(null);
+            newWidth = image.getWidth(null);
+        } else {
+            newHeight = image.getWidth(null);
+            newWidth = image.getHeight(null);
+        }
+
+        final int[] destination = new int[image.getWidth(null)
+            * image.getHeight(null)];
+        for (int x = 0; x < image.getWidth(null); x++) {
+            for (int y = 0; y < image.getHeight(null); y++) {
+            final int pix = buffer[x + (y * image.getWidth(null))];
+            final int newX;
+            final int newY;
+            if (Orientation.ROTATE_90 == this.getOrientation()) {
+                newX = newWidth - y;
+                newY = x;
+            } else if (Orientation.ROTATE_180 == this.getOrientation()) {
+                newX = newWidth - x;
+                newY = newHeight - y;
+            } else { // Orientation.ROTATE_270 ==
+                // this.getOrientation()
+                newX = y;
+                newY = newHeight - x;
+            }
+            final int newIndex = newX + (newY * newWidth);
+            if (newIndex < destination.length) {
+                destination[newIndex] = pix;
+            }
+            }
+        }
+
+        this.rotatedImage = Toolkit.getDefaultToolkit()
+            .createImage(new MemoryImageSource(newWidth,
+            newHeight,
+            destination,
+            0,
+            newWidth));
+        } catch (final InterruptedException e) {
+        this.rotatedImage = null;
+        }
+    }
+
+    if (null != this.listener) {
+        this.listener.onImageReady(this, this.rotatedImage);
+    }
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointDialog.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointDialog.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointDialog.java	(revision 36424)
@@ -0,0 +1,76 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.BorderLayout;
+import java.awt.event.KeyEvent;
+
+import javax.swing.Action;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+
+import org.insignificant.josm.plugins.imagewaypoint.actions.NextAction;
+import org.insignificant.josm.plugins.imagewaypoint.actions.PreviousAction;
+import org.insignificant.josm.plugins.imagewaypoint.actions.RotateLeftAction;
+import org.insignificant.josm.plugins.imagewaypoint.actions.RotateRightAction;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
+import org.openstreetmap.josm.tools.Shortcut;
+
+public final class ImageWayPointDialog extends ToggleDialog {
+    final ImageComponent imageDisplay;
+    private final Action previousAction;
+    private final Action nextAction;
+    private final Action rotateLeftAction;
+    private final Action rotateRightAction;
+
+    private final IImageChangeListener listener;
+
+    public ImageWayPointDialog() {
+        super(tr("WayPoint Image"), "imagewaypoint", tr("Display non-geotagged photos"),
+            Shortcut.registerShortcut("subwindow:imagewaypoint", tr("Toggle: {0}", tr("WayPoint Image")),
+            KeyEvent.VK_Y, Shortcut.ALT_SHIFT), 200);
+
+        this.previousAction = new PreviousAction();
+        this.nextAction = new NextAction();
+        this.rotateLeftAction = new RotateLeftAction();
+        this.rotateRightAction = new RotateRightAction();
+
+        final JButton previousButton = new JButton(this.previousAction);
+        final JButton nextButton = new JButton(this.nextAction);
+        final JButton rotateLeftButton = new JButton(this.rotateLeftAction);
+        final JButton rotateRightButton = new JButton(this.rotateRightAction);
+
+        // default layout, FlowLayout, is fine
+        final JPanel buttonPanel = new JPanel();
+        buttonPanel.add(previousButton);
+        buttonPanel.add(nextButton);
+        buttonPanel.add(rotateLeftButton);
+        buttonPanel.add(rotateRightButton);
+
+        final JPanel mainPanel = new JPanel();
+        mainPanel.setLayout(new BorderLayout());
+
+        this.imageDisplay = new ImageComponent();
+        mainPanel.add(buttonPanel, BorderLayout.SOUTH);
+        mainPanel.add(this.imageDisplay, BorderLayout.CENTER);
+
+        this.listener = new ImageChangeListener(this);
+        ImageEntries.getInstance().addListener(this.listener);
+
+        this.updateGUI();
+        add(mainPanel);
+    }
+
+    void updateGUI() {
+        this.previousAction.setEnabled(ImageEntries.getInstance().hasPrevious());
+        this.nextAction.setEnabled(ImageEntries.getInstance().hasNext());
+        this.rotateLeftAction.setEnabled(null != ImageEntries.getInstance().getCurrentImageEntry());
+        this.rotateRightAction.setEnabled(null != ImageEntries.getInstance().getCurrentImageEntry());
+
+        if (null != MainApplication.getMap()) {
+            MainApplication.getMap().repaint();
+        }
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointLayer.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointLayer.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointLayer.java	(revision 36424)
@@ -0,0 +1,161 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
+import javax.swing.Action;
+import javax.swing.Icon;
+
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+public final class ImageWayPointLayer extends Layer {
+    private static final class ImageWayPointMouseListener extends MouseAdapter {
+        private final ImageWayPointLayer layer;
+
+        ImageWayPointMouseListener(final ImageWayPointLayer layer) {
+            this.layer = layer;
+        }
+
+        @Override
+        public void mouseClicked(final MouseEvent event) {
+            if (MouseEvent.BUTTON1 == event.getButton() && this.layer.isVisible()) {
+                final ImageEntry[] images = ImageEntries.getInstance()
+                    .getImages();
+
+                if (null != images) {
+                    boolean found = false;
+                    // Note: the images are checked in the *reverse* order to
+                    // which they're painted - this means than an image which
+                    // partly obscures another will match the click first
+                    for (int index = images.length - 1; !found && index >= 0; index--) {
+                        final Rectangle bounds = images[index].getBounds(MainApplication.getMap().mapView);
+                        if (null != bounds && bounds.contains(event.getPoint())) {
+                            found = true;
+                            ImageEntries.getInstance()
+                            .setCurrentImageEntry(images[index]);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private static final class ImageChangeListener implements IImageChangeListener {
+        @Override
+        public void onAvailableImageEntriesChanged(final ImageEntries entries) {
+            MainApplication.getMap().repaint();
+        }
+
+        @Override
+        public void onSelectedImageEntryChanged(final ImageEntries entries) {
+            MainApplication.getMap().repaint();
+        }
+    }
+
+    private final MouseListener layerMouseListener;
+    private final IImageChangeListener imageChangeListener;
+
+    public ImageWayPointLayer() {
+        super(tr("Imported Images"));
+
+        MainApplication.getLayerManager().addLayer(this);
+
+        this.layerMouseListener = new ImageWayPointMouseListener(this);
+        MainApplication.getMap().mapView.addMouseListener(this.layerMouseListener);
+
+        this.imageChangeListener = new ImageChangeListener();
+        ImageEntries.getInstance().addListener(this.imageChangeListener);
+    }
+
+    @Override
+    public Icon getIcon() {
+        return ImageProvider.get("dialogs/imagewaypoint");
+    }
+
+    @Override
+    public Object getInfoComponent() {
+        return null;
+    }
+
+    @Override
+    public Action[] getMenuEntries() {
+        return new Action[0];
+    }
+
+    @Override
+    public String getToolTipText() {
+        // TODO
+        return "";
+    }
+
+    @Override
+    public boolean isMergable(final Layer other) {
+        // TODO
+        return false;
+    }
+
+    @Override
+    public void mergeFrom(final Layer from) {
+        // TODO not supported yet
+    }
+
+    @Override
+    public void paint(final Graphics2D graphics, final MapView mapView, Bounds box) {
+        final ImageEntry[] images = ImageEntries.getInstance().getImages();
+
+        if (null != images) {
+            final ImageEntry currentImage = ImageEntries.getInstance()
+            .getCurrentImageEntry();
+
+            for (int index = 0; index < images.length; index++) {
+                final Rectangle bounds = images[index].getBounds(mapView);
+                if (null != bounds) {
+                    if (images[index] == currentImage) {
+                    ImageEntry.SELECTED_ICON.paintIcon(mapView,
+                        graphics,
+                        bounds.x,
+                        bounds.y);
+                    } else {
+                    ImageEntry.ICON.paintIcon(mapView,
+                        graphics,
+                        bounds.x,
+                        bounds.y);
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public void visitBoundingBox(final BoundingXYVisitor visitor) {
+        final ImageEntry[] images = ImageEntries.getInstance().getImages();
+
+        if (null != images) {
+            for (int index = 0; index < images.length; index++) {
+                final ImageEntry imageEntry = images[index];
+
+                if (imageEntry.getWayPoint() != null)
+                    visitor.visit(imageEntry.getWayPoint().getCoor());
+            }
+        }
+    }
+
+    @Override
+    public void destroy() {
+        super.destroy();
+
+        MainApplication.getMap().mapView.removeMouseListener(this.layerMouseListener);
+        ImageEntries.getInstance().removeListener(this.imageChangeListener);
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointPlugin.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointPlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/ImageWayPointPlugin.java	(revision 36424)
@@ -0,0 +1,92 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+
+import org.openstreetmap.josm.actions.ExtensionFileFilter;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.io.importexport.FileImporter;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.plugins.PluginInformation;
+
+public final class ImageWayPointPlugin extends org.openstreetmap.josm.plugins.Plugin {
+    private final class ImageWaypointImporter extends FileImporter {
+
+        ImageWaypointImporter() {
+            super(new ExtensionFileFilter("jpg,jpeg,png,gif", "jpg", "Image files [by ImageWayPoint plugin] (*.jpg, *.jpeg, *.png, *.gif)"));
+        }
+
+        @Override
+        public boolean isBatchImporter() {
+            return true;
+        }
+
+        @Override
+        public double getPriority() {
+            return -3;
+        }
+
+        @Override
+        public void importData(List<File> files, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
+            if (null != files && !files.isEmpty()) {
+
+                // recursively find all files
+                final List<File> allFiles = new ArrayList<>();
+                addFiles(allFiles, files.toArray(new File[0]));
+
+                // add files to ImageEntries
+                ImageEntries.getInstance().add(allFiles.toArray(new File[allFiles.size()]));
+
+                // check to see whether there's already an ImageWayPointLayer
+                boolean foundImageWayPointLayer = false;
+                final Collection<Layer> layerCollection = MainApplication.getLayerManager().getLayers();
+                final Iterator<Layer> layerIterator = layerCollection.iterator();
+                while (layerIterator.hasNext() && !foundImageWayPointLayer) {
+                    if (layerIterator.next() instanceof ImageWayPointLayer) {
+                        foundImageWayPointLayer = true;
+                    }
+                }
+                if (!foundImageWayPointLayer) {
+                    GuiHelper.runInEDT(ImageWayPointLayer::new);
+                }
+            }
+        }
+    }
+
+    /**
+     * no-arg constructor is required by JOSM
+     */
+    public ImageWayPointPlugin(PluginInformation info) {
+        super(info);
+        ExtensionFileFilter.addImporter(new ImageWaypointImporter());
+    }
+
+    @Override
+    public void mapFrameInitialized(final MapFrame oldFrame, final MapFrame newFrame) {
+        if (newFrame != null) {
+            newFrame.addToggleDialog(new ImageWayPointDialog());
+        } else {
+            ImageEntries.getInstance().setCurrentImageEntry(null);
+        }
+    }
+
+    private void addFiles(List<File> allFiles, File[] selectedFiles) {
+        for (int index = 0; index < selectedFiles.length; index++) {
+            final File selectedFile = selectedFiles[index];
+            if (selectedFile.isDirectory())
+                this.addFiles(allFiles, selectedFile.listFiles());
+            else if (selectedFile.getName().toLowerCase(Locale.ENGLISH).endsWith(".jpg"))
+                allFiles.add(selectedFile);
+        }
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/NextAction.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/NextAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/NextAction.java	(revision 36424)
@@ -0,0 +1,23 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+
+import org.insignificant.josm.plugins.imagewaypoint.ImageEntries;
+import org.openstreetmap.josm.actions.JosmAction;
+
+public final class NextAction extends JosmAction {
+
+    public NextAction() {
+        super(tr("Next"), null, tr("Next image"), null, false);
+    }
+
+    @Override
+    public void actionPerformed(final ActionEvent actionEvent) {
+        if (ImageEntries.getInstance().hasNext()) {
+            ImageEntries.getInstance().next();
+        }
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/PreviousAction.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/PreviousAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/PreviousAction.java	(revision 36424)
@@ -0,0 +1,27 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+
+import org.insignificant.josm.plugins.imagewaypoint.ImageEntries;
+import org.openstreetmap.josm.actions.JosmAction;
+
+public final class PreviousAction extends JosmAction {
+
+    public PreviousAction() {
+        super(tr("Previous"),
+        null,
+        tr("Previous image"),
+        null,
+        false);
+    }
+
+    @Override
+    public void actionPerformed(final ActionEvent actionEvent) {
+        if (ImageEntries.getInstance().hasPrevious()) {
+            ImageEntries.getInstance().previous();
+        }
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/RotateLeftAction.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/RotateLeftAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/RotateLeftAction.java	(revision 36424)
@@ -0,0 +1,25 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+
+import org.insignificant.josm.plugins.imagewaypoint.ImageEntries;
+import org.openstreetmap.josm.actions.JosmAction;
+
+public final class RotateLeftAction extends JosmAction {
+
+    public RotateLeftAction() {
+        super(tr("Rotate left"),
+        null,
+        tr("Rotate image left"),
+        null,
+        false);
+    }
+
+    @Override
+    public void actionPerformed(final ActionEvent actionEvent) {
+        ImageEntries.getInstance().rotateCurrentImageLeft();
+    }
+}
Index: /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/RotateRightAction.java
===================================================================
--- /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/RotateRightAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/ImageWayPoint/src/org/insignificant/josm/plugins/imagewaypoint/actions/RotateRightAction.java	(revision 36424)
@@ -0,0 +1,25 @@
+// License: GPL. For details, see LICENSE file.
+package org.insignificant.josm.plugins.imagewaypoint.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+
+import org.insignificant.josm.plugins.imagewaypoint.ImageEntries;
+import org.openstreetmap.josm.actions.JosmAction;
+
+public final class RotateRightAction extends JosmAction {
+
+    public RotateRightAction() {
+        super(tr("Rotate right"),
+        null,
+        tr("Rotate image right"),
+        null,
+        false);
+    }
+
+    @Override
+    public void actionPerformed(final ActionEvent actionEvent) {
+        ImageEntries.getInstance().rotateCurrentImageRight();
+    }
+}
Index: /applications/editors/josm/plugins/InfoMode/.checkstyle
===================================================================
--- /applications/editors/josm/plugins/InfoMode/.checkstyle	(revision 36424)
+++ /applications/editors/josm/plugins/InfoMode/.checkstyle	(revision 36424)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="JOSM" location="/JOSM/tools/checkstyle/josm_checks.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="JOSM" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="DerivedFiles" enabled="true"/>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="data"/>
+    <filter-data value="images"/>
+    <filter-data value="styles"/>
+    <filter-data value="resources"/>
+    <filter-data value="scripts"/>
+  </filter>
+</fileset-config>
Index: /applications/editors/josm/plugins/InfoMode/GPL-v2.0.txt
===================================================================
--- /applications/editors/josm/plugins/InfoMode/GPL-v2.0.txt	(revision 36424)
+++ /applications/editors/josm/plugins/InfoMode/GPL-v2.0.txt	(revision 36424)
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/InfoMode/GPL-v3.0.txt
===================================================================
--- /applications/editors/josm/plugins/InfoMode/GPL-v3.0.txt	(revision 36424)
+++ /applications/editors/josm/plugins/InfoMode/GPL-v3.0.txt	(revision 36424)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: /applications/editors/josm/plugins/InfoMode/build.xml
===================================================================
--- /applications/editors/josm/plugins/InfoMode/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/InfoMode/build.xml	(revision 36424)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="InfoMode" default="dist" basedir=".">
+
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="InfoMode : for shortcurt parser"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+
+    <!-- Configure these properties (replace "..." accordingly).
+         See https://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
+    -->
+    <property name="plugin.author" value="Alexei Kasatkin"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.infomode.InfoModePlugin"/>
+    <property name="plugin.description" value="Extra information about current layer objects pop ups - currently GPX trackpoint info"/>
+    <property name="plugin.icon" value="images/mapmode/infomode.png"/>
+    <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/JOSM/Plugins/InfoMode"/>
+    <!--<property name="plugin.early" value="..."/>-->
+    <!--<property name="plugin.requires" value="..."/>-->
+    <!--<property name="plugin.stage" value="..."/>-->
+
+    <target name="additional-manifest">
+        <manifest file="MANIFEST" mode="update">
+            <attribute name="ru_Plugin-Link" value="https://wiki.openstreetmap.org/wiki/RU:JOSM/Plugins/InfoMode"/>
+        </manifest>
+    </target>
+
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>
+  
+</project>
Index: /applications/editors/josm/plugins/InfoMode/pom.xml
===================================================================
--- /applications/editors/josm/plugins/InfoMode/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/InfoMode/pom.xml	(revision 36424)
@@ -0,0 +1,42 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>infomode</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Alexei Kasatkin</name>
+        </developer>
+    </developers>
+    <properties>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+        <plugin.author>Alexei Kasatkin</plugin.author>
+        <plugin.class>org.openstreetmap.josm.plugins.infomode.InfoModePlugin</plugin.class>
+        <plugin.description>Extra information about current layer objects pop ups - currently GPX trackpoint info</plugin.description>
+        <plugin.icon>images/mapmode/infomode.png</plugin.icon>
+        <plugin.link>https://wiki.openstreetmap.org/wiki/JOSM/Plugins/InfoMode</plugin.link>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoMode.java
===================================================================
--- /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoMode.java	(revision 36424)
+++ /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoMode.java	(revision 36424)
@@ -0,0 +1,304 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.infomode;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.AWTEvent;
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Stroke;
+import java.awt.Toolkit;
+import java.awt.event.AWTEventListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.swing.Popup;
+import javax.swing.PopupFactory;
+
+import org.openstreetmap.josm.actions.mapmode.MapMode;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.gpx.IGpxTrack;
+import org.openstreetmap.josm.data.gpx.IGpxTrackSegment;
+import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.data.projection.ProjectionRegistry;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.MapViewPaintable;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Shortcut;
+
+class InfoMode extends MapMode implements MapViewPaintable, AWTEventListener {
+    private MapView mv;
+    private String statusText;
+    //private boolean drawing;
+    //private boolean ctrl;
+    private boolean shift;
+    //private boolean oldCtrl;
+    //private boolean oldShift;
+    private EastNorth pos;
+    private WayPoint wpOld;
+    private Popup oldPopup;
+    private InfoPanel infoPanel;
+
+    InfoMode() {
+        super(tr("InfoMode"), "infomode.png", tr("GPX info mode"),
+                Shortcut.registerShortcut("mapmode:infomode", tr("Mode: {0}", tr("GPX info mode")), KeyEvent.VK_BACK_SLASH, Shortcut.DIRECT),
+                Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+        infoPanel = new InfoPanel();
+    }
+
+// <editor-fold defaultstate="collapsed" desc="Event listeners">
+
+    @Override
+    public void enterMode() {
+        if (!isEnabled()) return;
+        super.enterMode();
+        mv = MainApplication.getMap().mapView;
+        mv.addMouseListener(this);
+        mv.addMouseMotionListener(this);
+        mv.addTemporaryLayer(this);
+        /*if (!(Main.main.getActiveLayer() instanceof GpxLayer)) {
+            boolean answer = ConditionalOptionPaneUtil.showConfirmationDialog(
+                    "scan_all_layers", MainApplication.getMainFrame(),
+                    tr("Please select GPX layer to view only its trackpoint info. Do you want to scan all GPX layers?"),
+                    tr("Select layer to scan"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_OPTION );
+                 if(!answer) return;
+        }*/
+
+        MainApplication.getMap().statusLine.setHelpText(
+                tr("Move the mouse to show trackpoint info for current layer. Hold shift to highlight tracks"));
+        MainApplication.getMap().statusLine.repaint();
+
+        try {
+            Toolkit.getDefaultToolkit().addAWTEventListener(this,
+                    AWTEvent.KEY_EVENT_MASK);
+        } catch (SecurityException ex) {
+            Logging.error(ex);
+        }
+    }
+
+    @Override
+    public void exitMode() {
+        super.exitMode();
+        MainApplication.getMap().mapView.removeMouseListener(this);
+        MainApplication.getMap().mapView.removeMouseMotionListener(this);
+
+        MainApplication.getMap().mapView.removeTemporaryLayer(this);
+        if (oldPopup != null) oldPopup.hide();
+
+        try {
+            Toolkit.getDefaultToolkit().removeAWTEventListener(this);
+        } catch (SecurityException ex) {
+            Logging.error(ex);
+        }
+
+        repaint();
+    }
+
+    @Override
+    public boolean layerIsSupported(Layer l) {
+        return true;
+    }
+
+    //////////    Event listener methods
+
+    @Override
+    public void paint(Graphics2D g, MapView mv, Bounds bbox) {
+        if (pos == null) return;
+        Layer curL = mv.getLayerManager().getActiveLayer();
+        if (curL instanceof GpxLayer) showLayerInfo(g, curL, mv); else {
+            for (Layer l : mv.getLayerManager().getLayers()) {
+                if (l instanceof GpxLayer) {
+                    if (showLayerInfo(g, l, mv)) return;
+                }
+            }
+        }
+    }
+
+    @Override
+    public void eventDispatched(AWTEvent event) {
+        updateKeyModifiers((InputEvent) event);
+        if (event.getID() == KeyEvent.KEY_PRESSED) {
+            doKeyEvent((KeyEvent) event);
+        }
+//        updateStatusLine();
+        repaint();
+    }
+
+    @Override
+    public void mousePressed(MouseEvent e) {
+        if (!isEnabled()) return;
+        if (e.getButton() != MouseEvent.BUTTON1) return;
+        //setStatusLine(tr("Please move the mouse to draw new way"));
+        repaint();
+
+    }
+
+    @Override
+    public void mouseReleased(MouseEvent e) {
+        if (!isEnabled()) return;
+        if (e.getButton() != MouseEvent.BUTTON1) return;
+        if (oldPopup != null) {
+            oldPopup.hide();
+            oldPopup = null;
+            wpOld = null;
+        }
+        repaint();
+    }
+
+    @Override
+    public void mouseDragged(MouseEvent e) {
+        if (oldPopup != null) {
+            oldPopup.hide();
+            oldPopup = null;
+            wpOld = null;
+        }
+    }
+
+    @Override
+    public void mouseMoved(MouseEvent e) {
+        if (!isEnabled()) return;
+        pos = mv.getEastNorth(e.getX(), e.getY());
+        repaint();
+    }
+
+    private void doKeyEvent(KeyEvent e) {
+        ///  System.out.println(e);
+        if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
+            filterTracks();
+            repaint();
+        }
+        if (e.getKeyCode() == KeyEvent.VK_BACK_SLASH ||
+                e.getKeyCode() == KeyEvent.VK_ENTER ||
+                e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+            MainApplication.getMap().selectSelectTool(false);
+        }
+    }
+
+
+    /**
+     * Updates shift and ctrl key states
+     */
+    @Override
+    protected void updateKeyModifiers(InputEvent e) {
+        //oldCtrl = ctrl;
+        //oldShift = shift;
+        ctrl = (e.getModifiers() & ActionEvent.CTRL_MASK) != 0;
+        shift = (e.getModifiers() & ActionEvent.SHIFT_MASK) != 0;
+    }
+
+    @Override
+    protected void updateStatusLine() {
+        MainApplication.getMap().statusLine.setHelpText(statusText);
+        MainApplication.getMap().statusLine.repaint();
+    }
+// </editor-fold>
+
+    private void repaint() {
+        if (MainApplication.getMap() != null)
+            MainApplication.getMap().mapView.repaint();
+    }
+    /*private void setStatusLine(String tr) {
+        statusText=tr;
+        updateStatusLine();
+    }*/
+
+    private synchronized void filterTracks() {
+        Layer l = getLayerManager().getActiveLayer();
+
+        if (l instanceof GpxLayer && pos != null) {
+            GpxLayer gpxL = (GpxLayer) l;
+            Set<IGpxTrack> toRemove = new HashSet<>();
+            for (IGpxTrack track : gpxL.data.tracks) {
+                boolean f = true;
+                sg: for (IGpxTrackSegment seg : track.getSegments()) {
+                    for (WayPoint S : seg.getWayPoints()) {
+                        if (S.hasDate()) {
+                            f = false;
+                            break sg;
+                        }
+                    }
+                }
+                if (f) toRemove.add(track);
+            }
+            gpxL.data.tracks.removeAll(toRemove);
+        }
+    }
+
+    private boolean showLayerInfo(Graphics2D g, Layer l, MapView mv) {
+            GpxLayer gpxL = (GpxLayer) l;
+
+            double minDist = 1e9, d;
+            WayPoint wp = null, oldWp = null, prevWp = null;
+            IGpxTrack trk = null;
+            double maxD = mv.getDist100Pixel()/3;
+            for (IGpxTrack track : gpxL.data.tracks) {
+                for (IGpxTrackSegment seg : track.getSegments()) {
+                    oldWp = null; // next segment will have new previous point
+                    for (WayPoint S : seg.getWayPoints()) {
+                        d = S.getEastNorth(ProjectionRegistry.getProjection()).distance(pos);
+
+                        if (d < minDist && d < maxD) {
+                            minDist = d;
+                            prevWp = oldWp;
+                            wp = S;
+                            trk = track;
+                            }
+                        oldWp = S;
+                    }
+                }
+            }
+            if (wp != null) {
+                Point p = mv.getPoint(wp.getCoor());
+
+                g.setColor(Color.RED);
+                g.fillOval(p.x-10, p.y-10, 20, 20); // mark selected point
+                if (shift) { // highlight track
+                    g.setColor(new Color(255, 30, 0, 128));
+                    Stroke oldStroke = g.getStroke();
+                    g.setStroke(new BasicStroke(10));
+                    for (IGpxTrackSegment seg : trk.getSegments()) {
+                        Point oldP = null, curP = null; // next segment will have new previous point
+                        for (WayPoint S : seg.getWayPoints()) {
+                            curP = mv.getPoint(S.getEastNorth(ProjectionRegistry.getProjection()));
+                            if (oldP != null) g.drawLine(oldP.x, oldP.y, curP.x, curP.y);
+                            oldP = curP;
+                        }
+                    }
+                    g.setStroke(oldStroke);
+                }
+                Point s = mv.getLocationOnScreen();
+                int pcx = s.x+p.x-40;
+                int pcy = s.y+p.y+30;
+                if (shift) {
+                    pcx += 40;
+                    pcy -= 30;
+                }
+                if (wp != wpOld) {
+                    if (oldPopup != null) oldPopup.hide();
+                    double vel = -1;
+                    if (prevWp != null && wp.getTimeInMillis() != prevWp.getTimeInMillis()) {
+                        vel = wp.greatCircleDistance(prevWp)/
+                                (wp.getTime()-prevWp.getTime());
+                    }
+                    infoPanel.setData(wp, trk, vel, gpxL.data.tracks);
+                    Popup pp = PopupFactory.getSharedInstance().getPopup(mv, infoPanel, pcx, pcy);
+                    pp.show();
+                    wpOld = wp;
+                    oldPopup = pp;
+                }
+                return true;
+            }
+            return false;
+    }
+}
Index: /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoModePlugin.java
===================================================================
--- /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoModePlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoModePlugin.java	(revision 36424)
@@ -0,0 +1,22 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.infomode;
+
+import org.openstreetmap.josm.gui.IconToggleButton;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginInformation;
+
+public class InfoModePlugin extends Plugin {
+
+    public InfoModePlugin(PluginInformation info) {
+        super(info);
+    }
+
+    @Override
+    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+        if (oldFrame == null && newFrame != null) {
+            MainApplication.getMap().addMapMode(new IconToggleButton(new InfoMode()));
+        }
+    }
+}
Index: /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoPanel.java
===================================================================
--- /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoPanel.java	(revision 36424)
+++ /applications/editors/josm/plugins/InfoMode/src/org/openstreetmap/josm/plugins/infomode/InfoPanel.java	(revision 36424)
@@ -0,0 +1,143 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.infomode;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.text.DateFormat;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.SystemOfMeasurement;
+import org.openstreetmap.josm.data.gpx.IGpxTrack;
+import org.openstreetmap.josm.data.gpx.IGpxTrackSegment;
+import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.OpenBrowser;
+import org.openstreetmap.josm.tools.date.DateUtils;
+
+class InfoPanel extends JPanel {
+
+    private Collection<IGpxTrack> tracks;
+    private IGpxTrack trk;
+
+    private JLabel label1 = new JLabel();
+    private JLabel label2 = new JLabel();
+    private JLabel label3 = new JLabel();
+    private JLabel label4 = new JLabel();
+    private JLabel label5 = new JLabel();
+    private JLabel label6 = new JLabel();
+    private JButton but1 = new JButton(tr("Delete this"));
+    private JButton but2 = new JButton(tr("Delete this&older"));
+
+    InfoPanel() {
+        super(new GridBagLayout());
+        setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+        add(label1, GBC.eol().insets(10, 0, 0, 0));
+        add(label2, GBC.eol().insets(10, 0, 0, 0));
+        add(label3, GBC.eol().insets(10, 0, 0, 0));
+        add(label4, GBC.eol().insets(10, 0, 0, 0));
+        add(label5, GBC.eol().insets(10, 0, 0, 0));
+        add(label6, GBC.eol().insets(10, 0, 0, 0));
+        add(but1, GBC.std().insets(10, 5, 0, 0));
+        add(but2, GBC.eop().insets(10, 5, 0, 0));
+        // lightweight hyperlink
+        label6.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                String s = label6.getText();
+                OpenBrowser.displayUrl(s.substring(9, s.length()-11));
+            }
+        });
+        but1.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                if (tracks != null) tracks.remove(trk);
+                MainApplication.getMap().mapView.repaint();
+            }
+        });
+        but2.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+            if (tracks == null) return;
+            Set<IGpxTrack> toRemove = new HashSet<>();
+
+            double tm = -1;
+            for (IGpxTrackSegment seg : trk.getSegments()) {
+                    for (WayPoint S : seg.getWayPoints()) {
+                        if (S.getTime() > tm) {
+                            tm = S.getTime();
+                        }
+                    }
+                }
+
+            for (IGpxTrack track : tracks) {
+                boolean f = true;
+                sg: for (IGpxTrackSegment seg : track.getSegments()) {
+                    for (WayPoint S : seg.getWayPoints()) {
+                        if (S.getTime() > tm) {
+                            f = false;
+                            break sg;
+                        }
+                    }
+                }
+                if (f) toRemove.add(track);
+            }
+            tracks.removeAll(toRemove);
+            MainApplication.getMap().mapView.repaint();
+            }
+        });
+    }
+
+    void setData(WayPoint wp, IGpxTrack trk, double vel, Collection<IGpxTrack> tracks) {
+        this.tracks = tracks;
+        this.trk = trk;
+        if (!wp.hasDate()) {
+            label1.setText(tr("No timestamp"));
+            but2.setVisible(false);
+        } else {
+            label1.setText(DateUtils.getDateTimeFormat(DateFormat.DEFAULT, DateFormat.DEFAULT).format(Date.from(wp.getInstant())));
+            but2.setVisible(true);
+        }
+        if (vel > 0) {
+            SystemOfMeasurement som = SystemOfMeasurement.getSystemOfMeasurement();
+            label2.setText(String.format("%.1f "+som.speedName, vel * som.speedValue));
+        } else {
+            label2.setText(null);
+        }
+        String s = (String) trk.getAttributes().get("name");
+        if (s != null)
+            label3.setText(tr("Track name: ")+s);
+        else label3.setText(null);
+        s = (String) trk.getAttributes().get("desc");
+        label4.setText(s);
+        s = (String) wp.attr.get("ele");
+        String s1 = "";
+        if (s != null) {
+            try {
+                s1 = String.format("H=%3.1f   ", Double.parseDouble(s));
+            } catch (NumberFormatException e) {
+                Logging.warn(e);
+            }
+        }
+        s1 = s1+"L="+(int) trk.length();
+        label5.setText(s1);
+        if (trk.getAttributes().containsKey("url")) {
+           label6.setText(String.format("<html><u>%s</u></html>", trk.getAttributes().get("url").toString()));
+        } else label6.setText(null);
+    }
+
+}
Index: /applications/editors/josm/plugins/RoadSigns/.checkstyle
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/.checkstyle	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/.checkstyle	(revision 36424)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="JOSM" location="/JOSM/tools/checkstyle/josm_checks.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="JOSM" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="DerivedFiles" enabled="true"/>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="src/org/openstreetmap/josm/plugins/roadsigns/javacc"/>
+    <filter-data value="data"/>
+    <filter-data value="images"/>
+    <filter-data value="styles"/>
+    <filter-data value="resources"/>
+    <filter-data value="scripts"/>
+  </filter>
+</fileset-config>
Index: /applications/editors/josm/plugins/RoadSigns/README
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/README	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/README	(revision 36424)
@@ -0,0 +1,36 @@
+Road Signs Plugin
+=================
+
+Shows a GUI dialog to tag objects by clicking on road sign symbols.
+It tries to generate the corresponding tags for the object.
+
+Author:
+    Paul Hartmann <phaaurlt@googlemail.com>
+
+License:
+    GPL v2 or later.
+
+Acknowledgements:
+    Inspired by the Verkehrszeichen Tool [1] by Sebastian Hohmann.
+    Basically, this plugin is a port to Java and the JOSM (plugin) framework.
+    [1] http://osmtools.de/traffic_signs/
+
+    German street sign SVGs have been derived from
+    https://de.wikipedia.org/wiki/Bildtafel_der_Verkehrszeichen_in_der_Bundesrepublik_Deutschland_seit_2017,
+    resized to a height of 50px and cleaned with svg cleaner.
+
+
+JavaCC usage:
+-------------
+
+There is a simple format to insert parameters into strings. E.g. keys,
+values and refs in the preset file can contain '$foo' or '${foo}' which
+will be replaced by the value of the parameter named foo.
+(Textual "$" or "\" is escaped as "\$" or "\\".)
+
+javacc is used for easier tokenization. All *.java files in the folder
+plugins/roadsigns/javacc are auto generated. To create them, execute
+
+    javacc ParamString.jj
+
+(Provided javacc is installed. Not necessary if that file is not changed.)
Index: /applications/editors/josm/plugins/RoadSigns/build.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/build.xml	(revision 36424)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="RoadSigns" default="dist" basedir=".">
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value=""/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+
+    <property name="plugin.author" value="Paul Hartmann"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.roadsigns.RoadSignsPlugin"/>
+    <property name="plugin.description" value="Plugin for tagging of objects based on a selection of road signs. The dialog can be opened by clicking a small icon in the upper right corner of the properties window. Available country presets: Austria, Belgium, Czech Republic, Germany, Poland, Slovakia, Spain."/>
+    <property name="plugin.icon" value="images/pref/roadsigns.png"/>
+    <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/JOSM/Plugins/RoadSigns"/>
+    <property name="plugin.canloadatruntime" value="true"/>
+
+    <!--
+    **********************************************************
+    ** include targets that all plugins have in common
+    **********************************************************
+    -->
+    <import file="../build-common.xml"/>
+
+</project>
Index: /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetAT.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetAT.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetAT.xml	(revision 36424)
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+roadsigns plugin preset file for Austria
+-->
+<roadsignpreset country="AT">
+    <sign ref="AT:52.16" name="Bicycle path with mandatory use (AT:52.16)" de.name="Radweg mit Benutzungspflicht (AT:52.16)"
+        help="Mandatory use can be specified as a restriction on the corresponding road, see:"
+        de.help="Benutzungspflicht kann als Einschränkung an der entsprechenden Straße angegeben werden, siehe:"
+        wiki="Tag:bicycle%3Duse_sidepath">
+        <tag key="highway" value="cycleway"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.27" name="Bicycle path without mandatory use (AT:52.27)" de.name="Radweg ohne Benutzungspflicht (AT:52.27)"
+        help="Differs from bicycle paths WITH mandatory use by the lack of restrictions on the corresponding roads, see:"
+        de.help="Unterscheidet sich von Radwegen MIT Benutzungspflicht durch die fehlende Einschränkung an den entsprechenden Straßen, siehe:"
+        wiki="Tag:bicycle%3Duse_sidepath">
+        <tag key="highway" value="cycleway"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.17b" name="Bridle path (AT:52.17b)" de.name="Reitweg (AT:52.17b)">
+        <tag key="highway" value="bridleway"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.17" name="Pedestrian path (AT:52.17)" de.name="Gehweg (AT:52.17)">
+        <tag key="highway" value="footway"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.17a-a" name="Pedestrian &amp; bicycle path with mandatory use (AT:52.17a-a)" de.name="Gemeinsamer Geh- und Radweg mit Benutzungspflicht (AT:52.17a-a)"
+        help="Mandatory use can be specified as a restriction on the corresponding road, see:"
+        de.help="Benutzungspflicht kann als Einschränkung an der entsprechenden Straße angegeben werden, siehe:"
+        wiki="Tag:bicycle%3Duse_sidepath">
+        <tag key="highway" value="path"/>
+        <tag key="foot" value="designated"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="segregated" value="no"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.28a" name="Pedestrian &amp; bicycle path without mandatory use (AT:52.28a)" de.name="Gemeinsamer Geh- und Radweg ohne Benutzungspflicht (AT:52.28a)"
+        help="Differs from pedestrian &amp; bicycle paths WITH mandatory use by the lack of restrictions on the corresponding roads, see:"
+        de.help="Unterscheidet sich von Geh- und Radwegen MIT Benutzungspflicht durch die fehlende Einschränkung an den entsprechenden Straßen, siehe:"
+        wiki="Tag:bicycle%3Duse_sidepath">
+        <tag key="highway" value="path"/>
+        <tag key="foot" value="designated"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="segregated" value="no"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.17a-b" name="Split pedestrian &amp; bicycle path with mandatory use (AT:52.17a-b)" de.name="Getrennter Rad- und Gehweg mit Benutzungspflicht (AT:52.17a-b)"
+        help="Mandatory use can be specified as a restriction on the corresponding road, see:"
+        de.help="Benutzungspflicht kann als Einschränkung an der entsprechenden Straße angegeben werden, siehe:"
+        wiki="Tag:bicycle%3Duse_sidepath">
+        <tag key="highway" value="path"/>
+        <tag key="foot" value="designated"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="segregated" value="yes"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.28b" name="Split pedestrian &amp; bicycle path without mandatory use (AT:52.28b)" de.name="Getrennter Rad- und Gehweg ohne Benutzungspflicht (AT:52.28b)"
+        help="Differs from split pedestrian &amp; bicycle paths WITH mandatory use by the lack of restrictions on the corresponding roads, see:"
+        de.help="Unterscheidet sich von getrennten Geh- und Radwegen MIT Benutzungspflicht durch die fehlende Einschränkung an den entsprechenden Straßen, siehe:"
+        wiki="Tag:bicycle%3Duse_sidepath">
+        <tag key="highway" value="path"/>
+        <tag key="foot" value="designated"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="segregated" value="yes"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:53.26" name="Bicycle road (AT:53.26)" de.name="Fahrradstraße (AT:53.26)"
+        de.wiki="DE:Key:bicycle_road#Situation_in_.C3.96sterreich">
+        <tag key="bicycle_road" value="yes"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="maxspeed" value="30"/>
+        <tag key="source:maxspeed" value="AT:bicycle_road"/>
+        <tag key="vehicle" value="destination" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:53.9a" name="Pedestrian zone (AT:53.9a)" de.name="Fußgängerzone (AT:53.9a)"
+            wiki="Tag:highway%3Dpedestrian"
+            de.wiki="DE:Tag:highway%3Dpedestrian">
+        <tag key="highway" value="pedestrian"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:53.26a" icon="AT_53_26a" name="School zone (AT:53.26a)" de.name="Schulstraße (AT:53.26a)"
+            wiki="Tag:highway%3Dliving_street"
+            de.wiki="DE:Tag:highway%3Dliving_street#Schulstraßen">
+        <tag key="highway" value="living_street"/>
+        <tag key="motor_vehicle" value="yes" />
+        <tag key="motor_vehicle:conditional" value="private @ ($condition)" />
+        <tag key="maxspeed:conditional" value="walk @ ($condition)" />
+        <parameter input="textfield" name="conditional" de.name="conditional" type="text" ident="condition" default="Mo-Fr 07:00-09:00, 11:30-13:00; PH off; SH off" suffix="" field_width="20"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:53.9c" icon="AT_53_9c" name="Home zone (AT:53.9c)" de.name="Wohnstraße (AT:53.9c)"
+            wiki="Tag:highway%3Dliving_street"
+            de.wiki="DE:Tag:highway%3Dliving_street#Wohnstra.C3.9Fen">
+        <tag key="highway" value="living_street"/>
+        <tag key="vehicle" value="destination" />
+        <tag key="bicycle" value="yes" />
+        <tag key="maxspeed" value="walk" />
+        <tag key="source:maxspeed" value="AT:Wohnstraße"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+    
+    <sign ref="AT:53.9e[$val]" icon="AT_53_9e" name="Traffic calming zone (AT:53.9e)" de.name="Begegnungszone (AT:53.9e)"
+            wiki="Tag:highway%3Dliving_street"
+            de.wiki="DE:Tag:highway%3Dliving_street#Begegnungszonen">
+        <tag key="highway" value="living_street"/>
+        <tag key="vehicle" value="yes" />
+        <tag key="maxspeed" value="$val" />
+        <tag key="source:maxspeed" value="AT:Begegnungszone:$val"/>
+        <parameter ident="val" input="textfield" suffix="km/h" default="20" field_width="2"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+    
+    <sign ref="AT:52.19[$val]" icon="AT_52_19" name="Minimum speed limit (AT:52.19)" de.name="Vorgeschriebene Mindestgeschwindigkeit (AT:52.19)"
+            wiki="Key:minspeed">
+        <tag key="minspeed" value="$val"/>
+        <parameter ident="val" input="textfield" suffix="km/h" default="30" field_width="2"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+    
+    <sign ref="AT:WVO_F.1" name="Treppelweg (AT:WVO_F.1)" de.name="Treppelweg (AT:WVO_F.1)" 
+        de.help="Treppelwege sind in der Wasserstraßen-Verkehrsordnung geregelt und in erster Linie zu Zwecken der Schifffahrt angelegt. 
+            Zumeist daher highway=track + tracktype=grade1, in seltenen Fällen auch highway=path. 
+            Beachte auch die quadratischen Zusatztafeln für die Berechtigungen für Radfahrer und Rollstuhlfahrer."
+        de.wiki="Treppelweg">
+        <tag key="highway" value="track"/>
+        <tag key="motor_vehicle" value="private"/>
+        <tag key="description" value="Treppelweg"/>
+        <tag key="inline_skates" value="no"/>
+        <tag key="bicycle" value="yes"/>
+        <supplementary id="Zusatztafel_Text"/>
+        <supplementary id="WVO_F.3.1"/>
+        <supplementary id="WVO_F.3.2"/>
+        <supplementary id="WVO_F.4.1"/>
+        <supplementary id="WVO_F.4.2"/>
+    </sign>
+
+    <sign ref="AT:52.1" name="All vehicles prohibited (AT:52.1)" de.name="Verbot für Fahrzeuge aller Art (AT:52.1)">
+        <tag key="vehicle" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_ausgenommen_Anrainerverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_Radfahrer"/>
+        <supplementary id="Zusatztafel_ausgenommen_Linienbusse"/>
+        <supplementary id="Zusatztafel_ausgenommen_Taxi"/>
+        <supplementary id="Zusatztafel_ausgenommen_Lieferverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_landwirtschaftlicher_Verkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_forstwirtschaftlicher_Verkehr"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:FKV_1.9" icon="AT_FKV_1_9" name="Forestry Road (AT:FKV_1.9)" de.name="Forststraße (AT:FKV_1.9)">
+        <tag key="vehicle" value="forestry" ident="mode"/>
+        <supplementary id="Zusatztafel_ausgenommen_Anrainerverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_Radfahrer"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.6a" name="Motorcars prohibited (AT:52.6a)" de.name="Verbot für Kraftwagen (AT:52.6a)"
+            long_name="Motorcars and other multi-track motorized vehicles prohibited"
+            de.long_name="Verbot für Kraftwagen und sonstige mehrspurige Kraftfahrzeuge"
+            wiki="Key:motorcar"
+            de.wiki="DE:Key:motorcar">
+        <tag key="motorcar" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_ausgenommen_Anrainerverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_Linienbusse"/>
+        <supplementary id="Zusatztafel_ausgenommen_Taxi"/>
+        <supplementary id="Zusatztafel_ausgenommen_Lieferverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_landwirtschaftlicher_Verkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_forstwirtschaftlicher_Verkehr"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.7a-1" name="Heavy goods vehicles prohibited (AT:52.7a-1)" de.name="Verbot für LKW (AT:52.7a-1)"
+            wiki="Key:hgv"
+            de.wiki="DE:Key:hgv">
+        <tag key="hgv" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_ausgenommen_Anrainerverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_Lieferverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_landwirtschaftlicher_Verkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_forstwirtschaftlicher_Verkehr"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.7a-2[$val]" icon="AT_52_7a-2" name="Heavy goods vehicles with a max allowed weight above the specified weight prohibited (AT:52.7a-2)" de.name="Verbot für LKW mit höchst zulässigem Gesamtgewicht über angegebenem Gewicht (AT:52.7a-2)"
+        wiki="Key:maxweightrating">
+        <tag key="maxweightrating:hgv" value="$val"/>
+        <parameter input="textfield" name="max. allowed weight" de.name="höchst zulässiges Gesamtgewicht" type="float" ident="val" default="5.5" suffix="t" field_width="3"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.7a-3[$val]" icon="AT_52_7a-3" name="Heavy goods vehicles exceeding specified length prohibited (AT:52.7a-3)" de.name="Verbot für LKW über angegebener Länge (AT:52.7a-3)"
+        wiki="Key:maxlength"
+        de.wiki="DE:Key:maxlength">
+        <tag key="maxlength" value="$val"/>
+        <parameter input="textfield" name="max. length" de.name="Maximale Länge" type="float" ident="val" default="10" suffix="m" field_width="3"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+
+    <sign ref="AT:52.8c" name="Bicycles prohibited (AT:52.8c)" de.name="Verbot für Fahrräder (AT:52.8c)"
+            wiki="Key:bicycle"
+            de.wiki="DE:Key:access">
+        <tag key="bicycle" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_ausgenommen_Anrainerverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_Lieferverkehr"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.6b" name="Motorcycles prohibited (AT:52.6b)" de.name="Verbot für Krafträder (AT:52.6b)">
+        <tag key="motorcycle" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_ausgenommen_Anrainerverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_Lieferverkehr"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.14a" name="Horses prohibited (AT:52.14a)" de.name="Verbot für Reiter (AT:52.14a)">
+        <tag key="horse" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.14b" name="Pedestrians prohibited (AT:52.14b)" de.name="Verbot für Fußgänger (AT:52.14b)">
+        <tag key="foot" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.6c" name="Motor vehicles prohibited (AT:52.6c)" de.name="Verbot für Kraftfahrzeuge (AT:52.6c)"
+        long_name="Motorcycles, also with sidecar, mopeds, mofas as well as motorcars and other multi-track motorized vehicles prohibited (AT:52.6c)"
+        de.long_name="Verbot für Krafträder, auch mit Beiwagen, Kleinkrafträder und Mofas sowie für Kraftwagen und sonstige mehrspurige Kraftfahrzeuge (AT:52.6c)">
+        <tag key="motor_vehicle" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_ausgenommen_Anrainerverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_Linienbusse"/>
+        <supplementary id="Zusatztafel_ausgenommen_Taxi"/>
+        <supplementary id="Zusatztafel_ausgenommen_Lieferverkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_landwirtschaftlicher_Verkehr"/>
+        <supplementary id="Zusatztafel_ausgenommen_forstwirtschaftlicher_Verkehr"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.7e" name="Hazardous cargo prohibited (AT:52.7e)" de.name="Verbot für kennzeichnungspflichtige Kraftfahrzeuge mit gefährlichen Gütern (AT:52.7e)"
+            wiki="Key:hazmat" 
+            de.wiki="DE:Key:hazmat">
+        <tag key="hazmat" value="no" ident="mode"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.9c[$val]" icon="AT_52_9c" name="Weight limit (AT:52.9c)" de.name="Tatsächliches Gewicht (AT:52.9c)"
+            wiki="Key:maxweight">
+        <tag key="maxweight" value="$val"/>
+        <parameter ident="val" input="textfield" default="5.5" suffix="t" field_width="3"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.9d[$val]" icon="AT_52_9d" name="Axle weight limit (AT:52.9d)" de.name="Tatsächliche Achslast (AT:52.9d)"
+            wiki="Key:maxaxleload">
+        <tag key="maxaxleload" value="$val"/>
+        <parameter ident="val" input="textfield" default="8" suffix="t" field_width="3"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.9a[$val]" icon="AT_52_9a" name="Width limit (AT:52.9a)" de.name="Tatsächliche Breite (AT:52.9a)"
+            wiki="Key:maxwidth">
+        <tag key="maxwidth" value="$val"/>
+        <parameter ident="val" input="textfield" default="2" suffix="m" field_width="3"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.9b[$val]" icon="AT_52_9b" name="Height limit (AT:52.9b)" de.name="Tatsächliche Höhe (AT:52.9b)"
+            wiki="Key:maxheight"
+            de.wiki="DE:Key:maxheight">
+        <tag key="maxheight" value="$val"/>
+        <parameter ident="val" input="textfield" default="2.9" suffix="m" field_width="3"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.10a[$val]" icon="AT_52_10a" name="Speed limit (AT:52.10a)" de.name="Zulässige Höchstgeschwindigkeit (AT:52.10a)"
+            wiki="Key:maxspeed"
+            de.wiki="DE:Key:maxspeed">
+        <tag key="maxspeed" value="$val" ident="restriction"/>
+        <parameter ident="val" type="int" input="combo" editable="yes" text="speed-limit" de.text="Höchstgeschwindigkeit" suffix="km/h" values="5,10,20,30,40,50,60,70,80,90,100,110,120,130" default="30" field_width="3"/>
+        <supplementary id="54.f"/>
+        <supplementary id="54.g"/>
+        <supplementary id="Zusatztafel_conditional"/>
+        <supplementary id="Zusatztafel_hgv_conditional"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:52.11a[$val]" icon="AT_52_11a" name="Speed limit zone (AT:52.11a)" de.name="Zone mit zulässiger Höchstgeschwindigkeit (AT:52.11a)">
+        <tag key="maxspeed" value="$val"/>
+        <tag key="source:maxspeed" value="AT:zone:$val"/>
+        <parameter ident="val" type="int" input="combo" editable="yes" text="speed-limit" de.text="Höchstgeschwindigkeit" suffix="km/h" values="20,30" default="30" field_width="2"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:50.7a" icon="AT_50_7a" traffic_sign_tag="" name="Incline (AT:50.7a)" de.name="Steigung (AT:52.7a)"
+            help="Applies for the road section with steep incline. (Split the way at the ends of the steep section.) 
+Positive values indicate movement upward in the direction of the (osm) way and negative values indicate movement downwards in the direction of the way."
+            de.help="Gilt für das Streckenstück mit hoher Steigung. (Weg am Anfang und Ende des steilen Abschnittes auftrennen.) 
+Positive Werte stehen für einen Anstieg in Richtung des ways und negative Werte für einen Abfall in Richtung des ways."
+            wiki="Key:incline"
+            de.wiki="DE:Key:incline">
+        <tag key="incline" value="$val%"/>
+        <parameter input="textfield" name="max. incline" de.name="Maximale Steigung" type="int" ident="val" default="10" suffix="%" field_width="3"/>
+        <supplementary id="Zusatztafel_Text"/>
+    </sign>
+
+    <sign ref="AT:FKV_1.2" icon="AT_FKV_1_2" name="Forest area with permanent ban on access (AT:FKV_1.2)" de.name="Forstliches Sperrgebiet (AT:FKV_1.2)">
+        <tag key="access" value="forestry"/>
+    </sign>
+
+    <sign ref="AT:FKV_1.3" icon="AT_FKV_1_3" name="Forest area with temporary ban on access (AT:FKV_1.3)" de.name="Befristetes Forstliches Sperrgebiet (AT:FKV_1.3)">
+        <tag key="access:conditional" value="forestry @ $condition"/>
+        <parameter input="textfield" name="conditional" de.name="conditional" type="text" ident="condition" default="2024 May 01 - 2024 Oct 01" suffix="" field_width="20"/>
+    </sign>
+    
+    <sign ref="AT:FKV_1.8" icon="AT_FKV_1_8" name="Permission to use forest roads or other paths in the forest by cyclists (AT:FKV_1.8)" de.name="Zulässigkeit der allgemeinen Benützung von Forststraßen oder sonstigen Wegen im Wald durch Radfahrer (AT:FKV_1.8)">
+        <tag key="bicycle" value="yes"/>
+    </sign>
+
+    <sign id="jagdliches_Sperrgebiet" icon="jagdliches_Sperrgebiet" name="Hunting area with permanent ban on access" de.name="Jagdliches Sperrgebiet">
+        <tag key="access" value="no"/>
+    </sign>
+
+    <sign id="befristetes_jagdliches_Sperrgebiet" icon="befristetes_jagdliches_Sperrgebiet" name="Hunting area with temporary ban on access" de.name="Befristetes Jagdliches Sperrgebiet">
+        <tag key="access:conditional" value="no @ $condition"/>
+        <parameter input="textfield" name="conditional" de.name="conditional" type="text" ident="condition" default="Oct 01 - Mar 31" suffix="" field_width="20"/>
+    </sign>
+
+    <sign id="Zusatztafel_ausgenommen_Anrainerverkehr" supplementary="yes" name="except for access" de.name="ausgenommen Anrainerverkehr"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag tag_ref="mode" append_value="destination"/>
+    </sign>
+
+    <sign id="Zusatztafel_ausgenommen_Radfahrer" supplementary="yes" name="Bicycles allowed" de.name="ausgenommen Radfahrer"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag key="bicycle" value="yes"/>
+    </sign>
+
+    <sign id="Zusatztafel_ausgenommen_Linienbusse" supplementary="yes" name="Bus allowed" de.name="ausgenommen Linienbusse"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag key="bus" value="yes"/>
+    </sign>
+
+    <sign id="Zusatztafel_ausgenommen_Taxi" supplementary="yes" name="Taxi allowed" de.name="ausgenommen Taxi"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag key="taxi" value="yes"/>
+    </sign>
+
+    <sign id="Zusatztafel_ausgenommen_Lieferverkehr" supplementary="yes" name="Delivery vehicles allowed" de.name="ausgenommen Lieferverkehr"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag tag_ref="mode" append_value="delivery"/>
+    </sign>
+
+    <sign id="Zusatztafel_ausgenommen_landwirtschaftlicher_Verkehr" supplementary="yes" name="Agricultural vehicles allowed" de.name="ausgenommen Landwirtschaftlicher Verkehr"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag tag_ref="mode" append_value="agricultural"/>
+    </sign>
+
+    <sign id="Zusatztafel_ausgenommen_forstwirtschaftlicher_Verkehr" supplementary="yes" name="Forestry vehicles allowed" de.name="ausgenommen Forstwirtschaftlicher Verkehr"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag tag_ref="mode" append_value="forestry"/>
+    </sign>
+
+    <sign ref="54.f" icon="AT_54_f" supplementary="yes" name="In case of snow or ice (AT:54.f)" de.name="Bei Schneelage oder Eisbildung (AT:54.f)">
+        <tag tag_ref="restriction" condition="conditional"/>
+        <tag tag_ref="restriction" append_value="$val @ (snow)"/>
+    </sign>
+
+    <sign ref="54.g" icon="AT_54_g" supplementary="yes" name="When the road is wet (AT:54.g)" de.name="Bei nasser Fahrbahn (AT:54.g)">
+        <tag tag_ref="restriction" condition="conditional"/>
+        <tag tag_ref="restriction" append_value="$val @ (wet)"/>
+    </sign>
+
+    <sign id="Zusatztafel_hgv_conditional" supplementary="yes" name="conditional hgv restriction" de.name="Bedingte LKW Beschränkung"
+        wiki="Conditional_restrictions"
+        de.wiki="DE:Conditional_restrictions"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag tag_ref="restriction" condition="hgv:conditional"/>
+        <tag tag_ref="restriction" append_value="$val @ ($hgv_condition)"/>        
+        <parameter input="textfield" name="hgv_conditional" de.name="hgv_conditional" type="text" ident="hgv_condition" default="weight>7.5 AND 22:00-05:00" suffix="" field_width="20"/>
+    </sign>
+
+    <sign id="Zusatztafel_conditional" supplementary="yes" name="conditional restriction" de.name="Bedingte Beschränkung"
+        wiki="Conditional_restrictions"
+        de.wiki="DE:Conditional_restrictions"
+        de.help="Setzt nur die entsprechende Ausnahme, aber keinen Wert für traffic_sign. Der genaue, vollständige Text der Zusatztafel kann über das Schild 'ZUSATZTAFELTEXT ERFASSEN' festgehalten werden.">
+        <tag tag_ref="restriction" condition="conditional"/>
+        <tag tag_ref="restriction" append_value="$val @ ($condition)"/>
+        <parameter input="textfield" name="conditional" de.name="conditional" type="text" ident="condition" default="Mo-Sa 05:00-22:00;PH off" suffix="" field_width="20"/>
+    </sign>
+
+    <sign ref="54[$text]" id="Zusatztafel_Text" supplementary="yes" icon="Zusatztafel_text" name="supplementary text (AT:54[...])" de.name="Zusatztafel Text (AT:54[...])"
+        de.help="Speichert den genauen Text der Zusatz Tafel unter traffic_sign. Die entsprechenden Tags müssen extra gesetzt werden!
+Wie bei allen anderen Schildern auch, muss dazu die Option 'traffic_sign Merkmal' aktiviert sein.">
+        <parameter input="textfield" name="text" de.name="text" type="text" ident="text" default="" suffix="" field_width="20"/>
+    </sign>
+    
+    <sign ref="WVO_F.3.1" supplementary="yes" name="Supplementary sign for Treppelweg: Cycling permitted (AT:WVO_F.3.1)" de.name="Treppelweg-Zusatztafel Radfahren erlaubt (AT:WVO_F.3.1)" 
+        de.help="Zusatztafel für Treppelwege - nicht zu verwechseln mit Radweg ohne Benützungspflicht (AT:53.27)"
+        de.wiki="Treppelweg">
+        <tag key="bicycle" value="designated"/>
+    </sign>
+    
+    <sign ref="WVO_F.3.2" supplementary="yes" name="Supplementary sign for Treppelweg: Cycling forbidden (AT:WVO_F.3.2)" de.name="Treppelweg-Zusatztafel Radfahren verboten (AT:WVO_F.3.2)"
+        de.wiki="Treppelweg">
+        <tag key="bicycle" value="no"/>
+    </sign>
+    
+    <sign ref="WVO_F.4.1" supplementary="yes" name="Supplementary sign for Treppelweg: Roller skating permitted  (AT:WVO_F.4.1)" de.name="Treppelweg-Zusatztafel Rollschuhfahren erlaubt (AT:WVO_F.4.1)"
+        de.wiki="Treppelweg">
+        <tag key="inline_skates" value="designated"/>
+    </sign>
+    
+    <sign ref="WVO_F.4.2" supplementary="yes" name="Supplementary sign for Treppelweg: Roller skating forbidden (AT:WVO_F.4.2)" de.name="Treppelweg-Zusatztafel Rollschuhfahren verboten (AT:WVO_F.4.2)"
+        de.wiki="Treppelweg">
+        <tag key="inline_skates" value="no"/>
+    </sign>
+</roadsignpreset>
Index: /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetBE.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetBE.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetBE.xml	(revision 36424)
@@ -0,0 +1,1808 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!-- roadsigns plugin preset file for Belgium-->
+ <roadsignpreset country="BE">
+  <sign ref="BE:A1a"
+    useful="no"
+    name="Dangerous left curve"
+    nl.name="Scherpe bocht naar links">
+    <tag key="hazard" value="bend"/>
+  </sign>
+  <sign ref="BE:A1b"
+    useful="no"
+    name="Dangerous right curve"
+    nl.name="Scherpe bocht naar rechts">
+    <tag key="hazard" value="bend"/>
+  </sign>
+  <sign ref="BE:A1c"
+    useful="no"
+    name="Left curve followed by right curve"
+    nl.name="Bocht naar links gevolgd door bocht naar rechts">
+    <tag key="hazard" value="bend"/>
+  </sign>
+  <sign ref="BE:A1d"
+    useful="no"
+    name="Right curve followed by left curve"
+    nl.name="Bocht naar rechts gevolgd door bocht naar links">
+    <tag key="hazard" value="bend"/>
+  </sign>
+  <sign ref="BE:A3"
+    name="Steep descent"
+    nl.name="Steile afdaling"
+    fr.name="Descente"
+    help="Applies for the road section with steep incline. (Split the way at the ends of the steep section.)  Positive values indicate movement upward in the direction of the (osm) way and negative values indicate movement downwards in the direction of the way."
+    nl.help="Geldt op het gedeelte van de way met sterke hellingsgraad (Splits de weg bij aanvang en einde.)  Positieve waardes betekenen dat de weg stijgt in de richting van de weg, negatieve dat het gaat om een afdaling."
+    wiki="Key:incline">
+    <tag key="incline" value="$val%"/>
+      <parameter
+       input="textfield"
+        name="max. incline"
+        nl.name="Maximaal dalingspercentage"
+        type="int"
+        ident="val"
+        default="-15"
+        suffix="%"
+        field_width="3"
+      />
+  </sign>
+  <sign ref="BE:A5"
+    name="Steep ascent"
+    nl.name="Steile helling"
+    help="Applies for the road section with steep incline. (Split the way at the ends of the steep section.)  Positive values indicate movement upward in the direction of the (osm) way and negative values indicate movement downwards in the direction of the way."
+    nl.help="Geldt op het gedeelte van de way met sterke hellingsgraad (Splits de weg bij aanvang en einde.)  Positieve waardes betekenen dat de weg stijgt in de richting van de weg, negatieve dat het gaat om een afdaling."
+    wiki="Key:incline">
+    <tag key="incline" value="$val%"/>
+      <parameter
+        input="textfield"
+        name="max. incline"
+        nl.name="Maximaal stijgingspercentage"
+        type="int"
+        ident="val"
+        default="15"
+        suffix="%"
+        field_width="3"
+      />
+     <tag key="hazard" value="steep_incline"/>
+   </sign>
+  <sign ref="BE:A7a"
+    name="Road narrows"
+    nl.name="Weg versmalt"
+    wiki="Key:traffic_calming">
+    <tag key="traffic_calming" value="choker"/>
+  </sign>
+  <sign ref="BE:A7b"
+    name="Road narrows right"
+    nl.name="Weg versmalt rechts"
+    useful="no"
+    wiki="Key:traffic_calming">
+    <tag key="traffic_calming" value="choker"/>
+  </sign>
+  <sign ref="BE:A7c"
+    name="Road narrows left"
+    nl.name="Weg versmalt links"
+    useful="no"
+    wiki="Key:traffic_calming">
+    <tag key="traffic_calming" value="choker"/>
+  </sign>
+  <sign ref="BE:A9"
+    name="Bridge which can open and close"
+    nl.name="Beweegbare brug"
+    useful="no"
+    wiki="Key:bridge:movable"
+    help="Select a type. Choose from: swing, lift, bascule, drawbridge, transporter">
+    <tag key="bridge" value="movable"/>
+    <tag key="bridge:movable" value="$val"/>
+      <parameter
+        ident="val"
+        input="combo"
+        editable="yes"
+        text="Type"
+        nl.text="Type beweegbare brug"
+        values="swing, lift, bascule, drawbridge, transporter"
+        default="bascule"
+        field_width="12"
+      />
+  </sign>
+  <sign ref="BE:A11"
+    name="Quay"
+    nl.name="Uitweg op een kaai of oever"
+    wiki="Key:Proposed_features/hazard">
+  </sign>
+  <sign ref="BE:A13"
+    name="Bumps on road, but not the traffic_calming kind"
+    nl.name="Overdwarse uitholling of ezelsrug, niet voor verkeersdrempel"
+    wiki="Key:Proposed_features/hazard">
+  </sign>
+  <sign ref="BE:A14"
+    name="Speed bump"
+    nl.name="Verhoogde inrichting(en), verkeersdrempel"
+    wiki="Key:traffic_calming">
+    <tag key="traffic_calming" value="bump"/>
+  </sign>
+  <sign ref="BE:A15"
+    name="Slippery road"
+    nl.name="Glad wegdek"
+    wiki="Key:Proposed_features/hazard">
+    <supplementary id="BE:Type_III_nl"/> <!--When road is wet"-->
+    <supplementary id="BE:A15a"/> <!--Icy road"-->
+  </sign>
+  <sign ref="BE:A15a"
+    supplementary="yes"
+    name="Icy road"
+    nl.name="Glad bij bevroren wegdek"
+    wiki="Key:Proposed_features/hazard">
+    <tag key="hazard" value="icy_road"/>
+  </sign>
+  <sign ref="BE:A17"
+    useful="no"
+    name="Loose chippings"
+    nl.name="Kiezelprojectie">
+  </sign>
+  <sign ref="BE:A19"
+    useful="no"
+    name="Falling rocks"
+    nl.name="Vallende stenen"
+    wiki="Key:Proposed_features/hazard">
+    <tag key="hazard" value="rock_slide"/>
+  </sign>
+  <sign ref="BE:A21"
+    name="Pedestrian crossing"
+    nl.name="Oversteekplaats voor voetgangers">
+    <tag key="highway" value="crossing"/>
+  </sign>
+  <sign ref="BE:A23"
+    useful="no"
+    name="School children crossing the way near school"
+    nl.name="Schoolomgeving">
+    <tag key="hazard" value="school_zone"/>
+  </sign>
+  <sign ref="BE:A25"
+    name="Bicycle crossing"
+    nl.name="Oversteekplaats voor fietsers">
+    <tag key="highway" value="crossing"/>
+    <tag key="bicycle" value="yes"/>
+  </sign>
+  <sign ref="BE:A27"
+    useful="no"
+    name="Wildlife"
+    nl.name="Overstekend wild">
+    <tag key="hazard" value="deer"/>
+  </sign>
+  <sign ref="BE:A29"
+    useful="no"
+    name="Cattle"
+    nl.name="Loslopend vee">
+    <tag key="hazard" value="cattle"/>
+  </sign>
+  <sign ref="BE:A31"
+    useful="no"
+    name="Roadworks"
+    nl.name="Wegenwerken">
+    <tag key="hazard" value="roadworks"/>
+  </sign>
+  <sign ref="BE:A33"
+    name="Traffic lights"
+    nl.name="Verkeerslichten">
+    <tag key="highway" value="traffic_signals"/>
+  </sign>
+  <sign ref="BE:A35"
+    useful="no"
+    name="Low flying airplanes"
+    nl.name="Laagvliegende vliegtuigen">
+    <tag key="hazard" value="low-flying aircraft"/>
+  </sign>
+  <sign ref="BE:A37"
+    useful="no"
+    name="Crosswinds"
+    nl.name="Zijwind">
+    <tag key="hazard" value="crosswinds"/>
+  </sign>
+  <sign ref="BE:A39"
+    name="Bidirectional traffic"
+    nl.name="Verkeer in 2 richtingen">
+    <tag key="oneway" value="no"/>
+  </sign>
+  <sign ref="BE:A41"
+    useful="no"
+    name="Railroad crossing"
+    nl.name="Onbewaakte spoorwegovergang">
+    <tag key="railway" value="level_crossing"/>
+  </sign>
+  <sign ref="BE:A43"
+    useful="no"
+    name="Railroad crossing"
+    nl.name="Onbewaakte spoorwegovergang">
+    <tag key="railway" value="level_crossing"/>
+  </sign>
+  <sign ref="BE:A45"
+    useful="no"
+    name="Railroad crossing 1 track"
+    nl.name="Bewaakte spoorwegovergang 1 spoor">
+    <tag key="railway" value="level_crossing"/>
+  </sign>
+  <sign ref="BE:A47"
+    name="Railroad crossing multiple tracks"
+    nl.name="Bewaakte spoorwegovergang meerdere sporen">
+    <tag key="railway" value="level_crossing"/>
+  </sign>
+  <sign ref="BE:A49"
+    name="Tram rails crossing"
+    nl.name="Tramrails">
+    <tag key="railway" value="level_crossing"/>
+  </sign>
+  <sign ref="BE:A51"
+    useful="no"
+    name="General danger"
+    nl.name="Gevaar">
+    <tag key="hazard" value="undefined"/>
+  </sign>
+
+  <sign ref="BE:B0"
+    name="Priority on turning main road"
+    nl.name="Voorrang op afdraaiende hoofdweg"
+    wiki="Key:give_way">
+    <tag key="highway" value="give_way"/>
+  </sign>
+  <sign ref="BE:B1"
+    name="Give way"
+    nl.name="Voorrang verlenen"
+    wiki="Key:give_way">
+    <tag key="highway" value="give_way"/>
+    <supplementary id="BE:M1"/> <!--only_applies_to_bicycles"-->
+    <supplementary id="BE:M8"/> <!--only_applies_to_bicycles_and_mofas"-->
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:Type_Ib"/> <!--STOP signs coming up in x m"-->
+  </sign>
+  <sign ref="BE:B3"
+    useful="no"
+    name="Give way"
+    nl.name="Voorrang verlenen verderop"
+    wiki="Key:give_way">
+    <tag key="highway" value="give_way"/>
+    <tag key="distance_ahead" value="$val"/>
+      <parameter
+        ident="val"
+        input="textfield"
+        default="50"
+        suffix="m"
+        field_width="3"
+      />
+  </sign>
+  <sign ref="BE:B5"
+    name="Stop sign"
+    nl.name="Stopbord"
+    wiki="Key:stop">
+    <tag key="highway" value="stop"/>
+    <supplementary id="BE:M1"/> <!--only_applies_to_bicycles"-->
+    <supplementary id="BE:M8"/> <!--only_applies_to_bicycles_and_mofas"-->
+  </sign>
+  <sign ref="BE:B7"
+    useful="no"
+    name="Give way"
+    nl.name="Stopbord verderop"
+    wiki="Key:stop">
+    <tag key="highway" value="stop"/>
+    <tag key="distance_ahead" value="$val"/>
+      <parameter
+        ident="val"
+        input="textfield"
+        default="250"
+        suffix="m"
+        field_width="3"
+      />
+  </sign>
+  <sign ref="BE:B9"
+    name="Priority road"
+    nl.name="Voorrangsweg"
+    wiki="Key:priority_road">
+    <tag key="priority_road" value="designated"/>
+  </sign>
+  <sign ref="BE:B11"
+    name="Priority road ends"
+    nl.name="Einde voorrangsweg"
+    wiki="Key:priority_road">
+    <tag key="priority_road" value="end"/>
+  </sign>
+  <sign ref="BE:B13"
+    traffic_sign_tag="BE:B13[$val]"
+    useful="no"
+    name="Priority road ends in x m"
+    nl.name="Einde voorrangsweg op x m"
+    wiki="Key:priority_road">
+    <tag key="priority_road" value="end"/>
+    <tag key="distance_ahead" value="$val"/>
+      <parameter
+        ident="val"
+        input="textfield"
+        default="250"
+        suffix="m"
+        field_width="3"
+      />
+  </sign>
+
+  <sign ref="BE:C1"
+    name="One-way street"
+    nl.name="Eénrichtingsverkeer"
+    fr.name="Sens unique"
+    wiki="Key:oneway">
+    <tag key="oneway" value="yes"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_moped_a_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_moped_a_fr-->
+    <supplementary id="BE:M11_nl"/> <!--except_for_bicycles_and_speed_pedelec_nl-->
+    <supplementary id="BE:M11_fr"/> <!--except_for_bicycles_and_speed_pedelec_fr-->
+    <supplementary id="BE:M12_nl"/> <!--except_for_bicycles_moped_a_and_speed_pedelec_nl-->
+    <supplementary id="BE:M12_fr"/> <!--except_for_bicycles_moped_a_and_speed_pedelec_fr-->
+    <supplementary id="BE:Type_IV"/> <!--except for vehicle type"-->
+  </sign>
+  <sign ref="BE:C3"
+    name="All vehicles prohibited"
+    nl.name="Verboden doorgang voor alle voertuigen">
+    <tag key="horse" value="no"/>
+    <tag key="vehicle" value="no"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_moped_a_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_moped_a_fr-->
+    <supplementary id="BE:M11_nl"/> <!--except_for_bicycles_and_speed_pedelec_nl-->
+    <supplementary id="BE:M11_fr"/> <!--except_for_bicycles_and_speed_pedelec_fr-->
+    <supplementary id="BE:M12_nl"/> <!--except_for_bicycles_moped_a_and_speed_pedelec_nl-->
+    <supplementary id="BE:M12_fr"/> <!--except_for_bicycles_moped_a_and_speed_pedelec_fr-->
+    <supplementary id="BE:Type_IV_local_traffic_nl"/>
+    <supplementary id="BE:Type_IV_local_traffic_fr"/>    
+    <supplementary id="BE:Type_IV_residents_nl" />
+    <supplementary id="BE:Type_IV_residents_exceptions_nl" />
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C5"
+    name="Motorcars prohibited"
+    nl.name="Verboden voor gemotoriseerde voertuigen met meer dan 2 wielen"
+    wiki="Key:motorcar">
+    <tag key="motor_vehicle" value="no"/>
+    <tag key="motorcycle" value="yes"/>
+    <tag key="mofa" value="yes"/>
+    <tag key="moped" value="yes"/>
+    <tag key="speed_pedelec" value="yes"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C6"
+    useful="no"
+    name="Quads prohibited"
+    nl.name="Verboden voor quads">
+    <tag key="atv" value="no" ident="mode"/>
+  </sign>
+  <sign ref="BE:C7"
+    name="Motorcycles prohibited"
+    nl.name="Verboden voor moto's">
+    <tag key="motorcycle" value="no" ident="mode"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C9"
+    name="Mopeds prohibited"
+    nl.name="Verboden voor motorfietsen">
+    <tag key="mofa" value="no"/>
+    <tag key="moped" value="no"/>
+    <tag key="speed_pedelec" value="no"/>
+  </sign>
+  <sign ref="BE:C11"
+    name="Bicycles prohibited"
+    nl.name="Verboden voor fietsers"
+    wiki="Key:bicycle">
+    <tag key="bicycle" value="no" ident="mode"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C13"
+    useful="no"
+    name="Horse carriages prohibited"
+    nl.name="Verboden voor paardrijtuigen">
+    <tag key="carriage" value="no"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C15"
+    name="Horses prohibited"
+    nl.name="Verboden voor ruiters (ook paarden aan de hand)">
+    <tag key="horse" value="no" ident="mode"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C17"
+    useful="no"
+    name="Push carts prohibited"
+    nl.name="Verboden voor stootkarren">
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C19"
+    name="Pedestrians prohibited"
+    nl.name="Verboden voor voetgangers">
+    <tag key="foot" value="no" ident="mode"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C21"
+    name="Weight limit"
+    nl.name="Maximaal toegelaten brutogewicht"
+    wiki="Key:maxweight">
+    <tag key="maxweight" value="$val"/>
+      <parameter
+        ident="val"
+        input="textfield"
+        default="5.5"
+        suffix="t"
+        field_width="3"
+      />
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C22"
+    name="No entry for coaches"
+    nl.name="Verboden toegang voor bestuurders van autocars.">
+    <tag key="tourist_bus" value="no"/>
+    <tag key="coach" value="no"/>
+  </sign>
+  <sign ref="BE:C23"
+    name="Heavy goods vehicles prohibited"
+    nl.name="Vrachtwagens verboden"
+    wiki="Key:hgv">
+    <tag key="hgv" value="no" ident="hgv_weight_access"/>
+    <tag key="goods" value="no" ident="goods_weight_access"/>
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:Type_VIIa"/> <!--Max weight specification"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C24a"
+    name="Hazardous cargo prohibited"
+    nl.name="Voertuigen die gevaarlijke goederen vervoeren verboden"
+    wiki="Key:hazmat">
+    <tag key="hazmat" value="no" ident="mode"/>
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C24b"
+    name="Hazardous explosive cargo prohibited"
+    nl.name="Verboden toegang voor bestuurders van voertuigen die gevaarlijke ontvlambare of ontplofbare stoffen vervoeren">
+    <tag key="     access:explosives" value="no" ident="mode"/>
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C24c"
+    name="Water polluting cargo prohibited"
+    nl.name="Verbod voor cargo die gevaar oplevert voor het grondwater"
+    wiki="Key:hazmat" nl.wiki="BE:Key:hazmat">
+    <tag key="hazmat:water" value="no" ident="mode"/>
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign id="BE:Hazmat_ADR_Tunnel"
+    ref="BE:Hazmat_ADR_Tunnel[$val]"
+    name="Hazardous materials of ADR Class A B C D E forbidden in tunnel"
+    nl.name="Verbod voor gevaarlijke cargo van ADR-klasse A B C D E in tunnel"
+    wiki="Key:hazmat" nl.wiki="BE:Key:hazmat">
+    <tag key="hazmat:$val" value="no" ident="mode"/>
+      <parameter
+        ident="val"
+        input="textfield"
+        default="E"
+        field_width="5"
+      />
+    <supplementary id="BE:Type_Ia"/> <!--coming up in x m"-->
+  </sign>
+  <sign ref="BE:C25"
+    name="Length limit"
+    nl.name="Maximaal toegelaten lengte"
+    wiki="Key:maxlength">
+    <tag key="maxlength" value="$val"/>
+      <parameter
+        ident="val"
+        input="textfield"
+        default="10"
+        suffix="m"
+        field_width="3"
+      />
+    <supplementary id="BE:ZONE"/>
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+  </sign>
+  <sign ref="BE:C27"
+    name="Width limit"
+    nl.name="Maximaal toegelaten breedte"
+    wiki="Key:maxwidth">
+    <tag key="maxwidth" value="$val"/>
+      <parameter
+        ident="val"
+        input="textfield"
+        default="2"
+        suffix="m"
+        field_width="3"
+      />
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C29"
+    name="Height limit"
+    nl.name="Maximaal toegelaten hoogte"
+    wiki="Key:maxheight">
+    <tag key="maxheight" value="$val"/>
+      <parameter
+        ident="val"
+        input="textfield"
+        default="4.2"
+        suffix="m"
+        field_width="3"
+      />
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C31d"
+    name="Forbidden to turn right"
+    nl.name="Verboden af te slaan naar rechts"
+    wiki="Relation:restriction"
+    help="The RoadSigns plugin does not handle relations at this point. Please tag this turn restriction manually. Read wiki for more information on how to map."    >
+  </sign>
+  <sign ref="BE:C31g"
+    name="Forbidden to turn left"
+    nl.name="Verboden af te slaan naar links"
+    wiki="Relation:restriction"
+    help="The RoadSigns plugin does not handle relations at this point. Please tag this turn restriction manually. Read wiki for more information on how to map." >
+  </sign>
+  <sign ref="BE:C33"
+    name="U-turn not allowed"
+    nl.name="Verboden terug te keren"
+    wiki="Relation:restriction"
+    help="The RoadSigns plugin does not handle relations at this point. Please tag this turn restriction manually. Read wiki for more information on how to map." >
+  </sign>
+  <sign ref="BE:C35"
+    name="No overtaking"
+    nl.name="Voorbijsteken verboden"
+    wiki="Key:overtaking"
+    help="Use overtaking=forward if overtaking is allowed when driving in the direction of the way but not in the other direction.
+    Use overtaking=backward if overtaking is allowed when driving against the direction of the way but not in the other direction.">
+    <tag key="overtaking" value="no"/>
+    <supplementary id="BE:Type_II"/> <!--Over the following x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C37"
+    name="End of overtaking prohibition"
+    nl.name="Einde verbod op voorbijsteken"
+    wiki="Key:overtaking"
+    help="No specific tags needed, as overtaking=yes is assumed default ">
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C39"
+    name="No overtaking for trucks"
+    nl.name="Voorbijsteken verboden voor vrachtwagens +3.5t"
+    wiki="Key:overtaking"
+    help="Use overtaking:hgv=forward if overtaking is allowed for trucks when driving in the direction of the way but not in the other direction.
+    Use overtaking:hgv=backward if overtaking is allowed for trucks when driving against the direction of the way but not in the other direction.">
+    <tag key="overtaking:hgv" value="no"/>
+    <supplementary id="BE:Type_II"/> <!--Over the following x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C41"
+    name="End of overtaking prohibition for trucks"
+    nl.name="Einde verbod op voorbijsteken voor vrachtwagens +3.5t"
+    wiki="Key:overtaking"
+    help="No specific tags needed, as overtaking=yes is assumed default ">
+   <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C43"
+    name="Speed limit"
+    nl.name="Maximaal toegelaten snelheid tot aan volgende kruising"
+    wiki="Key:maxspeed"
+    help="Choose from: 5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120">
+    <tag key="maxspeed" value="$val_speed" ident="weight_speed"/>
+      <parameter
+        ident="val_speed"
+        input="combo"
+        text="Speed limit"
+        nl.text="Maximaal toegelaten snelheid"
+        suffix="km/h"
+        default="50"
+        field_width="3"
+      />
+    <supplementary id="BE:Type_VI_nl"/> <!--Herhaling-->
+    <supplementary id="BE:Type_VIIa"/> <!--Max weight specification"-->
+  </sign>
+  <sign ref="BE:C45"
+    name="End of speed limit"
+    nl.name="Toegelaten snelheid wordt weer standaard"
+    wiki="Key:maxspeed"
+    help="Unless another sign applies, maxspeed=50 (within built-up area), maxspeed=90 (outside built-up area in Wallonia), maxspeed=70 (outside built-up area in Flanders) or maxspeed=120 (on roads with at least two lanes in every direction and a central barrier)">
+    <tag key="maxspeed" value="$val"/>
+      <parameter
+        ident="val"
+        input="combo"
+        text="speed-limit"
+        nl.text="Maximaal toegelaten snelheid"
+        suffix="km/h"
+        default="50"
+        field_width="3"
+      />
+  </sign>
+  <sign ref="BE:C46"
+    name="All limitations suspended"
+    nl.name="Alle beperkingen vervallen">
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C47_nl"
+    name="Toll booth. No driving through without stopping"
+    nl.name="Grensovergang. Niet voorbijrijden zonder te stoppen"
+    wiki="Tag:barrier=toll_booth">
+    <tag key="barrier" value="toll_booth"/>
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C47_fr"
+    name="Toll booth. No driving through without stopping"
+    nl.name="Grensovergang. Niet voorbijrijden zonder te stoppen"
+    wiki="Tag:barrier=toll_booth">
+    <tag key="barrier" value="toll_booth"/>
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C48"
+    name="Cruise control prohibited"
+    nl.name="Gebruik van cruise control verboden">
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C49"
+    name="End of cruise control prohibition"
+    nl.name="Einde verbod gebruik van cruise control">
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C5-C7"
+    name="Motorcars and motorcycles prohibited"
+    nl.name="Verboden voor gemotoriseerde voertuigen">
+    <tag key="motor_vehicle" value="no"/>
+    <tag key="mofa" value="yes"/>
+    <tag key="moped" value="yes"/>
+    <tag key="speed_pedelec" value="yes"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C5-C7-C9"
+    name="Motorcars and motorcycles prohibited"
+    nl.name="Verboden voor alle gemotoriseerde voertuigen">
+    <tag key="motor_vehicle" value="no"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:C11-C9"
+    name="Bicycles. speedelecs and mopeds class A and B prohibited"
+    nl.name="Verboden voor (motor)fietsen">
+    <tag key="bicycle" value="no"/>
+    <tag key="mofa" value="no"/>
+    <tag key="moped" value="no"/>
+    <tag key="speed_pedelec" value="no"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+
+  <sign ref="BE:D01a"
+    name="Mandatory to turn into street on the left"
+    nl.name="Verplicht straat links inslaan"
+    wiki="Tag:restriction">
+    <tag key="type" value="restriction"/>
+    <tag key="restriction" value="only_left_turn"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_mofas_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_mofas_fr-->
+  </sign>
+  <sign ref="BE:D01b"
+    name="Mandatory to turn into street on the left"
+    nl.name="Verplicht straat links inslaan"
+    wiki="Tag:restriction">
+    <tag key="type" value="restriction"/>
+    <tag key="restriction" value="only_left_turn"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_mofas_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_mofas_fr-->
+  </sign>
+  <sign ref="BE:D01c"
+    name="Mandatory to continue into the street straight on"
+    nl.name="Verplicht straat rechtdoor volgen"
+    wiki="Tag:restriction">
+    <tag key="type" value="restriction"/>
+    <tag key="restriction" value="only_straight_on"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_mofas_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_mofas_fr-->
+  </sign>
+  <sign ref="BE:D01d"
+    name="Mandatory to follow arrow to the left"
+    nl.name="Verplicht straat links inslaan"
+    wiki="Tag:restriction">
+    <tag key="type" value="restriction"/>
+    <tag key="restriction" value="only_left_turn"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_mofas_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_mofas_fr-->
+  </sign>
+  <sign ref="BE:D02a"
+    name="Mandatory to turn into street on the right"
+    nl.name="Verplicht straat rechts inslaan"
+    wiki="Tag:restriction">
+    <tag key="type" value="restriction"/>
+    <tag key="restriction" value="only_right_turn"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_mofas_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_mofas_fr-->
+  </sign>
+  <sign ref="BE:D02b"
+    name="Mandatory to turn into street on the right"
+    nl.name="Verplicht straat rechts inslaan"
+    wiki="Tag:restriction">
+    <tag key="type" value="restriction"/>
+    <tag key="restriction" value="only_right_turn"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_mofas_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_mofas_fr-->
+  </sign>
+  <sign ref="BE:D02c"
+    name="Mandatory to follow arrow to the right"
+    nl.name="Verplicht straat rechts inslaan"
+    wiki="Tag:restriction">
+    <tag key="type" value="restriction"/>
+    <tag key="restriction" value="only_right_turn"/>
+    <supplementary id="BE:M2_nl"/> <!--except_for_bicycles_nl-->
+    <supplementary id="BE:M2_fr"/> <!--except_for_bicycles_fr-->
+    <supplementary id="BE:M3_nl"/> <!--except_for_bicycles_and_mofas_nl-->
+    <supplementary id="BE:M3_fr"/> <!--except_for_bicycles_and_mofas_fr-->
+  </sign>
+  <sign ref="BE:D05"
+    name="Roundabout"
+    nl.name="Rond punt"
+    fr.name="Rond point"
+    wiki="Tag:junction=roundabout">
+    <tag key="junction" value="roundabout"/>
+  </sign>
+  <sign ref="BE:D07"
+    name="Bicycle path"
+    nl.name="Verplicht fietspad">
+    <tag key="highway" value="path"/>
+    <tag key="bicycle" value="official"/>
+    <tag key="access" value="" ident="mode"/>
+    <supplementary id="BE:M7"/> <!--mopeds_B_forbidden_on_cycleway"-->
+    <supplementary id="BE:M6"/> <!--mopeds_B_cycleway_mandatory"-->
+  </sign>
+  <sign ref="BE:D09"
+    name="Split pedestrian and bicycle path"
+    nl.name="Gescheiden verplicht voet- en fietspad">
+    <tag key="highway" value="path"/>
+    <tag key="foot" value="official"/>
+    <tag key="bicycle" value="official"/>
+    <tag key="segregated" value="yes"/>
+    <tag key="access" value="" ident="mode"/>
+  </sign>
+  <sign ref="BE:D10"
+    name="Pedestrian and bicycle path"
+    nl.name="Gemeenschappelijk verplicht voet- en fietspad">
+    <tag key="highway" value="path"/>
+    <tag key="foot" value="official"/>
+    <tag key="bicycle" value="official"/>
+    <tag key="access" value="" ident="mode"/>
+  </sign>
+  <sign ref="BE:D11"
+    name="Pedestrian path"
+    nl.name="Verplicht voetpad">
+    <tag key="highway" value="path"/>
+    <tag key="foot" value="official"/>
+    <tag key="access" value="" ident="mode"/>
+  </sign>
+  <sign ref="BE:D13"
+    name="Bridle path"
+    nl.name="Verplicht pad voor ruiters en koetsiers">
+    <tag key="highway" value="path"/>
+    <tag key="horse" value="official"/>
+    <tag key="access" value="" ident="mode"/>
+  </sign>
+
+  <sign ref="BE:E0a"
+    name="From this point on"
+    nl.name="Vanaf hier"
+    supplementary="yes">
+  </sign>
+  <sign ref="BE:E0b"
+    name="Up to this point"
+    nl.name="Tot hier"
+    supplementary="yes">
+  </sign>
+  <sign id="BE:E0c"
+    ref="BE:E0c[$val]"
+    name="From this point till x m further"
+    nl.name="Vanaf hier tot x m verder"
+    help="Choose from: 5, 10, 15, 20"
+    supplementary="yes">
+      <parameter
+        ident="val"
+        type="int"
+        input="combo" editable="yes" text="Distance" nl.text="De volgende"
+        suffix="m" values="5, 10, 15, 20"
+        default="5"
+        field_width="2"/>
+  </sign>
+  <sign ref="BE:E0d"
+    name="Continues before and after"
+    nl.name="Loopt door voor en na"
+    supplementary="yes">
+  </sign>
+  <sign ref="BE:E1"
+    name="No Parking"
+    wiki="Key:parking"
+    help="Check and correct tags">
+    <tag key="parking:lanes:right" value="no"/>
+    <supplementary id="BE:M1"/> <!--only_applies_to_bicycles"-->
+    <supplementary id="BE:M8"/> <!--only_applies_to_bicycles_and_mofas"-->
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:E3"
+    name="No Halting"
+    wiki="Key:parking"
+    help="Check and correct tags">
+    <tag key="parking:lanes:right" value="no"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:E5"
+    name="Parking from 1 till 15th of month"
+    name.nl="Beurtelings parkeren 1/15"
+    help="These signs go on the side with even housenumbers"
+    wiki="Key:parking">
+    <supplementary id="BE:Type_VIIb"/>
+  </sign>
+  <sign ref="BE:E7"
+    name="Parking from 16 till 31th of month"
+    name.nl="Beurtelings parkeren 16/31"
+    help="These signs go on the side with odd housenumbers"
+    wiki="Key:parking">
+    <supplementary id="BE:Type_VIIb"/>
+  </sign>
+  <sign ref="BE:E9a"
+    name="Parking"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel diagonal perpendicular"/>
+    <tag key="parking:condition:left right both" value="free ticket disc residents customers private disabled charging"/>
+    <supplementary id="BE:M1"/> <!--only_applies_to_bicycles"-->
+    <supplementary id="BE:M8"/> <!--only_applies_to_bicycles_and_mofas"-->
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_fee"/>
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIb"/>
+    <supplementary id="BE:Type_VIIb_except_for_residential_parking_permit"/>
+    <supplementary id="BE:Type_VIIc"/>
+    <supplementary id="BE:Type_VIId"/>
+    <supplementary id="BE:Type_VII_disabled"/>
+    <supplementary id="BE:Type_VII_bewoners"/>
+    <supplementary id="BE:Type_VII_parkeerkaart"/>
+    <supplementary id="BE:Type_VII_autodelen"/>
+    <supplementary id="BE:Type_VII_charging_station"/>
+    <supplementary id="BE:Type_VII_charging_station_car"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:E9a_disabled"
+    name="Parking reserved for disabled"
+    wiki="Key:parking">
+    <tag key="parking:lane:right" value="parallel diagonal perpendicular"/>
+    <tag key="parking:condition:right" value="disabled"/>
+    <tag key="amenity" value="parking"/>
+    <tag key="access" value="no"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+  </sign>
+  <sign ref="BE:E9a_disc"
+    name="Parking with disc"
+    wiki="Key:parking">
+    <tag key="parking:lane:right" value="parallel diagonal perpendicular"/>
+    <tag key="parking:condition:right" value="disc"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:E9b"
+    name="Parking for cars only"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel diagonal perpendicular"/>
+    <tag key="parking:condition:left right both" value="free ticket disc residents customers private charging"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIb"/>
+    <supplementary id="BE:Type_VIIb_except_for_residential_parking_permit"/>
+    <supplementary id="BE:Type_VIIc"/>
+    <supplementary id="BE:Type_VIId"/>
+    <supplementary id="BE:Type_VII_charging_station_car"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:E9c"
+    name="Parking only for trucks"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel diagonal perpendicular"/>
+    <tag key="parking:condition:left right both" value="free ticket disc residents customers private"/>
+    <tag key="amenity" value="parking"/>
+    <tag key="access" value="no"/>
+    <tag key="hgv" value="yes"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIc"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:E9d"
+    name="Parking only for autocars"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel diagonal perpendicular"/>
+    <tag key="parking:condition:left right both" value="free ticket disc residents customers private"/>
+    <tag key="amenity" value="parking"/>
+    <tag key="access" value="no"/>
+    <tag key="bus" value="yes"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIc"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:E9e"
+    name="Parking only next to the road"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel"/>
+    <tag key="parking:condition:left right both" value="free ticket disc residents customers private"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIb"/>
+    <supplementary id="BE:Type_VIIb_except_for_residential_parking_permit"/>
+    <supplementary id="BE:Type_VIIc"/>
+  </sign>
+  <sign ref="BE:E9f"
+    name="Parking halfway on road and halfway next to it"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel"/>
+    <tag key="parking:condition:left right both" value="free ticket disc residents customers private"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIb"/>
+    <supplementary id="BE:Type_VIIb_except_for_residential_parking_permit"/>
+    <supplementary id="BE:Type_VIIc"/>
+  </sign>
+  <sign ref="BE:E9g"
+    name="Parking forbidden on sidewalk"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel"/>
+    <tag key="parking:condition:left right both" value="free ticket disc residents customers private"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIb"/>
+    <supplementary id="BE:Type_VIIb_except_for_residential_parking_permit"/>
+    <supplementary id="BE:Type_VIIc"/>
+    <supplementary id="BE:Type_VII_charging_station"/>
+    <supplementary id="BE:Type_VII_charging_station_car"/>
+  </sign>
+  <sign ref="BE:E9h"
+    name="Parking only for campingcars/mobilhomes"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel diagonal perpendicular"/>
+    <tag key="parking:condition:left right both" value="free ticket disc"/>
+    <tag key="amenity" value="parking"/>
+    <tag key="access" value="no"/>
+    <tag key="mobilhome" value="yes"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIc"/>
+    <supplementary id="BE:ZONE"/>
+  </sign>
+  <sign ref="BE:E9i"
+    name="Parking only for motorcycles"
+    wiki="Key:parking">
+    <tag key="parking:lane:left right both" value="parallel diagonal perpendicular"/>
+    <tag key="parking:condition:left right both" value="free ticket disc"/>
+    <tag key="amenity" value="parking"/>
+    <tag key="access" value="no"/>
+    <tag key="motorcycle" value="yes"/>
+    <supplementary id="BE:E0a"/> <!--From this point on"-->
+    <supplementary id="BE:E0b"/> <!--Up to this point"-->
+    <supplementary id="BE:E0c"/> <!--From this point till x m further"-->
+    <supplementary id="BE:E0d"/> <!--Continuation"-->
+    <supplementary id="BE:Type_V_hours"/>
+    <supplementary id="BE:Type_V_weekdays"/>
+    <supplementary id="BE:Type_VIIc"/>
+  </sign>
+  <sign ref="BE:E11"
+    supplementary="yes"
+    name="Parking alternates in this built-up area"
+    name.nl="Beurtelings parkeren in deze bebouwde kom"
+    wiki="Key:parking">
+  </sign>
+
+  
+  
+  
+  <sign ref="BE:F1a"
+    name="Start of built-up area / City Limits"
+    nl.name="Start van de bebouwde kom"
+    fr.name="Agglomération">
+    <tag key="maxspeed" value="50"/>
+    <tag key="maxspeed:type" value="BE:urban"/>
+    </sign>
+  <sign ref="BE:F1bh"
+    name="Start of built-up area / City Limits"
+    nl.name="Start van de bebouwde kom"
+    fr.name="Agglomération">
+    <tag key="maxspeed" value="50"/>
+    <tag key="maxspeed:type" value="BE:urban"/>
+    </sign>
+  <sign ref="BE:F1bv"
+    name="Start of built-up area / City Limits"
+    nl.name="Start van de bebouwde kom"
+    fr.name="Agglomération">
+    <tag key="maxspeed" value="50"/>
+    <tag key="maxspeed:type" value="BE:urban"/>
+    </sign>
+  <sign ref="BE:F3a"
+    name="End of built-up area / City Limits"
+    nl.name="Einde bebouwde kom"
+    fr.name="Fin d'agglomération"
+    help="Unless another sign applies: Outside built-up area in Flanders maxspeed=70, maxspeed:type=BE-VLG:rural. Outside built-up area in Wallonia maxspeed=90, maxspeed:type=BE-WAL:rural. Outside built-up area in Brussels maxspeed=90.">
+    <tag key="maxspeed" value="$val_speed"/>
+      <parameter
+        ident="val_speed"
+        input="combo"
+        text="Speed limit"
+        nl.text="Maximaal toegelaten snelheid"
+        suffix="km/h"
+        default="50"
+        field_width="3"/>
+    <tag key="maxspeed:type" value=" "/>
+  </sign>
+  <sign ref="BE:F3bh"
+    name="End of built-up area / City Limits"
+    nl.name="Einde bebouwde kom"
+    fr.name="Fin d'agglomération"
+    help="Unless another sign applies: Outside built-up area in Flanders maxspeed=70, maxspeed:type=BE-VLG:rural. Outside built-up area in Wallonia maxspeed=90, maxspeed:type=BE-WAL:rural. Outside built-up area in Brussels maxspeed=90.">
+    <tag key="maxspeed" value="$val_speed"/>
+      <parameter
+        ident="val_speed"
+        input="combo"
+        text="Speed limit"
+        nl.text="Maximaal toegelaten snelheid"
+        suffix="km/h"
+        default="50"
+        field_width="3"/>
+    <tag key="maxspeed:type" value=" "/>
+  </sign>
+  <sign ref="BE:F3bv"
+    name="End of built-up area / City Limits"
+    nl.name="Einde bebouwde kom"
+    fr.name="Fin d'agglomération"
+    help="Unless another sign applies: Outside built-up area in Flanders maxspeed=70, maxspeed:type=BE-VLG:rural. Outside built-up area in Wallonia maxspeed=90, maxspeed:type=BE-WAL:rural. Outside built-up area in Brussels maxspeed=90.">
+    <tag key="maxspeed" value="$val_speed"/>
+      <parameter
+        ident="val_speed"
+        input="combo"
+        text="Speed limit"
+        nl.text="Maximaal toegelaten snelheid"
+        suffix="km/h"
+        default="50"
+        field_width="3"/>
+    <tag key="maxspeed:type" value=" "/>
+  </sign>
+  <sign ref="BE:F4a"
+    name="Start of zone with speed limit 30km/h">
+    <tag key="maxspeed" value="30"/>
+  </sign>
+  <sign ref="BE:F4b"
+    name="End of zone with speed limit 30 km/h"
+    nl.name="Einde zone 30 km/h"
+    fr.name="Fin de zone avec vitesse limitée 30 km/h"
+    help="Unless another sign applies: Outside built-up area in Flanders maxspeed=70, maxspeed:type=BE-VLG:rural. Outside built-up area in Wallonia maxspeed=90, maxspeed:type=BE-WAL:rural. Outside built-up area in Brussels maxspeed=90.">
+    <tag key="maxspeed" value="$val_speed"/>
+      <parameter
+        ident="val_speed"
+        input="combo"
+        text="Speed limit"
+        nl.text="Maximaal toegelaten snelheid"
+        suffix="km/h"
+        default="50"
+        field_width="3"/>
+    <tag key="maxspeed:type" value=" "/>
+  </sign>
+  <sign ref="BE:F5"
+    name="Start of Motorway"
+    nl.name="Begin van autosnelweg"
+    help="Choose from: motorway, motorway_link">
+    <tag key="highway" value="$val"/>
+      <parameter
+        ident="val"
+        input="combo"
+        text="link or highway"
+        nl.text="oprit of snelweg"
+        default="motorway"
+        field_width="13"/>
+    <tag key="maxspeed" value="120"/>
+    <tag key="minspeed" value="70"/>
+    <tag key="parking:lane:both" value="no_stopping"/>
+  </sign>
+  <sign ref="BE:F7"
+    name="End motorway"
+    nl.name="Einde autosnelweg">
+  </sign>
+  <sign ref="BE:F8"
+    name="Tunnel"
+    nl.name="Tunnel"
+    wiki="Key:tunnel">
+    <tag key="tunnel" value="yes"/>
+    <tag key="layer" value="-1"/>
+    <supplementary id="BE:Type_Ia"/> <!--Coming up in x m"-->
+    <supplementary id="BE:Type_II"/> <!--Over the following x m"-->
+  </sign>
+  <sign ref="BE:F9"
+    name="Motorroad"
+    nl.name="Autoweg"
+    fr.name="Route pour automobiles"
+    wiki="Key:motorroad"
+    help="No other tags needed, as the access tags defined on the wiki page should automatically apply. ">
+    <tag key="motorroad" value="yes"/>
+  </sign>
+  <sign ref="BE:F11"
+    name="End motorroad"
+    nl.name="Einde autoweg">
+  </sign>
+  <sign ref="BE:F12a"
+    name="Living street"
+    nl.name="Begin woonerf"
+    wiki="Tag:highway%3Dliving_street">
+    <tag key="highway" value="living_street"/>
+    <tag key="foot" value="designated"/>    
+    <tag key="maxspeed" value="20"/>
+    <tag key="maxspeed:type" value="BE:living_street"/>
+  </sign>
+  <sign ref="BE:F12b"
+    name="End of Living street"
+    nl.name="Einde woonerf"
+    wiki="Tag:highway%3Dliving_street"
+    help="Unless another sign applies: Outside built-up area in Flanders maxspeed=70, maxspeed:type=BE-VLG:rural. Outside built-up area in Wallonia maxspeed=90, maxspeed:type=BE-WAL:rural. Outside built-up area in Brussels maxspeed=90.">
+  </sign>
+  <sign ref="BE:F13"
+    name="Indicates choice of direction for different lanes at intersection"
+    help="If the way is oneway (for example split up in both directions), the you can add lanes=* and turn:lanes=*">
+  </sign>
+  <sign ref="BE:F14"
+    name="Advanced stop line"
+    nl.name="Opstelvak voor fietsers">
+    <tag key="cycleway" value="asl"/>
+  </sign>
+  <sign ref="BE:F15"
+      name="Indicating the direction you're heading to if you follow the lanes below the arrows">
+  </sign>
+  <sign ref="BE:F17"
+    name="Bus lane"
+    nl.name="Busbaan"
+    wiki="Key:Bus_lanes"
+    help="Remove the tags which don't apply">
+    <tag key="lanes" value="3"/>
+    <tag key="lanes:psv" value="1"/>
+    <tag key="psv:lanes" value="no|no|yes"/>
+    <tag key="lanes:psv:forward" value="1"/>
+    <tag key="lanes:psv:backward" value="1"/>
+  </sign>
+  <sign ref="BE:F18"
+    name="Bus/tram lane in between dual carriage way"
+    nl.name="Rijvak voor lijnbus of tram tussen de rijstroken"
+    wiki="Key:Bus_lanes"
+    help="Remove the tags which don't apply, map the tram tracks as separate ways and the bus as a separate service way in between. Then all the :lanes: tags aren't needed.">
+    <tag key="lanes" value="3"/>
+    <tag key="lanes:psv" value="1"/>
+    <tag key="psv:lanes" value="no|yes|no"/>
+  </sign>
+  <sign ref="BE:F19"
+    name="One-way street"
+    nl.name="Eénrichtingsverkeer"
+    fr.name="Sens unique"
+    wiki="Key:oneway"
+    help="When the direction of the way is the same as the driving direction: oneway=yes. If the oneway restriction is in the opposite direction to the drawn way, the fix in most cases is to turn the way around ('reverse way' tool in the map editors) and apply oneway=yes. If in a (very) rare case, the direction of the way cannot be changed, you can instead tag it as oneway=-1. Also try to always tag oneway:bicycle=no and oneway:mofa=no, depending on the possible exception sign.">
+    <tag key="oneway" value="yes"/>
+    <supplementary id="BE:M4"/> <!--not_oneway_for_bicycles-->
+    <supplementary id="BE:M5"/> <!--not_oneway_for_bicycles_and_mofas-->
+  </sign>
+  <sign ref="BE:F21"
+    name="Allowed to pass the sign left or right ">
+  </sign>
+  <sign ref="BE:F23a"
+    name="N-road number"
+    help="When the motorway has no E-number: ref=N3. When the motorway has an E-number: nat_ref=N3">
+  </sign> 
+  <sign ref="BE:F23b"
+    name="A-road number (A-road motorway)"
+    help="When the motorway has no E-number: ref=A54. When the motorway has an E-number: nat_ref=A54">
+  </sign> 
+  <sign ref="BE:F23c"
+    name="E-road number (european motorway)">
+    <tag key="ref" value="E40"/>
+    <tag key="int_ref" value="E40"/>
+  </sign> 
+  <sign ref="BE:F23d"
+    name="R-road number (ring road)"
+    help="When the motorway has no E-number: ref=R0. When the motorway has an E-number: nat_ref=R0">
+  </sign> 
+  <sign ref="BE:F45"
+    name="No exit"
+    nl.name="Doodlopende straat"
+    fr.name="Cul-de-sac"
+    help="Nothing! DO NOT use noexit=yes (see tag description)">
+    />
+  </sign>
+  <sign ref="BE:F45b"
+    useful="no"
+    name="No exit, except for bicycle"
+    nl.name="Doodlopende straat, behalve voor fietsers"
+    fr.name="Cul-de-sac, sauf pour cyclistes"
+    help="Nothing! DO NOT use noexit=yes (see tag description). You can add the correct access tags or highway type on the part of the road where pedestrians and bicycles can pass.">
+  </sign>
+  <sign ref="BE:F47"
+    useful="no"
+    name="End of roadworks"
+    nl.name="Einde wegenwerken">
+  </sign>
+  <sign ref="BE:F49"
+    name="Pedestrian crossing"
+    nl.name="Oversteekplaats voor voetgangers"
+    help="Add a node on the highway (it should be a part of the highway!) and tag it.">
+    <tag key="highway" value="crossing"/>
+    <tag key="crossing_ref" value="zebra"/>
+  </sign>
+  <sign ref="BE:F50"
+    name="Bicycle crossing"
+    nl.name="Oversteekplaats voor fietsers">
+  </sign>
+  <sign ref="BE:F50bis"
+    name="Bicycle crossing behind corner"
+    nl.name="Oversteekplaats voor fietsers om de hoek">
+  </sign>
+  <sign ref="BE:F51a"
+    name="Pedestrian crossing underground"
+    nl.name="Ondergrondse oversteekplaats voor voetgangers">
+    <tag key="highway" value="steps"/>
+    <tag key="bridge" value="yes"/>
+  </sign>
+  <sign ref="BE:F51b"
+    name="Elevated crossing underground">
+    <tag key="highway" value="steps"/>
+    <tag key="bridge" value="yes"/>
+  </sign>
+  <sign ref="BE:F52"
+    name="Emergency exit out of tunnel"
+    nl.name="Nooduitgang uit tunnel"
+    help="Choose either entrance or exit tag. If necessary, also add the layer= tag">
+    <tag key="entrance" value="emergency"/>
+    <tag key="exit" value="emergency"/>
+  </sign>
+  <sign id="BE:F52bis"
+    ref="BE:F52bis[$val]"
+    name="Distance and direction toward emergency exit out of tunnel"
+    nl.name="Afstand en richingaanwijzer naar nooduitgang uit tunnel"
+    help="Choose either entrance or exit tag. If necessary, also add the layer= tag">
+    <tag key="entrance" value="emergency"/>
+    <tag key="exit" value="emergency"/>
+    <parameter
+        ident="val"
+        type="int"
+        input="combo"
+        text="Distance"
+        nl.text="Afstand"
+        suffix="m"
+        default="50"
+        field_width="3"/>
+  </sign>
+  <sign ref="BE:F59"
+    name="Parking lot"
+    wiki="Tag:amenity=parking"
+    nl.name="Parkeerterrein/garage"
+    help="Add a node or area on the place of the parking and tag it">
+    <tag key="amenity" value="parking"/>
+  </sign>
+  <sign ref="BE:F60"
+    name="Indoor parking lot"
+    nl.name="Overdekte parking"
+    wiki="Tag:amenity=parking"
+    help="Add a node or area on the place of the parking and tag it. Choose either multi-storey or underground">
+    <tag key="amenity" value="parking"/>
+    <tag key="parking" value="$val"/>
+    <parameter
+        ident="val"
+        type="string"
+        input="combo"
+        default="underground"/>
+  </sign>
+  <sign ref="BE:F87"
+    name="Speed bump"
+    nl.name="Verhoogde inrichting(en), verkeersdrempel"
+    wiki="Key:traffic_calming"
+    help="Choose hump / bump / cushion / table. See wiki for more information on the different types of speed bumps.">
+    <tag key="traffic_calming" value="$val"/>
+        <parameter
+        ident="val"
+        input="combo"
+        default="bump"/>
+  </sign>
+  <sign ref="BE:F95"
+    name="Runaway truck ramp"
+    nl.name="Nooduitweg voor op hol geslagen vrachtwagens"
+    wiki="Tag:highway%3Descape">
+    <tag key="highway" value="escape"/>
+  </sign>
+  <sign ref="BE:F99a"
+    name="Access only for pedestrians, speed pedelecs, cyclists and horses"
+    nl.name="Enkel voetgangers, fietsers, ruiters en landbouwvoertuigen"
+    help="Variations of this sign exist. Remove the tags that do not appear on the sign">
+    <tag key="access" value="destination"/>
+    <tag key="foot" value="yes"/>
+    <tag key="speed_pedelec" value="yes"/>
+    <tag key="bicycle" value="yes"/>
+    <tag key="horse" value="yes"/>
+    <tag key="emergency" value="yes"/>
+    <tag key="maxspeed" value="30"/>
+  </sign>
+  <sign ref="BE:F99b"
+    name="Road reserved for pedestrians and bicycles."
+    help="Variations of this sign exist. Remove the tags that do not appear on the sign">
+    <tag key="access" value="destination"/>
+    <tag key="foot" value="yes"/>
+    <tag key="bicycle" value="yes"/>
+    <tag key="emergency" value="yes"/>
+    <tag key="segregated" value="yes"/>
+    <tag key="maxspeed" value="30"/>
+  </sign>
+  <sign ref="BE:F99c"
+    name="Access only for agricultural vehicles, speed pedelecs, pedestrians, horses and cyclists"
+    help="Variations of this sign exist. Remove the tags that do not appear on the sign">    
+    <tag key="motor_vehicle" value="destination"/>
+    <tag key="agricultural" value="yes"/>
+    <tag key="speed_pedelec" value="yes"/>
+    <tag key="foot" value="yes"/>
+    <tag key="horse" value="yes"/>
+    <tag key="bicycle" value="yes"/>
+    <tag key="emergency" value="yes"/>
+    <tag key="maxspeed" value="30"/>
+  </sign>
+  <sign ref="BE:F103"
+    name="Pedestrian zone"
+    nl.name="voetgangerszone"
+    wiki="Tag:highway%3Dpedestrian">
+    <tag key="highway" value="pedestrian"/>
+    <tag key="vehicle" value="no"/>
+    <tag key="foot" value="designated"/>
+    <tag key="bicycle" value="yes"/>
+    <tag key="emergency" value="yes"/>
+    <tag key="bus" value="yes"/>
+  </sign>
+  <sign ref="BE:F111"
+    name="Bicycle road"
+    wiki="Key:cyclestreet"
+    nl.name="Fietsstraat">
+    <tag key="bicycle" value="designated"/>
+    <tag key="maxspeed" value="30"/>
+    <tag key="cyclestreet" value="yes"/>
+    <tag key="overtaking:motor_vehicle" value="no"/>
+  </sign>
+  <sign ref="BE:F113"
+    name="End of Bicycle road"
+    nl.name="Einde fietsstraat"
+    wiki=""
+    help="Unless another sign applies: Within built-up area: maxspeed=50, maxspeed:type=BE:urban. Outside built-up area in Flanders maxspeed=70, maxspeed:type=BE-VLG:rural. Outside built-up area in Wallonia maxspeed=90, maxspeed:type=BE-WAL:rural. Outside built-up area in Brussels maxspeed=90.">
+  </sign>
+  <sign ref="BE:F117"
+    name="Start of a Low Emission Zone (LEZ)."
+    wiki="Tag:boundary%3Dlow_emission_zone"
+    help="A Low emission zone is defined in OSM by the tag boundary=low_emission_zone. Currently, the ones in Brussels and Antwerp are already tagged. Please see the wiki page before adding any new.">
+  </sign>
+  <sign ref="BE:F118"
+    name="End of a Low Emission Zone (LEZ)."
+    wiki="Tag:boundary%3Dlow_emission_zone"
+    help="A Low emission zone is defined in OSM by the tag boundary=low_emission_zone. Currently, the ones in Brussels and Antwerp are already tagged. Please see the wiki page before adding any new.">
+  </sign>
+
+  
+  <sign ref="BE:M1"
+    name="Only for bicycles"
+    nl.name="Geldt enkel voor fietsers"
+    help="Check access and BICYCLE PARKING tags!!! Placed under sign B1, B5 or E9a when that sign only applies to bicycles."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="amenity" value="bicycle_parking"/>
+  </sign>
+  <sign ref="BE:M2_nl"
+    traffic_sign_tag="BE:M2"
+    name="Except for bicycles"
+    nl.name="Uitgezonderd fietsers"
+    help="Read these instructions carefully!!! Only keep oneway:bicycle=no if used for sign C1, in all other cases remove this tag.
+    bicycle=yes is only necessary when the sign is used on a highway=footway, highway=bridleway or highway=pedestrian."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="oneway:bicycle" value="no"/>
+  </sign>
+  <sign ref="BE:M2_fr"
+    traffic_sign_tag="BE:M2"
+    name="Except for bicycles"
+    nl.name="Uitgezonderd fietsers"
+    help="Read these instructions carefully!!! Only keep oneway:bicycle=no if used for sign C1, in all other cases remove this tag.
+    bicycle=yes is only necessary when the sign is used on a highway=footway, highway=bridleway or highway=pedestrian."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="oneway:bicycle" value="no"/>
+  </sign>
+  <sign ref="BE:M3_nl"
+    name="Except for bicycles and mopeds class A"
+    nl.name="Uitgezonderd fietsers en bromfietsers klasse A"
+    help="Read these instructions carefully!!! Only keep oneway:bicycle=no oneway:mofa=no if used for sign C1, in all other cases remove these two tags.
+    bicycle=yes and mofa=yes is only necessary when the sign is used on a highway=footway, highway=bridleway or highway=pedestrian."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="mofa" value="yes"/>
+    <tag key="oneway:bicycle" value="no"/>
+    <tag key="oneway:mofa" value="no"/>
+  </sign>
+  <sign ref="BE:M3_fr"
+    name="Except for bicycles and mopeds class A"
+    nl.name="Uitgezonderd fietsers en bromfietsers klasse A"
+    help="Read these instructions carefully!!! Only keep oneway:bicycle=no oneway:mofa=no if used for sign C1, in all other cases remove these two tags.
+    bicycle=yes and mofa=yes is only necessary when the sign is used on a highway=footway, highway=bridleway or highway=pedestrian."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="mofa" value="yes"/>
+    <tag key="oneway:bicycle" value="no"/>
+    <tag key="oneway:mofa" value="no"/>
+  </sign>
+  <sign ref="BE:M4"
+    name="Not oneway for bicycles"
+    nl.name="Fietsers toegelaten in beide richtingen"
+    help="Check ONEWAY tags and way direction!!! Placed under sign F19: when cyclists are allowed to ride in both directions on a one-way road "
+    supplementary="yes">
+    <tag key="oneway:bicycle" value="no"/>
+  </sign>
+  <sign ref="BE:M5"
+    name="Not oneway for bicycles and mofas"
+    nl.name="Fietsers en bromfietsers (A) toegelaten in beide richtingen"
+    help="Check ONEWAY tags!!! Placed under sign F19 when cyclists and mopeds class A are allowed to ride in both directions on a one-way road."
+    supplementary="yes">
+    <tag key="oneway:bicycle" value="no"/>
+    <tag key="oneway:mofa" value="no"/>
+  </sign>
+  <sign ref="BE:M6"
+    name="Mopeds Class B have to use cycleway"
+    nl.name="Motorfietsers klasse B verplicht op fietspad"
+    help="Check ACCESS tags!!! Placed under sign D7 Mopeds class B have to ride on the cycleway."
+    supplementary="yes">
+    <tag key="moped" value="yes"/>
+  </sign>
+  <sign ref="BE:M7"
+    name="Mopeds Class B forbidden on cycleway"
+    nl.name="Motorfietsers verboden op fietspad"
+    help="Check ACCESS tags!!! Placed under sign D7 Mopeds class B are not allowed to ride on the cycleway."
+    supplementary="yes">
+    <tag key="moped" value="no"/>
+  </sign>
+  <sign ref="BE:M8"
+    name="Only for bicycles and mofas"
+    nl.name="Geldt enkel voor fietsers en bromfietsers"
+    help="Placed under sign B1, B5 or E9a; B1 or B5 only applies to bicycles and mopeds."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="mofa" value="yes"/>
+  </sign>
+  <sign ref="BE:M11_nl"
+    name="Except for bicycles and speedelecs"
+    nl.name="Uitgezonderd fietsers en speedelecs"
+    help="Read these instructions carefully!!! Only keep oneway:bicycle=no oneway:speed_pedelec=no if used for sign C1, in all other cases remove these two tags.
+    bicycle=yes and speed_pedelec=yes is only necessary when the sign is used on a highway=footway, highway=bridleway or highway=pedestrian."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="speed_pedelec" value="yes"/>
+    <tag key="oneway:bicycle" value="no"/>
+    <tag key="oneway:speed_pedelec" value="no"/>
+  </sign>
+  <sign ref="BE:M11_fr"
+    name="Except for bicycles and speedelecs"
+    nl.name="Uitgezonderd fietsers en speedelecs"
+    help="Read these instructions carefully!!! Only keep oneway:bicycle=no oneway:speed_pedelec=no if used for sign C1, in all other cases remove these two tags.
+    bicycle=yes and speed_pedelec=yes is only necessary when the sign is used on a highway=footway, highway=bridleway or highway=pedestrian."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="speed_pedelec" value="yes"/>
+    <tag key="oneway:bicycle" value="no"/>
+    <tag key="oneway:speed_pedelec" value="no"/>
+  </sign>
+  <sign ref="BE:M12_nl"
+    name="Except for bicycles, mopeds class A and speedelecs"
+    nl.name="Uitgezonderd fietsers, bromfietsers klasse A en speedelecs"
+    help="Read these instructions carefully!!! Only keep oneway:bicycle=no oneway:mofa=no oneway:speed_pedelec=no if used for sign C1, in all other cases remove these three tags.
+    bicycle=yes, mofa and speed_pedelec=yes is only necessary when the sign is used on a highway=footway, highway=bridleway or highway=pedestrian."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="mofa" value="yes"/>
+    <tag key="speed_pedelec" value="yes"/>
+    <tag key="oneway:bicycle" value="no"/>
+    <tag key="oneway:mofa" value="no"/>
+    <tag key="oneway:speed_pedelec" value="no"/>
+  </sign>
+  <sign ref="BE:M12_fr"
+    name="Except for bicycles, mopeds class A and speedelecs"
+    nl.name="Uitgezonderd fietsers, bromfietsers klasse A en speedelecs"
+    help="Read these instructions carefully!!! Only keep oneway:bicycle=no oneway:mofa=no oneway:speed_pedelec=no if used for sign C1, in all other cases remove these three tags.
+    bicycle=yes, mofa and speed_pedelec=yes is only necessary when the sign is used on a highway=footway, highway=bridleway or highway=pedestrian."
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="mofa" value="yes"/>
+    <tag key="speed_pedelec" value="yes"/>
+    <tag key="oneway:bicycle" value="no"/>
+    <tag key="oneway:mofa" value="no"/>
+    <tag key="oneway:speed_pedelec" value="no"/>
+  </sign>
+    
+  <sign ref="BE:GXI"
+    name="Only applies to link road"
+    nl.name="Geldt enkel voor afrit"
+    supplementary="yes">
+  </sign>
+  
+  <sign ref="BE:ZONE"
+    supplementary="yes"
+    name="Limitation or parking rules apply to ZONE, don't use instead of F4a"
+    name.nl="Beperking of parkeermodaliteiten geldig in gehele ZONE, voor zone30 e.d. gebruik F4a"
+    wiki="Key:ZONE">
+  </sign>
+  
+  <sign id="BE:Type_Ia"
+     ref="BE:Type_Ia[$val]"
+    supplementary="yes"
+    name="Coming up in x m"
+    nl.name="Binnen x m">
+      <parameter
+        ident="val"
+        type="int"
+        input="textfield" editable="yes" text="Distance" nl.text="Afstand"
+        suffix="m" values="50, 100, 150, 200"
+        default="50"
+        field_width="3"/>
+  </sign>
+  <sign id="BE:Type_Ib"
+     ref="BE:Type_Ia[$val]"
+    supplementary="yes"
+    name="STOP signing coming up in x m"
+    nl.name="STOP-bord op x m">
+      <parameter
+        ident="val"
+        type="int"
+        input="textfield" editable="yes" text="Distance" nl.text="Afstand"
+        suffix="m" values="50, 100, 150, 200"
+        default="50"
+        field_width="3"/>
+  </sign>
+  <sign id="BE:Type_II"
+    ref="BE:Type_II[$val]"
+    supplementary="yes"
+    name="Over a distance of the next x m"
+    nl.name="Over een astand van x m">
+      <parameter
+        ident="val"
+        type="int"
+        input="textfield" editable="yes" text="Distance" nl.text="Afstand"
+        suffix="m" values="50, 100, 150, 200, 1000, 2000, 3000"
+        default="50"
+        field_width="4"/>
+  </sign>
+  <sign id="BE:Type_III_nl"
+    ref="BE:Type_III"
+    supplementary="yes"
+    name="Slippery when road is wet"
+    nl.name="Bij nat wegdek"
+    wiki="Key:Proposed_features/hazard">
+    <tag key="hazard" value="slippery_when_wet"/>
+  </sign>
+  <sign id="BE:Type_IV"
+    ref="BE:Type_IV"
+    supplementary="yes"
+    name="Except for"
+    nl.name="Uitgezonderd voor"
+    fr.name="Excepté">
+      <parameter
+        ident="val"
+        input="textfield" editable="yes" text="Vehicle type"
+        default="bus, bewoners, riverains, parkeerkaart, carte de stationnement"
+        field_width="20"/>
+  </sign>  
+  <sign ref="BE:Type_IV_local_traffic_nl"
+    name="Except for local traffic"
+    name.nl="Uitgezonderd plaatselijk verkeer"
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="horse" value="yes"/>
+    <tag key="bus" value="yes"/>
+    <tag key="vehicle" value="destination"/>
+    <tag key="emergency" value="yes"/>
+  </sign>
+  <sign ref="BE:Type_IV_local_traffic_fr"
+    name="Except for local traffic"
+    name.fr="Excepte circulation locale"
+    supplementary="yes">
+    <tag key="bicycle" value="yes"/>
+    <tag key="horse" value="yes"/>
+    <tag key="bus" value="yes"/>
+    <tag key="vehicle" value="destination"/>
+    <tag key="emergency" value="yes"/>
+  </sign>
+
+  <sign ref="BE:Type_IV_residents_nl"
+    name="Except for residents, people owning or renting property along the road"
+    name.nl="Uitgezonderd aangelanden"
+    supplementary="yes">
+    <tag key="horse" value="no"/>
+    <tag key="vehicle" value="destination"/>
+    </sign>
+  <sign ref="BE:Type_IV_residents_exceptions_nl"
+    name="Except for residents, people owning or renting property along the road, permit holder and bicycles"
+    name.nl="Uitgezonderd aangelanden, toelatingen WZ en rijwielen"
+    supplementary="yes">
+    <tag key="vehicle" value="destination"/>
+    <tag key="horse" value="destination"/>
+    <tag key="bicycle" value="yes"/>
+    <tag key="vehicle:conditional" value="yes @ permit" />    
+    <tag key="horse:conditional" value="yes @ permit" />    
+  </sign>
+    
+  <sign ref="BE:Type_V_fee"
+    supplementary="yes"
+    help=""
+    name="Parking fee"
+    nl.name="Parking betalend"
+    fr.name="Parking payant">
+  </sign>
+  <sign id="BE:Type_V_hours"
+    ref="BE:Type_V[$val]"
+    icon="BE_Type_V_hours"
+    supplementary="yes"
+    help="Van 7 tot 19u / De 7 à 19h"
+    name="From/till hours"
+    nl.name="Van/tot in uren">
+      <parameter
+        ident="val"
+        input="textfield" editable="yes" text="hours"
+        default="Van maandag tot vrijdag van 7 tot 19u / De lundi à vendredi de 7 à 19h"
+        field_width="100"/>
+  </sign>
+  <sign id="BE:Type_V_weekdays"
+    ref="BE:Type_V[$val]"
+    icon="BE_Type_V_weekdays"
+    supplementary="yes"
+    help="Van maandag tot vrijdag / De lundi à vendredi"
+    name="From/till weekdays"
+    nl.name="Op welke weekdagen">
+      <parameter
+        ident="val"
+        input="textfield" editable="yes" text="hours"
+        default="Van maandag tot vrijdag van 7 tot 19u / De lundi à vendredi de 7 à 19h"
+        field_width="100"/>
+  </sign>
+  <sign id="BE:Type_VI_nl"
+    ref="BE:Type_VI"
+    supplementary="yes"
+    name="Reminder"
+    nl.name="HERHALING"
+    fr.name="RAPPEL">
+  </sign>
+  <sign id="BE:Type_VIIa"
+    ref="BE:Type_VIIa[$val_weight]"
+    supplementary="yes"
+    name="Max weight indication"
+    nl.name="Specificatie van maximum toegelaten">
+    <tag tag_ref="hgv_weight_access" condition="conditional"/>
+    <tag tag_ref="hgv_weight_access" append_value="no @ (weight>$val_weight)"/>
+    <tag tag_ref="goods_weight_access" condition="conditional"/>
+    <tag tag_ref="goods_weight_access" append_value="no @ (weight>$val_weight)"/>
+    <tag tag_ref="weight_speed" condition="conditional"/>
+    <tag tag_ref="weight_speed" append_value="$val_speed @ (weight>$val_weight)"/>
+      <parameter
+        ident="val_weight"
+        input="textfield" editable="yes" text="Weight"
+        suffix="t"
+        default="3.5"
+        field_width="3"/>
+  </sign>
+  <sign ref="BE:Type_VIIb"
+    supplementary="yes"
+    name="Parking disc"
+    nl.name="Parkeerschijf verplicht">
+  </sign>
+  <sign ref="BE:Type_VIIb_except_for_residential_parking_permit"
+    supplementary="yes"
+    name="Parking disc except for residential parking permit holders"
+    nl.name="Parkeerschijf verplicht, uitgezonderd voor houders van bewonerskaart">
+  </sign>
+  <sign ref="BE:Type_VIIc"
+    supplementary="yes"
+    name="Maximum parking duration"
+    nl.name="Maximale parkeerduur">
+      <parameter
+        ident="val"
+        input="textfield" editable="yes" text="hours / minutes"
+        default="1 uur 30 minuten"
+        field_width="40"/>
+  </sign>
+  <sign ref="BE:Type_VIId"
+    supplementary="yes"
+    name="Reserved for taxis"
+    nl.name="Voorbehouden voor taxi's">
+  </sign>
+  <sign ref="BE:Type_VII_disabled"
+    supplementary="yes"
+    name="Reserved for disabled"
+    nl.name="Voorbehouden voor mensen met handicap">
+  </sign>
+  <sign ref="BE:Type_VII_bewoners"
+    supplementary="yes"
+    name="Reserved for holders of residential parking permit"
+    nl.name="Voorbehouden voor mensen met bewonerskaart">
+  </sign>
+  <sign ref="BE:Type_VII_parkeerkaart"
+    supplementary="yes"
+    name="Reserved for holders of residential parking permit"
+    nl.name="Voorbehouden voor mensen met parkeerkaart">
+  </sign>
+  <sign ref="BE:Type_VII_autodelen"
+    supplementary="yes"
+    name="Reserved for car sharing"
+    nl.name="Voorbehouden voor car sharing">
+  </sign>
+  <sign ref="BE:Type_VII_charging_station"
+    supplementary="yes"
+    name="Reserved for electric vehicles"
+    nl.name="Voorbehouden voor elektrische voertuigen">
+  </sign>
+  <sign ref="BE:Type_VII_charging_station_car"
+    supplementary="yes"
+    name="Reserved for electric cars"
+    nl.name="Voorbehouden voor elektrische wagens">
+  </sign>
+  
+ </roadsignpreset>
Index: /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetCZ.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetCZ.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetCZ.xml	(revision 36424)
@@ -0,0 +1,891 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<roadsignpreset country="CZ">
+<sign icon="A1a.png" id="A1a"  ref="CZ:A1a" name="Zatáčka vpravo" cz.name="Zatáčka vpravo">
+</sign>
+<sign icon="A1b.png" id="A1b"  ref="CZ:A1b" name="Zatáčka vlevo" cz.name="Zatáčka vlevo">
+</sign>
+<sign icon="A2a.png" id="A2a"  ref="CZ:A2a" name="Dvojitá zatáčka, první vpravo" cz.name="Dvojitá zatáčka, první vpravo">
+</sign>
+<sign icon="A2b.png" id="A2b"  ref="CZ:A2b" name="Dvojitá zatáčka, první vlevo" cz.name="Dvojitá zatáčka, první vlevo">
+</sign>
+<sign icon="A3.png" id="A3"  ref="CZ:A3" name="Křižovatka" cz.name="Křižovatka">
+</sign>
+<sign icon="A4.png" id="A4"  ref="CZ:A4" name="Křižovatka s kruhovým objezdem" cz.name="Křižovatka s kruhovým objezdem">
+</sign>
+<sign icon="A5a.png" id="A5a"  ref="CZ:A5a" name="Nebezpečné klesání" cz.name="Nebezpečné klesání">
+</sign>
+<sign icon="A5b.png" id="A5b"  ref="CZ:A5b" name="Nebezpečné stoupání" cz.name="Nebezpečné stoupání">
+</sign>
+<sign icon="A6a.png" id="A6a"  ref="CZ:A6a" name="Zúžená vozovka (z obou stran)" cz.name="Zúžená vozovka (z obou stran)">
+</sign>
+<sign icon="A6b.png" id="A6b"  ref="CZ:A6b" name="Zúžená vozovka (z jedné strany)" cz.name="Zúžená vozovka (z jedné strany)">
+</sign>
+<sign icon="A7a.png" id="A7a"  ref="CZ:A7a" name="Nerovnost vozovky" cz.name="Nerovnost vozovky">
+</sign>
+<sign icon="A7b.png" id="A7b"  ref="CZ:A7b" name="Zpomalovací práh" cz.name="Zpomalovací práh">
+</sign>
+<sign icon="A8.png" id="A8"  ref="CZ:A8" name="Nebezpečí smyku" cz.name="Nebezpečí smyku">
+</sign>
+<sign icon="A9.png" id="A9"  ref="CZ:A9" name="Provoz v obou směrech" cz.name="Provoz v obou směrech">
+</sign>
+<sign icon="A10.png" id="A10"  ref="CZ:A10" name="Světelné signály" cz.name="Světelné signály">
+</sign>
+<sign icon="A11.png" id="A11"  ref="CZ:A11" name="Přechod pro chodce" cz.name="Přechod pro chodce">
+</sign>
+<sign icon="A12a.jpg" id="A12a"  ref="CZ:A12a" name="Chodci" cz.name="Chodci">
+</sign>
+<sign icon="A12b.png" id="A12b"  ref="CZ:A12b" name="Děti" cz.name="Děti">
+</sign>
+<sign icon="A12c.jpg" id="A12c"  ref="CZ:A12c" name="Osoby na osobních přepravnících" cz.name="Osoby na osobních přepravnících">
+</sign>
+<sign icon="A13.png" id="A13"  ref="CZ:A13" name="Zvířata" cz.name="Zvířata">
+</sign>
+<sign icon="A13_alt.png" id="A13_alt"  ref="CZ:A13" name="Zvířata" cz.name="Zvířata">
+</sign>
+<sign icon="A14.png" id="A14"  ref="CZ:A14" name="Zvěř" cz.name="Zvěř">
+</sign>
+<sign icon="A14_alt.png" id="A14_alt"  ref="CZ:A14" name="Zvěř" cz.name="Zvěř">
+</sign>
+<sign icon="A15.png" id="A15"  ref="CZ:A15" name="Práce na silnici" cz.name="Práce na silnici">
+</sign>
+<sign icon="A16.png" id="A16"  ref="CZ:A16" name="Boční vítr" cz.name="Boční vítr">
+</sign>
+<sign icon="A17.png" id="A17"  ref="CZ:A17" name="Odlétávající štěrk" cz.name="Odlétávající štěrk">
+</sign>
+<sign icon="A18.png" id="A18"  ref="CZ:A18" name="Kamení na vozovce" cz.name="Kamení na vozovce">
+</sign>
+<sign icon="A18_alt.jpg" id="A18_alt"  ref="CZ:A18" name="Kamení na vozovce" cz.name="Kamení na vozovce">
+</sign>
+<sign icon="A19.png" id="A19"  ref="CZ:A19" name="Cyklisté" cz.name="Cyklisté">
+</sign>
+<sign icon="A20.png" id="A20"  ref="CZ:A20" name="Letadla" cz.name="Letadla">
+</sign>
+<sign icon="A21.png" id="A21"  ref="CZ:A21" name="Tunel" cz.name="Tunel">
+</sign>
+<sign icon="A22.png" id="A22"  ref="CZ:A22" name="Jiné nebezpečí" cz.name="Jiné nebezpečí">
+</sign>
+<sign icon="A23.png" id="A23"  ref="CZ:A23" name="Kolona" cz.name="Kolona">
+</sign>
+<sign icon="A24.png" id="A24"  ref="CZ:A24" name="Náledí" cz.name="Náledí">
+</sign>
+<sign icon="A25.png" id="A25"  ref="CZ:A25" name="Tramvaj" cz.name="Tramvaj">
+</sign>
+<sign icon="A26.png" id="A26"  ref="CZ:A26" name="Mlha" cz.name="Mlha">
+</sign>
+<sign icon="A27.png" id="A27"  ref="CZ:A27" name="Nehoda" cz.name="Nehoda">
+</sign>
+<sign icon="A28.png" id="A28"  ref="CZ:A28" name="Nebezpečná krajnice" cz.name="Nebezpečná krajnice">
+</sign>
+<sign icon="A29.png" id="A29"  ref="CZ:A29" name="Železniční přejezd se závorami" cz.name="Železniční přejezd se závorami">
+</sign>
+<sign icon="A30.png" id="A30"  ref="CZ:A30" name="Železniční přejezd bez závor" cz.name="Železniční přejezd bez závor">
+</sign>
+<sign icon="A31a.png" id="A31a"  ref="CZ:A31a" name="Návěstní deska (240 m)" cz.name="Návěstní deska (240 m)">
+ <supplementary id="E7a"/> <!-- Směrová šipka -->
+</sign>
+<sign icon="A31b.png" id="A31b"  ref="CZ:A31b" name="Návěstní deska (160 m)" cz.name="Návěstní deska (160 m)">
+<supplementary id="E7a"/> <!-- Směrová šipka -->
+</sign>
+<sign icon="A31c.png" id="A31c"  ref="CZ:A31c" name="Návěstní deska (80 m)" cz.name="Návěstní deska (80 m)">
+<supplementary id="E7a"/> <!-- Směrová šipka -->
+</sign>
+<sign icon="A32a.png" id="A32a"  ref="CZ:A32a" name="Výstražný kříž pro železniční přejezd jednokolejný" cz.name="Výstražný kříž pro železniční přejezd jednokolejný">
+</sign>
+<sign icon="A32b.png" id="A32b"  ref="CZ:A32b" name="Výstražný kříž pro železniční přejezd vícekolejný" cz.name="Výstražný kříž pro železniční přejezd vícekolejný">
+</sign>
+<sign icon="A33.png" id="A33"  ref="CZ:A33" name="Pohyblivý most" cz.name="Pohyblivý most">
+</sign>
+<sign icon="A34.png" id="A34"  ref="CZ:A34" name="Nábřeží" cz.name="Nábřeží">
+</sign>
+<sign icon="P1.png" id="P1"  ref="CZ:P1" name="Křižovatka s vedlejší pozemní komunikací" cz.name="Křižovatka s vedlejší pozemní komunikací">
+</sign>
+<sign icon="P1_alt1.jpg" id="P1_alt1"  ref="CZ:P1" name="Křižovatka s vedlejší pozemní komunikací" cz.name="Křižovatka s vedlejší pozemní komunikací">
+</sign>
+<sign icon="P1_alt2.jpg" id="P1_alt2"  ref="CZ:P1" name="Křižovatka s vedlejší pozemní komunikací" cz.name="Křižovatka s vedlejší pozemní komunikací">
+</sign>
+<sign icon="P2.png" id="P2"  ref="CZ:P2" name="Hlavní pozemní komunikace" cz.name="Hlavní pozemní komunikace">
+</sign>
+<sign icon="P3.png" id="P3"  ref="CZ:P3" name="Konec hlavní pozemní komunikace" cz.name="Konec hlavní pozemní komunikace">
+</sign>
+<sign icon="P4.png" id="P4"  ref="CZ:P4" name="Dej přednost v jízdě!" cz.name="Dej přednost v jízdě!">
+</sign>
+<sign icon="P5.png" id="P5"  ref="CZ:P5" name="Dej přednost v jízdě tramvaji!" cz.name="Dej přednost v jízdě tramvaji!">
+</sign>
+<sign icon="P6.png" id="P6"  ref="CZ:P6" name="Stůj, dej přednost v jízdě!" cz.name="Stůj, dej přednost v jízdě!">
+</sign>
+<sign icon="P7.png" id="P7"  ref="CZ:P7" name="Přednost protijedoucích vozidel" cz.name="Přednost protijedoucích vozidel">
+</sign>
+<sign icon="P8.png" id="P8"  ref="CZ:P8" name="Přednost před protijedoucími vozidly" cz.name="Přednost před protijedoucími vozidly">
+</sign>
+<sign icon="B1.png" id="B1"  ref="CZ:B1" name="Zákaz vjezdu všech vozidel (v obou směrech)" cz.name="Zákaz vjezdu všech vozidel (v obou směrech)">
+</sign>
+<sign icon="B2.png" id="B2"  ref="CZ:B2" name="Zákaz vjezdu všech vozidel" cz.name="Zákaz vjezdu všech vozidel">
+</sign>
+<sign icon="B3a.png" id="B3a"  ref="CZ:B3a" name="Zákaz vjezdu všech motorových vozidel s výjimkou motocyklů bez postranního vozíku" cz.name="Zákaz vjezdu všech motorových vozidel s výjimkou motocyklů bez postranního vozíku">
+</sign>
+<sign icon="B3b.png" id="B3b"  ref="CZ:B3b" name="Zákaz vjezdu osobních automobilů" cz.name="Zákaz vjezdu osobních automobilů">
+</sign>
+<sign icon="B4.png" id="B4"  ref="CZ:B4" name="Zákaz vjezdu nákladních automobilů" cz.name="Zákaz vjezdu nákladních automobilů">
+</sign>
+<sign icon="B4_alt.png" id="B4_alt"  ref="CZ:B4" name="Zákaz vjezdu nákladních automobilů" cz.name="Zákaz vjezdu nákladních automobilů">
+</sign>
+<sign icon="B5.png" id="B5"  ref="CZ:B5" name="Zákaz vjezdu autobusů" cz.name="Zákaz vjezdu autobusů">
+</sign>
+<sign icon="B6.png" id="B6"  ref="CZ:B6" name="Zákaz vjezdu traktorů" cz.name="Zákaz vjezdu traktorů">
+</sign>
+<sign icon="B7.png" id="B7"  ref="CZ:B7" name="Zákaz vjezdu motocyklů" cz.name="Zákaz vjezdu motocyklů">
+</sign>
+<sign icon="B8.png" id="B8"  ref="CZ:B8" name="Zákaz vjezdu jízdních kol" cz.name="Zákaz vjezdu jízdních kol">
+</sign>
+<sign icon="B9.png" id="B9"  ref="CZ:B9" name="Zákaz vjezdu potahových vozidel" cz.name="Zákaz vjezdu potahových vozidel">
+</sign>
+<sign icon="B10.png" id="B10"  ref="CZ:B10" name="Zákaz vjezdu ručních vozíků" cz.name="Zákaz vjezdu ručních vozíků">
+</sign>
+<sign icon="B11.png" id="B11"  ref="CZ:B11" name="Zákaz vjezdu všech motorových vozidel" cz.name="Zákaz vjezdu všech motorových vozidel">
+</sign>
+<sign icon="B12.png" id="B12"  ref="CZ:B12" name="Zákaz vjezdu vyznačených vozidel" cz.name="Zákaz vjezdu vyznačených vozidel">
+</sign>
+<sign icon="B13.png" id="B13"  ref="CZ:B13" name="Zákaz vjezdu vozidel, jejichž okamžitá hmotnost přesahuje vyznačenou mez" cz.name="Zákaz vjezdu vozidel, jejichž okamžitá hmotnost přesahuje vyznačenou mez">
+			<tag key="maxweight" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="2"/>
+</sign>
+<sign icon="B14.png" id="B14"  ref="CZ:B14" name="Zákaz vjezdu vozidel, jejichž okamžitá hmotnost připadající na nápravu přesahuje vyznačenou mez" cz.name="Zákaz vjezdu vozidel, jejichž okamžitá hmotnost připadající na nápravu přesahuje vyznačenou mez">
+			<tag key="maxaxleload" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="2"/>
+</sign>
+<sign icon="B15.png" id="B15"  ref="CZ:B15" name="Zákaz vjezdu vozidel, jejichž šířka přesahuje vyznačenou mez" cz.name="Zákaz vjezdu vozidel, jejichž šířka přesahuje vyznačenou mez">
+			<tag key="maxwidth" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="2"/>
+</sign>
+<sign icon="B16.png" id="B16"  ref="CZ:B16" name="Zákaz vjezdu vozidel, jejichž výška přesahuje vyznačenou mez" cz.name="Zákaz vjezdu vozidel, jejichž výška přesahuje vyznačenou mez">
+		<tag key="maxheight" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="2"/>
+</sign>
+<sign icon="B17.png" id="B17"  ref="CZ:B17" name="Zákaz vjezdu vozidel nebo souprav vozidel, jejichž délka přesahuje vyznačenou mez" cz.name="Zákaz vjezdu vozidel nebo souprav vozidel, jejichž délka přesahuje vyznačenou mez">
+		<tag key="maxlength" value="$val"/>
+				       <parameter ident="val" input="textfield" suffix="m" default="10" field_width="2"/>
+</sign>
+<sign icon="B18.png" id="B18"  ref="CZ:B18" name="Zákaz vjezdu vozidel přepravujících nebezpečný náklad" cz.name="Zákaz vjezdu vozidel přepravujících nebezpečný náklad">
+</sign>
+<sign icon="B19.png" id="B19"  ref="CZ:B19" name="Zákaz vjezdu vozidel přepravujících náklad, který může způsobit ohrožení životního prostředí" cz.name="Zákaz vjezdu vozidel přepravujících náklad, který může způsobit ohrožení životního prostředí">
+</sign>
+<sign icon="B20a.png" id="B20a"  ref="CZ:B20a" name="Nejvyšší dovolená rychlost" cz.name="Nejvyšší dovolená rychlost">
+		<tag key="maxspeed" value="$val"/>
+				       <parameter ident="val" input="textfield" suffix="m" default="10" field_width="2"/>
+</sign>
+<sign icon="B20b.png" id="B20b"  ref="CZ:B20b" name="Konec nejvyšší dovolené rychlosti" cz.name="Konec nejvyšší dovolené rychlosti">
+		<tag key="maxspeed" value="$val"/>
+				       <parameter ident="val" input="textfield" suffix="m" default="10" field_width="2"/>
+</sign>
+<sign icon="B21a.png" id="B21a"  ref="CZ:B21a" name="Zákaz předjíždění" cz.name="Zákaz předjíždění">
+</sign>
+<sign icon="B21b.png" id="B21b"  ref="CZ:B21b" name="Konec zákazu předjíždění" cz.name="Konec zákazu předjíždění">
+</sign>
+<sign icon="B22a.png" id="B22a"  ref="CZ:B22a" name="Zákaz předjíždění pro nákladní automobily" cz.name="Zákaz předjíždění pro nákladní automobily">
+</sign>
+<sign icon="B22b.png" id="B22b"  ref="CZ:B22b" name="Konec zákazu předjíždění pro nákladní automobily" cz.name="Konec zákazu předjíždění pro nákladní automobily">
+</sign>
+<sign icon="B23a.png" id="B23a"  ref="CZ:B23a" name="Zákaz zvukových výstražných znamení" cz.name="Zákaz zvukových výstražných znamení">
+</sign>
+<sign icon="B23b.png" id="B23b"  ref="CZ:B23b" name="Konec zákazu zvukových výstražných znamení" cz.name="Konec zákazu zvukových výstražných znamení">
+</sign>
+<sign icon="B24a.png" id="B24a"  ref="CZ:B24a" name="Zákaz odbočování vpravo" cz.name="Zákaz odbočování vpravo">
+</sign>
+<sign icon="B24b.png" id="B24b"  ref="CZ:B24b" name="Zákaz odbočování vlevo" cz.name="Zákaz odbočování vlevo">
+</sign>
+<sign icon="B25.png" id="B25"  ref="CZ:B25" name="Zákaz otáčení" cz.name="Zákaz otáčení">
+</sign>
+<sign icon="B26.png" id="B26"  ref="CZ:B26" name="Konec všech zákazů" cz.name="Konec všech zákazů">
+</sign>
+<sign icon="B27.png" id="B27"  ref="CZ:B27" name="Povinnost zastavit vozidlo" cz.name="Povinnost zastavit vozidlo">
+</sign>
+<sign icon="B27_alt1.png" id="B27_alt1"  ref="CZ:B27" name="Povinnost zastavit vozidlo" cz.name="Povinnost zastavit vozidlo">
+</sign>
+<sign icon="B27_alt2.png" id="B27_alt2"  ref="CZ:B27" name="Povinnost zastavit vozidlo" cz.name="Povinnost zastavit vozidlo">
+</sign>
+<sign icon="B28.png" id="B28"  ref="CZ:B28" name="Zákaz zastavení" cz.name="Zákaz zastavení">
+</sign>
+<sign icon="B29.png" id="B29"  ref="CZ:B29" name="Zákaz stání" cz.name="Zákaz stání">
+</sign>
+<sign icon="B30.png" id="B30"  ref="CZ:B30" name="Zákaz vstupu chodců" cz.name="Zákaz vstupu chodců">
+</sign>
+<sign icon="B30a.png" id="B30a"  ref="CZ:B30a" name="Zákaz vjezdu osobních přepravníků" cz.name="Zákaz vjezdu osobních přepravníků">
+</sign>
+<sign icon="B31.png" id="B31"  ref="CZ:B31" name="Zákaz vjezdu pro jezdce na zvířeti" cz.name="Zákaz vjezdu pro jezdce na zvířeti">
+</sign>
+<sign icon="B32.png" id="B32"  ref="CZ:B32" name="Jiný zákaz" cz.name="Jiný zákaz">
+</sign>
+<sign icon="B32_alt1.png" id="B32_alt1"  ref="CZ:B32" name="Jiný zákaz" cz.name="Jiný zákaz">
+</sign>
+<sign icon="B32_alt2.png" id="B32_alt2"  ref="CZ:B32" name="Jiný zákaz" cz.name="Jiný zákaz">
+</sign>
+<sign icon="B32_alt3.png" id="B32_alt3"  ref="CZ:B32" name="Jiný zákaz" cz.name="Jiný zákaz">
+</sign>
+<sign icon="B33.png" id="B33"  ref="CZ:B33" name="Zákaz vjezdu motorových vozidel s přípojným vozidlem" cz.name="Zákaz vjezdu motorových vozidel s přípojným vozidlem">
+</sign>
+<sign icon="B34.png" id="B34"  ref="CZ:B34" name=" Nejmenší vzdálenost mezi vozidly" cz.name=" Nejmenší vzdálenost mezi vozidly">
+</sign>
+<sign icon="C1.png" id="C1"  ref="CZ:C1" name="Kruhový objezd" cz.name="Kruhový objezd">
+</sign>
+<sign icon="C2a.png" id="C2a"  ref="CZ:C2a" name="Přikázaný směr jízdy přímo" cz.name="Přikázaný směr jízdy přímo">
+</sign>
+<sign icon="C2b.png" id="C2b"  ref="CZ:C2b" name="Přikázaný směr jízdy vpravo" cz.name="Přikázaný směr jízdy vpravo">
+</sign>
+<sign icon="C2c.png" id="C2c"  ref="CZ:C2c" name="Přikázaný směr jízdy vlevo" cz.name="Přikázaný směr jízdy vlevo">
+</sign>
+<sign icon="C2d.png" id="C2d"  ref="CZ:C2d" name="Přikázaný směr jízdy přímo a vpravo" cz.name="Přikázaný směr jízdy přímo a vpravo">
+</sign>
+<sign icon="C2e.png" id="C2e"  ref="CZ:C2e" name="Přikázaný směr jízdy přímo a vlevo" cz.name="Přikázaný směr jízdy přímo a vlevo">
+</sign>
+<sign icon="C2f.png" id="C2f"  ref="CZ:C2f" name="Přikázaný směr jízdy vpravo a vlevo" cz.name="Přikázaný směr jízdy vpravo a vlevo">
+</sign>
+<sign icon="C3a.png" id="C3a"  ref="CZ:C3a" name="Přikázaný směr jízdy zde vpravo" cz.name="Přikázaný směr jízdy zde vpravo">
+</sign>
+<sign icon="C3b.png" id="C3b"  ref="CZ:C3b" name="Přikázaný směr jízdy zde vlevo" cz.name="Přikázaný směr jízdy zde vlevo">
+</sign>
+<sign icon="C4a.png" id="C4a"  ref="CZ:C4a" name="Přikázaný směr objíždění vpravo" cz.name="Přikázaný směr objíždění vpravo">
+</sign>
+<sign icon="C4b.png" id="C4b"  ref="CZ:C4b" name="Přikázaný směr objíždění vlevo" cz.name="Přikázaný směr objíždění vlevo">
+</sign>
+<sign icon="C4c.png" id="C4c"  ref="CZ:C4c" name="Přikázaný směr objíždění vpravo a vlevo" cz.name="Přikázaný směr objíždění vpravo a vlevo">
+</sign>
+<sign icon="C5a.png" id="C5a"  ref="CZ:C5a" name="Sněhové řetězy" cz.name="Sněhové řetězy">
+</sign>
+<sign icon="C5b.png" id="C5b"  ref="CZ:C5b" name="Sněhové řetězy – konec" cz.name="Sněhové řetězy – konec">
+</sign>
+<sign icon="C6a.png" id="C6a"  ref="CZ:C6a" name="Nejnižší dovolená rychlost" cz.name="Nejnižší dovolená rychlost">
+</sign>
+<sign icon="C6b.png" id="C6b"  ref="CZ:C6b" name="Konec nejnižší dovolené rychlosti" cz.name="Konec nejnižší dovolené rychlosti">
+</sign>
+<sign icon="C7a.png" id="C7a"  ref="CZ:C7a" name="Stezka pro chodce" cz.name="Stezka pro chodce">
+</sign>
+<sign icon="C7b.png" id="C7b"  ref="CZ:C7b" name="Konec stezky pro chodce" cz.name="Konec stezky pro chodce">
+</sign>
+<sign icon="C8a.png" id="C8a"  ref="CZ:C8a" name="Stezka pro cyklisty" cz.name="Stezka pro cyklisty">
+</sign>
+<sign icon="C8b.png" id="C8b"  ref="CZ:C8b" name="Konec stezky pro cyklisty" cz.name="Konec stezky pro cyklisty">
+</sign>
+<sign icon="C9a.png" id="C9a"  ref="CZ:C9a" name="Stezka pro chodce a cyklisty společná" cz.name="Stezka pro chodce a cyklisty společná">
+</sign>
+<sign icon="C9b.png" id="C9b"  ref="CZ:C9b" name="Konec stezky pro chodce a cyklisty společné" cz.name="Konec stezky pro chodce a cyklisty společné">
+</sign>
+<sign icon="C10a.png" id="C10a"  ref="CZ:C10a" name="Stezka pro chodce a cyklisty dělená" cz.name="Stezka pro chodce a cyklisty dělená">
+</sign>
+<sign icon="C10b.png" id="C10b"  ref="CZ:C10b" name="Konec stezky pro chodce a cyklisty dělené" cz.name="Konec stezky pro chodce a cyklisty dělené">
+</sign>
+<sign icon="C11a.png" id="C11a"  ref="CZ:C11a" name="Stezka pro jezdce na zvířeti" cz.name="Stezka pro jezdce na zvířeti">
+</sign>
+<sign icon="C11b.png" id="C11b"  ref="CZ:C11b" name="Konec stezky pro jezdce na zvířeti" cz.name="Konec stezky pro jezdce na zvířeti">
+</sign>
+<sign icon="C12a.png" id="C12a"  ref="CZ:C12a" name="Přikázaný jízdní pruh" cz.name="Přikázaný jízdní pruh">
+</sign>
+<sign icon="C12b.png" id="C12b"  ref="CZ:C12b" name="Konec přikázaného jízdního pruhu" cz.name="Konec přikázaného jízdního pruhu">
+</sign>
+<sign icon="C13a.png" id="C13a"  ref="CZ:C13a" name="Rozsviť světla" cz.name="Rozsviť světla">
+</sign>
+<sign icon="C13b.png" id="C13b"  ref="CZ:C13b" name="Rozsviť světla – konec" cz.name="Rozsviť světla – konec">
+</sign>
+<sign icon="C14a.png" id="C14a"  ref="CZ:C14a" name="Jiný příkaz" cz.name="Jiný příkaz">
+</sign>
+<sign icon="C14b.png" id="C14b"  ref="CZ:C14b" name="Konec jiného příkazu" cz.name="Konec jiného příkazu">
+</sign>
+<sign icon="C15a.png" id="C15a"  ref="CZ:C15a" name="Zimní výbava" cz.name="Zimní výbava">
+</sign>
+<sign icon="C15b.png" id="C15b"  ref="CZ:C15b" name="Zimní výbava – konec" cz.name="Zimní výbava – konec">
+</sign>
+
+<sign icon="IZ1a.png" id="IZ1a"  ref="CZ:IZ1a" name="Dálnice" cz.name="Dálnice">
+</sign>
+<sign icon="IZ1b.png" id="IZ1b"  ref="CZ:IZ1b" name="Konec dálnice" cz.name="Konec dálnice">
+</sign>
+<sign icon="IZ2a.png" id="IZ2a"  ref="CZ:IZ2a" name="Silnice pro motorová vozidla" cz.name="Silnice pro motorová vozidla">
+</sign>
+<sign icon="IZ2b.png" id="IZ2b"  ref="CZ:IZ2b" name="Konec silnice pro motorová vozidla" cz.name="Konec silnice pro motorová vozidla">
+</sign>
+<sign icon="IZ3a.png" id="IZ3a"  ref="CZ:IZ3a" name="Tunel" cz.name="Tunel">
+</sign>
+<sign icon="IZ3b.png" id="IZ3b"  ref="CZ:IZ3b" name="Konec tunelu" cz.name="Konec tunelu">
+</sign>
+<sign icon="IZ4a.png" id="IZ4a"  ref="CZ:IZ4a" name="Obec" cz.name="Obec">
+</sign>
+<sign icon="IZ4b.png" id="IZ4b"  ref="CZ:IZ4b" name="Konec obce" cz.name="Konec obce">
+</sign>
+<sign icon="IZ4c.png" id="IZ4c"  ref="CZ:IZ4c" name="Obec v jazyce národnostní menšiny" cz.name="Obec v jazyce národnostní menšiny">
+</sign>
+<sign icon="IZ4d.png" id="IZ4d"  ref="CZ:IZ4d" name="Konec obce v jazyce národnostní menšiny" cz.name="Konec obce v jazyce národnostní menšiny">
+</sign>
+<sign icon="IZ5a.png" id="IZ5a"  ref="CZ:IZ5a" name="Obytná zóna" cz.name="Obytná zóna">
+</sign>
+<sign icon="IZ5b.png" id="IZ5b"  ref="CZ:IZ5b" name="Konec obytné zóny" cz.name="Konec obytné zóny">
+</sign>
+<sign icon="IZ6a.png" id="IZ6a"  ref="CZ:IZ6a" name="Pěší zóna" cz.name="Pěší zóna">
+</sign>
+<sign icon="IZ6b.png" id="IZ6b"  ref="CZ:IZ6b" name="Konec pěší zóny" cz.name="Konec pěší zóny">
+</sign>
+<sign icon="IZ7a.png" id="IZ7a"  ref="CZ:IZ7a" name="Emisní zóna" cz.name="Emisní zóna">
+</sign>
+<sign icon="IZ7b.png" id="IZ7b"  ref="CZ:IZ7b" name="Konec emisní zóny" cz.name="Konec emisní zóny">
+</sign>
+<sign icon="IZ8a.png" id="IZ8a"  ref="CZ:IZ8a" name="Zóna s dopravním omezením" cz.name="Zóna s dopravním omezením">
+</sign>
+<sign icon="IZ8a_alt1.png" id="IZ8a_alt1"  ref="CZ:IZ8a" name="Zóna s dopravním omezením" cz.name="Zóna s dopravním omezením">
+</sign>
+<sign icon="IZ8a_alt2.png" id="IZ8a_alt2"  ref="CZ:IZ8a" name="Zóna s dopravním omezením" cz.name="Zóna s dopravním omezením">
+</sign>
+<sign icon="IZ8b.png" id="IZ8b"  ref="CZ:IZ8b" name="Konec zóny s dopravním omezením" cz.name="Konec zóny s dopravním omezením">
+</sign>
+<sign icon="IZ9a.png" id="IZ9a"  ref="CZ:IZ9a" name="Zóna pro cyklisty" cz.name="Zóna pro cyklisty">
+</sign>
+<sign icon="IZ9a_alt.png" id="IZ9a_alt"  ref="CZ:IZ9a" name="Zóna pro cyklisty" cz.name="Zóna pro cyklisty">
+</sign>
+<sign icon="IZ9b.png" id="IZ9b"  ref="CZ:IZ9b" name="Konec zóny pro cyklisty" cz.name="Konec zóny pro cyklisty">
+</sign>
+
+<sign icon="IP1.png" id="IP1"  ref="CZ:IP1" name="Okruh" cz.name="Okruh">
+</sign>
+<sign icon="IP1_alt1.png" id="IP1_alt1"  ref="CZ:IP1" name="Okruh" cz.name="Okruh">
+</sign>
+<sign icon="IP1_alt2.png" id="IP1_alt2"  ref="CZ:IP1" name="Okruh" cz.name="Okruh">
+</sign>
+<sign icon="IP1_alt3.png" id="IP1_alt3"  ref="CZ:IP1" name="Okruh" cz.name="Okruh">
+</sign>
+<sign icon="IP1_alt4.png" id="IP1_alt4"  ref="CZ:IP1" name="Okruh" cz.name="Okruh">
+</sign>
+<sign icon="IP1a.png" id="IP1a"  ref="CZ:IP1a" name="Okruh" cz.name="Okruh">
+</sign>
+<sign icon="IP1b.png" id="IP1b"  ref="CZ:IP1b" name="Změna směru okruhu" cz.name="Změna směru okruhu">
+</sign>
+<sign icon="IP2.png" id="IP2"  ref="CZ:IP2" name="Zpomalovací práh" cz.name="Zpomalovací práh">
+</sign>
+<sign icon="IP3.png" id="IP3"  ref="CZ:IP3" name="Podchod nebo nadchod" cz.name="Podchod nebo nadchod">
+</sign>
+<sign icon="IP3_alt.png" id="IP3_alt"  ref="CZ:IP3" name="Podchod nebo nadchod" cz.name="Podchod nebo nadchod">
+</sign>
+<sign icon="IP4a.png" id="IP4a"  ref="CZ:IP4a" name="Jednosměrný provoz" cz.name="Jednosměrný provoz">
+</sign>
+<sign icon="IP4b.png" id="IP4b"  ref="CZ:IP4b" name="Jednosměrný provoz" cz.name="Jednosměrný provoz">
+</sign>
+<sign icon="IP5.png" id="IP5"  ref="CZ:IP5" name="Doporučená rychlost" cz.name="Doporučená rychlost">
+</sign>
+<sign icon="IP6.png" id="IP6"  ref="CZ:IP6" name="Přechod pro chodce" cz.name="Přechod pro chodce">
+</sign>
+<sign icon="IP7.png" id="IP7"  ref="CZ:IP7" name="Přejezd pro cyklisty" cz.name="Přejezd pro cyklisty">
+</sign>
+<sign icon="IP8a.png" id="IP8a"  ref="CZ:IP8a" name="Tunel" cz.name="Tunel">
+</sign>
+<sign icon="IP8b.png" id="IP8b"  ref="CZ:IP8b" name="Konec tunelu" cz.name="Konec tunelu">
+</sign>
+<sign icon="IP9.png" id="IP9"  ref="CZ:IP9" name="Nouzové stání" cz.name="Nouzové stání">
+</sign>
+<sign icon="IP9_alt.png" id="IP9_alt"  ref="CZ:IP9" name="Nouzové stání" cz.name="Nouzové stání">
+</sign>
+<sign icon="IP10a.png" id="IP10a"  ref="CZ:IP10a" name="Slepá pozemní komunikace" cz.name="Slepá pozemní komunikace">
+</sign>
+<sign icon="IP10b.png" id="IP10b"  ref="CZ:IP10b" name="Návěst před slepou pozemní komunikací" cz.name="Návěst před slepou pozemní komunikací">
+</sign>
+<sign icon="IP11a.png" id="IP11a"  ref="CZ:IP11a" name="Parkoviště" cz.name="Parkoviště">
+</sign>
+<sign icon="IP11b.png" id="IP11b"  ref="CZ:IP11b" name="Parkoviště (kolmé nebo šikmé stání)" cz.name="Parkoviště (kolmé nebo šikmé stání)">
+</sign>
+<sign icon="IP11c.png" id="IP11c"  ref="CZ:IP11c" name="Parkoviště (podélné stání)" cz.name="Parkoviště (podélné stání)">
+</sign>
+<sign icon="IP11d.png" id="IP11d"  ref="CZ:IP11d" name="Parkoviště (stání na chodníku kolmé nebo šikmé)" cz.name="Parkoviště (stání na chodníku kolmé nebo šikmé)">
+</sign>
+<sign icon="IP11e.png" id="IP11e"  ref="CZ:IP11e" name="Parkoviště (stání na chodníku podélné)" cz.name="Parkoviště (stání na chodníku podélné)">
+</sign>
+<sign icon="IP11f.png" id="IP11f"  ref="CZ:IP11f" name="Parkoviště (částečné stání na chodníku kolmé nebo šikmé)" cz.name="Parkoviště (částečné stání na chodníku kolmé nebo šikmé)">
+</sign>
+<sign icon="IP11g.png" id="IP11g"  ref="CZ:IP11g" name="Parkoviště (částečné stání na chodníku podélné)" cz.name="Parkoviště (částečné stání na chodníku podélné)">
+</sign>
+<sign icon="IP12.png" id="IP12"  ref="CZ:IP12" name="Vyhrazené parkoviště" cz.name="Vyhrazené parkoviště">
+</sign>
+<sign icon="IP12_alt1.png" id="IP12_alt1"  ref="CZ:IP12" name="Vyhrazené parkoviště" cz.name="Vyhrazené parkoviště">
+</sign>
+<sign icon="IP12_alt2.png" id="IP12_alt2"  ref="CZ:IP12" name="Vyhrazené parkoviště" cz.name="Vyhrazené parkoviště">
+</sign>
+<sign icon="IP12_alt3.png" id="IP12_alt3"  ref="CZ:IP12" name="Vyhrazené parkoviště" cz.name="Vyhrazené parkoviště">
+</sign>
+<sign icon="IP13a.png" id="IP13a"  ref="CZ:IP13a" name="Kryté parkoviště" cz.name="Kryté parkoviště">
+</sign>
+<sign icon="IP13b.png" id="IP13b"  ref="CZ:IP13b" name="Parkoviště s parkovacím kotoučem" cz.name="Parkoviště s parkovacím kotoučem">
+</sign>
+<sign icon="IP13c.png" id="IP13c"  ref="CZ:IP13c" name="Parkoviště s parkovacím automatem" cz.name="Parkoviště s parkovacím automatem">
+</sign>
+<sign icon="IP13d.png" id="IP13d"  ref="CZ:IP13d" name="Parkoviště P + R" cz.name="Parkoviště P + R">
+</sign>
+<sign icon="IP13e.png" id="IP13e"  ref="CZ:IP13e" name="Parkoviště K + R" cz.name="Parkoviště K + R">
+</sign>
+<sign icon="IP14a.png" id="IP14a"  ref="CZ:IP14a" name="Dálnice" cz.name="Dálnice">
+</sign>
+<sign icon="IP14b.png" id="IP14b"  ref="CZ:IP14b" name="Konec dálnice" cz.name="Konec dálnice">
+</sign>
+<sign icon="IP15a.png" id="IP15a"  ref="CZ:IP15a" name="Silnice pro motorová vozidla" cz.name="Silnice pro motorová vozidla">
+</sign>
+<sign icon="IP15b.png" id="IP15b"  ref="CZ:IP15b" name="Konec silnice pro motorová vozidla" cz.name="Konec silnice pro motorová vozidla">
+</sign>
+<sign icon="IP16.png" id="IP16"  ref="CZ:IP16" name="Uspořádání jízdních pruhů" cz.name="Uspořádání jízdních pruhů">
+</sign>
+<sign icon="IP17.png" id="IP17"  ref="CZ:IP17" name="Uspořádání jízdních pruhů" cz.name="Uspořádání jízdních pruhů">
+</sign>
+<sign icon="IP18a.png" id="IP18a"  ref="CZ:IP18a" name="Zvýšení počtu jízdních pruhů" cz.name="Zvýšení počtu jízdních pruhů">
+</sign>
+<sign icon="IP18b.png" id="IP18b"  ref="CZ:IP18b" name="Snížení počtu jízdních pruhů" cz.name="Snížení počtu jízdních pruhů">
+</sign>
+<sign icon="IP18c.png" id="IP18c"  ref="CZ:IP18c" name="Jízdní pruh pro pomalá vozidla" cz.name="Jízdní pruh pro pomalá vozidla">
+</sign>
+<sign icon="IP19.png" id="IP19"  ref="CZ:IP19" name="Řadicí pruhy" cz.name="Řadicí pruhy">
+</sign>
+<sign icon="IP20a.png" id="IP20a"  ref="CZ:IP20a" name="Vyhrazený jízdní pruh" cz.name="Vyhrazený jízdní pruh">
+</sign>
+<sign icon="IP20b.png" id="IP20b"  ref="CZ:IP20b" name="Konec vyhrazeného jízdního pruhu" cz.name="Konec vyhrazeného jízdního pruhu">
+</sign>
+<sign icon="IP21.png" id="IP21"  ref="CZ:IP21" name="Omezení v jízdním pruhu" cz.name="Omezení v jízdním pruhu">
+</sign>
+<sign icon="IP22.png" id="IP22"  ref="CZ:IP22" name="Změna organizace dopravy" cz.name="Změna organizace dopravy">
+</sign>
+<sign icon="IP23a.png" id="IP23a"  ref="CZ:IP23a" name="Objíždění tramvaje" cz.name="Objíždění tramvaje">
+</sign>
+<sign icon="IP23b.png" id="IP23b"  ref="CZ:IP23b" name="Objíždění tramvaje (jízda podél tramvaje vlevo)" cz.name="Objíždění tramvaje (jízda podél tramvaje vlevo)">
+</sign>
+<sign icon="IP23c.png" id="IP23c"  ref="CZ:IP23c" name="Sjíždění vozidel veřejné hromadné dopravy osob z tramvajového pásu" cz.name="Sjíždění vozidel veřejné hromadné dopravy osob z tramvajového pásu">
+</sign>
+<sign icon="IP24.png" id="IP24"  ref="CZ:IP24" name="Únikový pruh" cz.name="Únikový pruh">
+</sign>
+<sign icon="IP28a.png" id="IP28a"  ref="CZ:IP28a" name="Zpoplatnění provozu" cz.name="Zpoplatnění provozu">
+</sign>
+<sign icon="IP28a_new.png" id="IP28a_new"  ref="CZ:IP28a" name="Zpoplatnění provozu" cz.name="Zpoplatnění provozu">
+</sign>
+<sign icon="IP28b.png" id="IP28b"  ref="CZ:IP28b" name="Nejvyšší dovolené rychlosti" cz.name="Nejvyšší dovolené rychlosti">
+</sign>
+<sign icon="IP28b_new.png" id="IP28b_new"  ref="CZ:IP28b" name="Nejvyšší dovolené rychlosti" cz.name="Nejvyšší dovolené rychlosti">
+</sign>
+<sign icon="IP29.png" id="IP29"  ref="CZ:IP29" name="Střídavé řazení" cz.name="Střídavé řazení">
+</sign>
+<sign icon="IP30.png" id="IP30"  ref="CZ:IP30" name="Státní hranice" cz.name="Státní hranice">
+</sign>
+<sign icon="IP31a.png" id="IP31a"  ref="CZ:IP31a" name="Měření rychlosti" cz.name="Měření rychlosti">
+</sign>
+<sign icon="IP31b.png" id="IP31b"  ref="CZ:IP31b" name="Konec měření rychlosti" cz.name="Konec měření rychlosti">
+</sign>
+<sign icon="IP32.png" id="IP32"  ref="CZ:IP32" name="Bezpečný odstup" cz.name="Bezpečný odstup">
+</sign>
+
+<sign icon="IS1a.png" id="IS1a"  ref="CZ:IS1a" name="Směrová tabule pro příjezd k dálnici (přímo)" cz.name="Směrová tabule pro příjezd k dálnici (přímo)">
+</sign>
+<sign icon="IS1a_alt.png" id="IS1a_alt"  ref="CZ:IS1a" name="Směrová tabule pro příjezd k dálnici (přímo)" cz.name="Směrová tabule pro příjezd k dálnici (přímo)">
+</sign>
+<sign icon="IS1b.png" id="IS1b"  ref="CZ:IS1b" name="Směrová tabule pro příjezd k dálnici (vlevo)" cz.name="Směrová tabule pro příjezd k dálnici (vlevo)">
+</sign>
+<sign icon="IS1c.png" id="IS1c"  ref="CZ:IS1c" name="Směrová tabule pro příjezd k dálnici (vpravo)" cz.name="Směrová tabule pro příjezd k dálnici (vpravo)">
+</sign>
+<sign icon="IS1d.png" id="IS1d"  ref="CZ:IS1d" name="Směrová tabule před nájezdem na dálnici (přímo)" cz.name="Směrová tabule před nájezdem na dálnici (přímo)">
+</sign>
+<sign icon="IS1e.png" id="IS1e"  ref="CZ:IS1e" name="Směrová tabule před nájezdem na dálnici (vlevo)" cz.name="Směrová tabule před nájezdem na dálnici (vlevo)">
+</sign>
+<sign icon="IS1f.png" id="IS1f"  ref="CZ:IS1f" name="Směrová tabule před nájezdem na dálnici (vpravo)" cz.name="Směrová tabule před nájezdem na dálnici (vpravo)">
+</sign>
+<sign icon="IS2a.png" id="IS2a"  ref="CZ:IS2a" name="Směrová tabule pro příjezd k silnici pro motorová vozidla (přímo)" cz.name="Směrová tabule pro příjezd k silnici pro motorová vozidla (přímo)">
+</sign>
+<sign icon="IS2b.png" id="IS2b"  ref="CZ:IS2b" name="Směrová tabule pro příjezd k silnici pro motorová vozidla (vlevo)" cz.name="Směrová tabule pro příjezd k silnici pro motorová vozidla (vlevo)">
+</sign>
+<sign icon="IS2c.png" id="IS2c"  ref="CZ:IS2c" name="Směrová tabule pro příjezd k silnici pro motorová vozidla (vpravo)" cz.name="Směrová tabule pro příjezd k silnici pro motorová vozidla (vpravo)">
+</sign>
+<sign icon="IS2d.png" id="IS2d"  ref="CZ:IS2d" name="Směrová tabule před nájezdem na silnici pro motorová vozidla (přímo)" cz.name="Směrová tabule před nájezdem na silnici pro motorová vozidla (přímo)">
+</sign>
+<sign icon="IS2e.png" id="IS2e"  ref="CZ:IS2e" name="Směrová tabule před nájezdem na silnici pro motorová vozidla (vlevo)" cz.name="Směrová tabule před nájezdem na silnici pro motorová vozidla (vlevo)">
+</sign>
+<sign icon="IS2f.png" id="IS2f"  ref="CZ:IS2f" name="Směrová tabule před nájezdem na silnici pro motorová vozidla (vpravo)" cz.name="Směrová tabule před nájezdem na silnici pro motorová vozidla (vpravo)">
+</sign>
+<sign icon="IS3a.png" id="IS3a"  ref="CZ:IS3a" name="Směrová tabule s cílem (přímo)" cz.name="Směrová tabule s cílem (přímo)">
+</sign>
+<sign icon="IS3b.png" id="IS3b"  ref="CZ:IS3b" name="Směrová tabule s cílem (vlevo)" cz.name="Směrová tabule s cílem (vlevo)">
+</sign>
+<sign icon="IS3c.png" id="IS3c"  ref="CZ:IS3c" name="Směrová tabule s cílem (vpravo)" cz.name="Směrová tabule s cílem (vpravo)">
+</sign>
+<sign icon="IS4a.png" id="IS4a"  ref="CZ:IS4a" name="Směrová tabule s místním cílem (přímo)" cz.name="Směrová tabule s místním cílem (přímo)">
+</sign>
+<sign icon="IS4b.png" id="IS4b"  ref="CZ:IS4b" name="Směrová tabule s místním cílem (vlevo)" cz.name="Směrová tabule s místním cílem (vlevo)">
+</sign>
+<sign icon="IS4c.png" id="IS4c"  ref="CZ:IS4c" name="Směrová tabule s místním cílem (vpravo)" cz.name="Směrová tabule s místním cílem (vpravo)">
+</sign>
+<sign icon="IS5.png" id="IS5"  ref="CZ:IS5" name="Směrová tabule k jinému cíli" cz.name="Směrová tabule k jinému cíli">
+</sign>
+<sign icon="IS6a.png" id="IS6a"  ref="CZ:IS6a" name="Označení křižovatky" cz.name="Označení křižovatky">
+</sign>
+<sign icon="IS6a_alt.png" id="IS6a_alt"  ref="CZ:IS6a" name="Označení křižovatky" cz.name="Označení křižovatky">
+</sign>
+<sign icon="IS6b.png" id="IS6b"  ref="CZ:IS6b" name="Návěst před křižovatkou" cz.name="Návěst před křižovatkou">
+</sign>
+<sign icon="IS6b_alt.png" id="IS6b_alt"  ref="CZ:IS6b" name="Návěst před křižovatkou" cz.name="Návěst před křižovatkou">
+</sign>
+<sign icon="IS6d.png" id="IS6d"  ref="CZ:IS6d" name="Návěst před křižovatkou" cz.name="Návěst před křižovatkou">
+</sign>
+<sign icon="IS6e.png" id="IS6e"  ref="CZ:IS6e" name="Směrová návěst pro směr přímo" cz.name="Směrová návěst pro směr přímo">
+</sign>
+<sign icon="IS6f.png" id="IS6f"  ref="CZ:IS6f" name="Směrová návěst před odbočením" cz.name="Směrová návěst před odbočením">
+</sign>
+<sign icon="IS6g.png" id="IS6g"  ref="CZ:IS6g" name="Návěst před křižovatkou" cz.name="Návěst před křižovatkou">
+</sign>
+<sign icon="IS7a.png" id="IS7a"  ref="CZ:IS7a" name="Směrová návěst pro odbočení" cz.name="Směrová návěst pro odbočení">
+</sign>
+<sign icon="IS7b.png" id="IS7b"  ref="CZ:IS7b" name="Směrová tabule pro výjezd" cz.name="Směrová tabule pro výjezd">
+</sign>
+<sign icon="IS8a.png" id="IS8a"  ref="CZ:IS8a" name="Dálková návěst s šipkou" cz.name="Dálková návěst s šipkou">
+</sign>
+<sign icon="IS8b.png" id="IS8b"  ref="CZ:IS8b" name="Dálková návěst se vzdálenostmi" cz.name="Dálková návěst se vzdálenostmi">
+</sign>
+<sign icon="IS9a.png" id="IS9a"  ref="CZ:IS9a" name="Návěst před úrovňovou křižovatkou" cz.name="Návěst před úrovňovou křižovatkou">
+</sign>
+<sign icon="IS9b.png" id="IS9b"  ref="CZ:IS9b" name="Návěst před okružní křižovatkou" cz.name="Návěst před okružní křižovatkou">
+</sign>
+<sign icon="IS9c.png" id="IS9c"  ref="CZ:IS9c" name="Návěst před křižovatkou s omezením" cz.name="Návěst před křižovatkou s omezením">
+</sign>
+<sign icon="IS9d.png" id="IS9d"  ref="CZ:IS9d" name="Návěst před křižovatkou s omezením" cz.name="Návěst před křižovatkou s omezením">
+</sign>
+<sign icon="IS9e.png" id="IS9e"  ref="CZ:IS9e" name="Návěst před křižovatkou s omezením" cz.name="Návěst před křižovatkou s omezením">
+</sign>
+<sign icon="IS10a.png" id="IS10a"  ref="CZ:IS10a" name="Návěst změny směru jízdy" cz.name="Návěst změny směru jízdy">
+</sign>
+<sign icon="IS10b.png" id="IS10b"  ref="CZ:IS10b" name="Návěst změny směru jízdy" cz.name="Návěst změny směru jízdy">
+</sign>
+<sign icon="IS10c.png" id="IS10c"  ref="CZ:IS10c" name="Návěst změny směru jízdy" cz.name="Návěst změny směru jízdy">
+</sign>
+<sign icon="IS10d.png" id="IS10d"  ref="CZ:IS10d" name="Návěst změny směru jízdy s omezením" cz.name="Návěst změny směru jízdy s omezením">
+</sign>
+<sign icon="IS10e.png" id="IS10e"  ref="CZ:IS10e" name="Návěst doporučeného způsobu odbočení cyklistů vlevo" cz.name="Návěst doporučeného způsobu odbočení cyklistů vlevo">
+</sign>
+<sign icon="IS11a.png" id="IS11a"  ref="CZ:IS11a" name="Návěst před objížďkou" cz.name="Návěst před objížďkou">
+</sign>
+<sign icon="IS11b.png" id="IS11b"  ref="CZ:IS11b" name="Směrová tabule pro vyznačení objížďky" cz.name="Směrová tabule pro vyznačení objížďky">
+</sign>
+<sign icon="IS11c.png" id="IS11c"  ref="CZ:IS11c" name="Směrová tabule pro vyznačení objížďky" cz.name="Směrová tabule pro vyznačení objížďky">
+</sign>
+<sign icon="IS11d.png" id="IS11d"  ref="CZ:IS11d" name="Směrová tabule pro vyznačení objížďky" cz.name="Směrová tabule pro vyznačení objížďky">
+</sign>
+<sign icon="IS13.png" id="IS13"  ref="CZ:IS13" name="Blízká návěst" cz.name="Blízká návěst">
+</sign>
+<sign icon="IS14.png" id="IS14"  ref="CZ:IS14" name="Hranice územního celku" cz.name="Hranice územního celku">
+</sign>
+<sign icon="IS15a.png" id="IS15a"  ref="CZ:IS15a" name="Jiný název" cz.name="Jiný název">
+</sign>
+<sign icon="IS15b.png" id="IS15b"  ref="CZ:IS15b" name="Jiný název" cz.name="Jiný název">
+</sign>
+<sign icon="IS16a.png" id="IS16a"  ref="CZ:IS16a" name="Číslo dálnice" cz.name="Číslo dálnice">
+</sign>
+<sign icon="IS16b.png" id="IS16b"  ref="CZ:IS16b" name="Číslo silnice (Silnice I. třídy)" cz.name="Číslo silnice (Silnice I. třídy)">
+</sign>
+<sign icon="IS16b_alt.png" id="IS16b_alt"  ref="CZ:IS16b" name="Číslo silnice (Silnice I. třídy)" cz.name="Číslo silnice (Silnice I. třídy)">
+</sign>
+<sign icon="IS16c.png" id="IS16c"  ref="CZ:IS16c" name="Číslo silnice (Silnice I. třídy)" cz.name="Číslo silnice (Silnice I. třídy)">
+</sign>
+<sign icon="IS16d.png" id="IS16d"  ref="CZ:IS16d" name="Číslo silnice (Silnice II. třídy)" cz.name="Číslo silnice (Silnice II. třídy)">
+</sign>
+<sign icon="IS17.png" id="IS17"  ref="CZ:IS17" name="Číslo silnice pro mezinárodní provoz" cz.name="Číslo silnice pro mezinárodní provoz">
+</sign>
+<sign icon="IS18a.png" id="IS18a"  ref="CZ:IS18a" name="Kilometrovník" cz.name="Kilometrovník">
+</sign>
+<sign icon="IS18b.png" id="IS18b"  ref="CZ:IS18b" name="Kilometrovník" cz.name="Kilometrovník">
+</sign>
+<sign icon="IS19a.png" id="IS19a"  ref="CZ:IS19a" name="Směrová tabule pro cyklisty (přímo)" cz.name="Směrová tabule pro cyklisty (přímo)">
+</sign>
+<sign icon="IS19b.png" id="IS19b"  ref="CZ:IS19b" name="Směrová tabule pro cyklisty (vlevo)" cz.name="Směrová tabule pro cyklisty (vlevo)">
+</sign>
+<sign icon="IS19c.png" id="IS19c"  ref="CZ:IS19c" name="Směrová tabule pro cyklisty (vpravo)" cz.name="Směrová tabule pro cyklisty (vpravo)">
+</sign>
+<sign icon="IS20.png" id="IS20"  ref="CZ:IS20" name="Návěst před křižovatkou pro cyklisty" cz.name="Návěst před křižovatkou pro cyklisty">
+</sign>
+<sign icon="IS20_alt.png" id="IS20_alt"  ref="CZ:IS20" name="Návěst před křižovatkou pro cyklisty" cz.name="Návěst před křižovatkou pro cyklisty">
+</sign>
+<sign icon="IS21a.png" id="IS21a"  ref="CZ:IS21a" name="Směrová tabulka pro cyklisty" cz.name="Směrová tabulka pro cyklisty">
+</sign>
+<sign icon="IS21b.png" id="IS21b"  ref="CZ:IS21b" name="Směrová tabulka pro cyklisty" cz.name="Směrová tabulka pro cyklisty">
+</sign>
+<sign icon="IS21c.png" id="IS21c"  ref="CZ:IS21c" name="Směrová tabulka pro cyklisty" cz.name="Směrová tabulka pro cyklisty">
+</sign>
+<sign icon="IS21d.png" id="IS21d"  ref="CZ:IS21d" name="Konec cyklistické trasy" cz.name="Konec cyklistické trasy">
+</sign>
+<sign icon="IS22a.png" id="IS22a"  ref="CZ:IS22a" name="Označení názvu ulice" cz.name="Označení názvu ulice">
+</sign>
+<sign icon="IS22b.png" id="IS22b"  ref="CZ:IS22b" name="Označení názvu ulice" cz.name="Označení názvu ulice">
+</sign>
+<sign icon="IS22c.png" id="IS22c"  ref="CZ:IS22c" name="Označení názvu ulice" cz.name="Označení názvu ulice">
+</sign>
+<sign icon="IS22d.png" id="IS22d"  ref="CZ:IS22d" name="Označení názvu ulice" cz.name="Označení názvu ulice">
+</sign>
+<sign icon="IS22e.png" id="IS22e"  ref="CZ:IS22e" name="Označení názvu ulice" cz.name="Označení názvu ulice">
+</sign>
+<sign icon="IS22f.png" id="IS22f"  ref="CZ:IS22f" name="Označení názvu ulice" cz.name="Označení názvu ulice">
+</sign>
+<sign icon="IS23.png" id="IS23"  ref="CZ:IS23" name="Kulturní nebo turistický cíl – návěst" cz.name="Kulturní nebo turistický cíl – návěst">
+</sign>
+<sign icon="IS24a.png" id="IS24a"  ref="CZ:IS24a" name="Kulturní nebo turistický cíl" cz.name="Kulturní nebo turistický cíl">
+</sign>
+<sign icon="IS24b.png" id="IS24b"  ref="CZ:IS24b" name="Kulturní nebo turistický cíl" cz.name="Kulturní nebo turistický cíl">
+</sign>
+<sign icon="IS24c.png" id="IS24c"  ref="CZ:IS24c" name="Komunální cíl" cz.name="Komunální cíl">
+</sign>
+
+<sign icon="IJ1.png" id="IJ1"  ref="CZ:IJ1"  name="Policie" cz.name="Policie">
+</sign>
+<sign icon="IJ2.png" id="IJ2"  ref="CZ:IJ2"  name="Nemocnice" cz.name="Nemocnice">
+</sign>
+<sign icon="IJ3.png" id="IJ3"  ref="CZ:IJ3"  name="První pomoc" cz.name="První pomoc">
+</sign>
+<sign icon="IJ4a.png" id="IJ4a"  ref="CZ:IJ4a"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4a_alt1.png" id="IJ4a_alt1"  ref="CZ:IJ4a"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4a_alt2.png" id="IJ4a_alt2"  ref="CZ:IJ4a"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4a_alt3.png" id="IJ4a_alt3"  ref="CZ:IJ4a"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4a_alt4.png" id="IJ4a_alt4"  ref="CZ:IJ4a"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4a_alt5.png" id="IJ4a_alt5"  ref="CZ:IJ4a"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4a_alt6.png" id="IJ4a_alt6"  ref="CZ:IJ4a"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4b.png" id="IJ4b"  ref="CZ:IJ4b"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4b_alt1.png" id="IJ4b_alt1"  ref="CZ:IJ4b"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4b_alt2.png" id="IJ4b_alt2"  ref="CZ:IJ4b"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4b_alt3.png" id="IJ4b_alt3"  ref="CZ:IJ4b"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4b_alt4.png" id="IJ4b_alt4"  ref="CZ:IJ4b"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4b_alt5.png" id="IJ4b_alt5"  ref="CZ:IJ4b"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4b_alt6.png" id="IJ4b_alt6"  ref="CZ:IJ4b"  name="Označník zastávky" cz.name="Označník zastávky">
+</sign>
+<sign icon="IJ4c.png" id="IJ4c"  ref="CZ:IJ4c"  name="Zastávka autobusu" cz.name="Zastávka autobusu">
+</sign>
+<sign icon="IJ4c_alt.png" id="IJ4c_alt"  ref="CZ:IJ4c"  name="Zastávka autobusu" cz.name="Zastávka autobusu">
+</sign>
+<sign icon="IJ4d.png" id="IJ4d"  ref="CZ:IJ4d"  name="Zastávka tramvaje" cz.name="Zastávka tramvaje">
+</sign>
+<sign icon="IJ4d_alt1.png" id="IJ4d_alt1"  ref="CZ:IJ4d"  name="Zastávka tramvaje" cz.name="Zastávka tramvaje">
+</sign>
+<sign icon="IJ4d_alt2.png" id="IJ4d_alt2"  ref="CZ:IJ4d"  name="Zastávka tramvaje" cz.name="Zastávka tramvaje">
+</sign>
+<sign icon="IJ4d_alt3.png" id="IJ4d_alt3"  ref="CZ:IJ4d"  name="Zastávka tramvaje" cz.name="Zastávka tramvaje">
+</sign>
+<sign icon="IJ4e.png" id="IJ4e"  ref="CZ:IJ4e"  name="Zastávka trolejbusu" cz.name="Zastávka trolejbusu">
+</sign>
+<sign icon="IJ4e_alt.png" id="IJ4e_alt"  ref="CZ:IJ4e"  name="Zastávka trolejbusu" cz.name="Zastávka trolejbusu">
+</sign>
+<sign icon="IJ5.png" id="IJ5"  ref="CZ:IJ5"  name="Informace" cz.name="Informace">
+</sign>
+<sign icon="IJ6.png" id="IJ6"  ref="CZ:IJ6"  name="Telefon" cz.name="Telefon">
+</sign>
+<sign icon="IJ7.png" id="IJ7"  ref="CZ:IJ7"  name="Čerpací stanice" cz.name="Čerpací stanice">
+</sign>
+<sign icon="IJ8.png" id="IJ8"  ref="CZ:IJ8"  name="Opravna" cz.name="Opravna">
+</sign>
+<sign icon="IJ9.png" id="IJ9"  ref="CZ:IJ9"  name="Stanice technické kontroly" cz.name="Stanice technické kontroly">
+</sign>
+<sign icon="IJ10.png" id="IJ10"  ref="CZ:IJ10"  name="Hotel nebo motel" cz.name="Hotel nebo motel">
+</sign>
+<sign icon="IJ11a.png" id="IJ11a"  ref="CZ:IJ11a"  name="Restaurace" cz.name="Restaurace">
+</sign>
+<sign icon="IJ11b.png" id="IJ11b"  ref="CZ:IJ11b"  name="Občerstvení" cz.name="Občerstvení">
+</sign>
+<sign icon="IJ12.png" id="IJ12"  ref="CZ:IJ12"  name="WC" cz.name="WC">
+</sign>
+<sign icon="IJ13.png" id="IJ13"  ref="CZ:IJ13"  name="Místo pro odpočinek" cz.name="Místo pro odpočinek">
+</sign>
+<sign icon="IJ14a.png" id="IJ14a"  ref="CZ:IJ14a"  name="Tábořiště pro stany" cz.name="Tábořiště pro stany">
+</sign>
+<sign icon="IJ14b.png" id="IJ14b"  ref="CZ:IJ14b"  name="Tábořiště pro stany a pro obytné přívěsy" cz.name="Tábořiště pro stany a pro obytné přívěsy">
+</sign>
+<sign icon="IJ14c.png" id="IJ14c"  ref="CZ:IJ14c"  name="Tábořiště pro stany a pro obytné přívěsy" cz.name="Tábořiště pro stany a pro obytné přívěsy">
+</sign>
+<sign icon="IJ15.png" id="IJ15"  ref="CZ:IJ15"  name="Dopravní vysílání" cz.name="Dopravní vysílání">
+</sign>
+<sign icon="IJ16.png" id="IJ16"  ref="CZ:IJ16"  name="Silniční kaple" cz.name="Silniční kaple">
+</sign>
+<sign icon="IJ17a.png" id="IJ17a"  ref="CZ:IJ17a"  name="Truckpark" cz.name="Truckpark">
+</sign>
+<sign icon="IJ17b.png" id="IJ17b"  ref="CZ:IJ17b"  name="Návěst před truckparkem" cz.name="Návěst před truckparkem">
+</sign>
+<sign icon="IJ18a.png" id="IJ18a"  ref="CZ:IJ18a"  name="Návěst před odpočívkou" cz.name="Návěst před odpočívkou">
+</sign>
+<sign icon="IJ18b.png" id="IJ18b"  ref="CZ:IJ18b"  name="Návěst před odbočením na odpočívku" cz.name="Návěst před odbočením na odpočívku">
+</sign>
+<sign icon="IJ18c.png" id="IJ18c"  ref="CZ:IJ18c"  name="Návěst pro odbočení na odpočívku" cz.name="Návěst pro odbočení na odpočívku">
+</sign>
+
+<sign icon="E1.png" id="E1"  ref="CZ:E1" supplementary="yes" name="Počet" cz.name="Počet">
+</sign>
+<sign icon="E2a.png" id="E2a"  ref="CZ:E2a" supplementary="yes" name="Tvar křižovatky" cz.name="Tvar křižovatky">
+</sign>
+<sign icon="E2b.png" id="E2b"  ref="CZ:E2b" supplementary="yes" name="Tvar křižovatky" cz.name="Tvar křižovatky">
+</sign>
+<sign icon="E2c.png" id="E2c"  ref="CZ:E2c" supplementary="yes" name="Tvar křižovatky" cz.name="Tvar křižovatky">
+</sign>
+<sign icon="E2d.png" id="E2d"  ref="CZ:E2d" supplementary="yes" name="Tvar dvou křižovatek" cz.name="Tvar dvou křižovatek">
+</sign>
+<sign icon="E3a.png" id="E3a"  ref="CZ:E3a" supplementary="yes" name="Vzdálenost" cz.name="Vzdálenost">
+</sign>
+<sign icon="E3b.png" id="E3b"  ref="CZ:E3b" supplementary="yes" name="Vzdálenost" cz.name="Vzdálenost">
+</sign>
+<sign icon="E4.png" id="E4"  ref="CZ:E4" supplementary="yes" name="Délka úseku" cz.name="Délka úseku">
+</sign>
+<sign icon="E5.png" id="E5"  ref="CZ:E5" supplementary="yes" name="Největší povolená hmotnost" cz.name="Největší povolená hmotnost">
+</sign>
+<sign icon="E6.png" id="E6"  ref="CZ:E6" supplementary="yes" name="Za mokra (za deště)" cz.name="Za mokra (za deště)">
+</sign>
+<sign icon="E7a.png" id="E7a"  ref="CZ:E7a" supplementary="yes" name="Směrová šipka pro směr přímo" cz.name="Směrová šipka pro směr přímo">
+</sign>
+<sign icon="E7b.png" id="E7b"  ref="CZ:E7b" supplementary="yes" name="Směrová šipka pro odbočení" cz.name="Směrová šipka pro odbočení">
+</sign>
+<sign icon="E8a.png" id="E8a"  ref="CZ:E8a" supplementary="yes" name="Začátek úseku" cz.name="Začátek úseku">
+</sign>
+<sign icon="E8b.png" id="E8b"  ref="CZ:E8b" supplementary="yes" name="Průběh úseku" cz.name="Průběh úseku">
+</sign>
+<sign icon="E8c.png" id="E8c"  ref="CZ:E8c" supplementary="yes" name="Konec úseku" cz.name="Konec úseku">
+</sign>
+<sign icon="E8d.png" id="E8d"  ref="CZ:E8d" supplementary="yes" name="Úsek platnosti" cz.name="Úsek platnosti">
+</sign>
+<sign icon="E8e.png" id="E8e"  ref="CZ:E8e" supplementary="yes" name="Úsek platnosti" cz.name="Úsek platnosti">
+</sign>
+<sign icon="E9.png" id="E9"  ref="CZ:E9" supplementary="yes" name="Druh vozidla" cz.name="Druh vozidla">
+</sign>
+<sign icon="E10.png" id="E10"  ref="CZ:E10" supplementary="yes" name="Tvar křížení pozemní komunikace s dráhou" cz.name="Tvar křížení pozemní komunikace s dráhou">
+</sign>
+<sign icon="E11a.png" id="E11a"  ref="CZ:E11a" supplementary="yes" name="Bez časového poplatku" cz.name="Bez časového poplatku">
+</sign>
+<sign icon="E11b.png" id="E11b"  ref="CZ:E11b" supplementary="yes" name="S časovým poplatkem" cz.name="S časovým poplatkem">
+</sign>
+<sign icon="E11c.png" id="E11c"  ref="CZ:E11c" supplementary="yes" name="Bez mýtného" cz.name="Bez mýtného">
+</sign>
+<sign icon="E11d.png" id="E11d"  ref="CZ:E11d" supplementary="yes" name="S mýtným" cz.name="S mýtným">
+</sign>
+<sign icon="E11e.png" id="E11e"  ref="CZ:E11e" supplementary="yes" name="Bez časového poplatku a mýtného" cz.name="Bez časového poplatku a mýtného">
+</sign>
+<sign icon="E11f.png" id="E11f"  ref="CZ:E11f" supplementary="yes" name="S časovým poplatkem a mýtným" cz.name="S časovým poplatkem a mýtným">
+</sign>
+<sign icon="E12a.png" id="E12a"  ref="CZ:E12a" supplementary="yes" name="Jízda cyklistů v protisměru" cz.name="Jízda cyklistů v protisměru">
+</sign>
+<sign icon="E12b.png" id="E12b"  ref="CZ:E12b" supplementary="yes" name="Vjezd cyklistů v protisměru povolen" cz.name="Vjezd cyklistů v protisměru povolen">
+</sign>
+<sign icon="E12c.png" id="E12c"  ref="CZ:E12c" supplementary="yes" name="Povolený směr jízdy cyklistů" cz.name="Povolený směr jízdy cyklistů">
+</sign>
+<sign icon="E13.png" id="E13"  ref="CZ:E13" supplementary="yes" name="Text nebo symbol" cz.name="Text nebo symbol">
+</sign>
+<sign icon="E14.png" id="E14"  ref="CZ:E14" supplementary="yes" name="Tranzit" cz.name="Tranzit">
+</sign>
+<sign icon="E15.png" id="E15"  ref="CZ:E15" name="Kategorie tunelu" cz.name="Kategorie tunelu">
+</sign>
+<sign icon="E16.png" id="E16"  ref="CZ:E16" name="Vzdálenost k příští čerpací stanici" cz.name="Vzdálenost k příští čerpací stanici">
+</sign>
+<sign icon="E17.png" id="E17"  ref="CZ:E17" name="Nedostatečný průjezdní profil vozovky" cz.name="Nedostatečný průjezdní profil vozovky">
+</sign>
+
+
+<sign icon="Z1.png" id="Z1"  ref="CZ:Z1" name="Dopravní kužel" cz.name="Dopravní kužel">
+</sign>
+<sign icon="Z2.png" id="Z2"  ref="CZ:Z2" name="Zábrana pro označení uzavírky" cz.name="Zábrana pro označení uzavírky">
+</sign>
+<sign icon="Z3.png" id="Z3"  ref="CZ:Z3" name="Vodicí tabule" cz.name="Vodicí tabule">
+</sign>
+<sign icon="Z4a.png" id="Z4a"  ref="CZ:Z4a" name="Směrovací deska se šikmými pruhy se sklonem vlevo" cz.name="Směrovací deska se šikmými pruhy se sklonem vlevo">
+</sign>
+<sign icon="Z4b.png" id="Z4b"  ref="CZ:Z4b" name="Směrovací deska se šikmými pruhy se sklonem vpravo" cz.name="Směrovací deska se šikmými pruhy se sklonem vpravo">
+</sign>
+<sign icon="Z4c.png" id="Z4c"  ref="CZ:Z4c" name="Směrovací deska středová" cz.name="Směrovací deska středová">
+</sign>
+<sign icon="Z4d.png" id="Z4d"  ref="CZ:Z4d" name="Směrovací deska se šipkou doleva" cz.name="Směrovací deska se šipkou doleva">
+</sign>
+<sign icon="Z4e.png" id="Z4e"  ref="CZ:Z4e" name="Směrovací deska se šipkou doprava" cz.name="Směrovací deska se šipkou doprava">
+</sign>
+<sign icon="Z5a.png" id="Z5a"  ref="CZ:Z5a" name="Vodicí deska se šikmými pruhy se sklonem vlevo" cz.name="Vodicí deska se šikmými pruhy se sklonem vlevo">
+</sign>
+<sign icon="Z5b.png" id="Z5b"  ref="CZ:Z5b" name="Vodicí deska pravá se šikmými pruhy se sklonem vpravo" cz.name="Vodicí deska pravá se šikmými pruhy se sklonem vpravo">
+</sign>
+<sign icon="Z5c.png" id="Z5c"  ref="CZ:Z5c" name="Vodicí deska středová se šikmými pruhy" cz.name="Vodicí deska středová se šikmými pruhy">
+</sign>
+<sign icon="Z5d.png" id="Z5d"  ref="CZ:Z5d" name="Vodicí deska středová s vodorovnými pruhy" cz.name="Vodicí deska středová s vodorovnými pruhy">
+</sign>
+<sign icon="Z11h.png" id="Z11h"  ref="CZ:Z11h" name="Směrový sloupek zelený kulatý – baliseta" cz.name="Směrový sloupek zelený kulatý – baliseta">
+</sign>
+<sign icon="Z12.png" id="Z12"  ref="CZ:Z12" name="Krátký příčný práh" cz.name="Krátký příčný práh">
+</sign>
+
+<sign icon="ZPI1.png" id="ZPI1"  ref="CZ:ZPI1" name="Nápisy" cz.name="Nápisy">
+</sign>
+<sign icon="ZPI2.png" id="ZPI2"  ref="CZ:ZPI2" name="Obsaditelnost parkoviště" cz.name="Obsaditelnost parkoviště">
+</sign>
+<sign icon="ZPI3.png" id="ZPI3"  ref="CZ:ZPI3" name="Teploměr" cz.name="Teploměr">
+</sign>
+
+<sign icon="V6a.png" id="V6a"  ref="CZ:V6a" name="Příčná čára souvislá se symbolem “Dej přednost v jízdě!“" cz.name="Příčná čára souvislá se symbolem “Dej přednost v jízdě!“">
+       <tag key="highway" value="give_way"/>
+</sign>
+<sign icon="V6b.png" id="V6b"  ref="CZ:V6b" name="Příčná čára souvislá s nápisem STOP" cz.name="Příčná čára souvislá s nápisem STOP">
+       <tag key="highway" value="stop"/>
+</sign>
+<sign icon="V7a.png" id="V7a"  ref="CZ:V7a" name="Přechod pro chodce" cz.name="Přechod pro chodce">
+       <tag key="highway" value="crossing"/>
+</sign>
+<sign icon="V7b.png" id="V7b"  ref="CZ:V7b" name="Místo pro přecházení" cz.name="Místo pro přecházení">
+       <tag key="highway" value="crossing"/>
+</sign>
+<sign icon="V8a.png" id="V8a"  ref="CZ:V8a" name="Přejezd pro cyklisty" cz.name="Přejezd pro cyklisty">
+</sign>
+<sign icon="V8b.png" id="V8b"  ref="CZ:V8b" name="Přejezd pro cyklisty přimknutý k přechodu pro chodce" cz.name="Přejezd pro cyklisty přimknutý k přechodu pro chodce">
+</sign>
+<sign icon="V8b.png" id="V8b_alt1"  ref="CZ:V8b_alt1" name="Přejezd pro cyklisty přimknutý k přechodu pro chodce" cz.name="Přejezd pro cyklisty přimknutý k přechodu pro chodce">
+</sign>
+<sign icon="V8b.png" id="V8b_alt2"  ref="CZ:V8b_alt2" name="Přejezd pro cyklisty přimknutý k přechodu pro chodce" cz.name="Přejezd pro cyklisty přimknutý k přechodu pro chodce">
+</sign>
+<sign icon="V8b.png" id="V8b_alt3"  ref="CZ:V8b_alt3" name="Přejezd pro cyklisty přimknutý k přechodu pro chodce" cz.name="Přejezd pro cyklisty přimknutý k přechodu pro chodce">
+</sign>
+<sign icon="V10a.png" id="V10a"  ref="CZ:V10a" name="Stání podélné" cz.name="Stání podélné">
+</sign>
+<sign icon="V10b.png" id="V10b"  ref="CZ:V10b" name="Stání kolmé" cz.name="Stání kolmé">
+</sign>
+<sign icon="V10c.png" id="V10c"  ref="CZ:V10c" name="Stání šikmé" cz.name="Stání šikmé">
+</sign>
+<sign icon="V10d.png" id="V10d"  ref="CZ:V10d" name="Parkovací pruh" cz.name="Parkovací pruh">
+</sign>
+<sign icon="V10e.png" id="V10e"  ref="CZ:V10e" name="Vyhrazené parkoviště" cz.name="Vyhrazené parkoviště">
+</sign>
+<sign icon="V10f.png" id="V10f"  ref="CZ:V10f" name="Vyhrazené parkoviště pro vozidlo přepravující osobu těžce postiženou nebo osobu těžce pohybově postiženou" cz.name="Vyhrazené parkoviště pro vozidlo přepravující osobu těžce postiženou nebo osobu těžce pohybově postiženou">
+</sign>
+<sign icon="V10g.png" id="V10g"  ref="CZ:V10g" name="Omezené stání" cz.name="Omezené stání">
+</sign>
+<sign icon="V11a.png" id="V11a"  ref="CZ:V11a" name="Zastávka autobusu nebo trolejbusu" cz.name="Zastávka autobusu nebo trolejbusu">
+</sign>
+<sign icon="V11a_new.png" id="V11a_new"  ref="CZ:V11a" name="Zastávka autobusu nebo trolejbusu" cz.name="Zastávka autobusu nebo trolejbusu">
+</sign>
+<sign icon="V11a_alt.png" id="V11a_alt"  ref="CZ:V11a" name="Zastávka autobusu nebo trolejbusu" cz.name="Zastávka autobusu nebo trolejbusu">
+</sign>
+<sign icon="V11b.png" id="V11b"  ref="CZ:V11b" name="Zastávka tramvaje" cz.name="Zastávka tramvaje">
+</sign>
+<sign icon="V11b_new.png" id="V11b_new"  ref="CZ:V11b" name="Zastávka tramvaje" cz.name="Zastávka tramvaje">
+</sign>
+<sign icon="V12a.png" id="V12a"  ref="CZ:V12a" name="Žlutá klikatá čára" cz.name="Žlutá klikatá čára">
+</sign>
+<sign icon="V12b.png" id="V12b"  ref="CZ:V12b" name="Žluté zkřížené čáry" cz.name="Žluté zkřížené čáry">
+</sign>
+<sign icon="V12c.png" id="V12c"  ref="CZ:V12c" name="Zákaz zastavení" cz.name="Zákaz zastavení">
+</sign>
+<sign icon="V12d.png" id="V12d"  ref="CZ:V12d" name=" Zákaz stání" cz.name=" Zákaz stání">
+</sign>
+<sign icon="V12e.png" id="V12e"  ref="CZ:V12e" name="Bílá klikatá čára" cz.name="Bílá klikatá čára">
+</sign>
+<sign icon="V14.png" id="V14"  ref="CZ:V14" name="Jízdní pruh pro cyklisty" cz.name="Jízdní pruh pro cyklisty">
+</sign>
+<sign icon="V16.png" id="V16"  ref="CZ:V16" name="Bezpečný odstup" cz.name="Bezpečný odstup">
+</sign>
+<sign icon="V17.png" id="V17"  ref="CZ:V17" name="Trojúhelníky" cz.name="Trojúhelníky">
+</sign>
+<sign icon="V18.png" id="V18"  ref="CZ:V18" name="Optická psychologická brzda" cz.name="Optická psychologická brzda">
+</sign>
+<sign icon="V19.png" id="V19"  ref="CZ:V19" name="Prostor pro cyklisty" cz.name="Prostor pro cyklisty">
+</sign>
+<sign icon="V20.png" id="V20"  ref="CZ:V20" name="Piktogramový koridor pro cyklisty" cz.name="Piktogramový koridor pro cyklisty">
+</sign>
+</roadsignpreset>
Index: /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetDE.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetDE.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetDE.xml	(revision 36424)
@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+roadsigns plugin preset file for Germany
+-->
+<roadsignpreset country="DE">
+    <sign ref="DE:108/DE:110" icon="DE_110" traffic_sign_tag="" name="Incline" de.name="Steigung"
+            help="Applies for the road section with steep incline. (Split the way at the ends of the steep section.) 
+Positive values indicate movement upward in the direction of the (osm) way and negative values indicate movement downwards in the direction of the way."
+            de.help="Gilt für das Streckenstück mit hoher Steigung. (Weg am Anfang und Ende des steilen Abschnittes auftrennen.) 
+Positive Werte stehen für einen Anstieg in Richtung des ways und negative Werte für einen Abfall in Richtung des ways."
+            wiki="Key:incline"
+            de.wiki="DE:Key:incline">
+        <!--Suppress the traffic_sign tag, because it would be incorrect to add
+            traffic_sign=DE:110, when in reality it is DE:108.
+            Both are essentially equal, so in this tool only the incline symbol
+            should be present.-->
+        <tag key="incline" value="$val%"/>
+        <parameter input="textfield" name="max. incline" de.name="Maximale Steigung" type="int" ident="val" default="12" suffix="%" field_width="3"/>
+    </sign>
+
+    <sign ref="DE:215" name="Roundabout" de.name="Kreisverkehr"
+        wiki="Tag:junction=roundabout"
+        de.wiki="DE:Tag:junction=roundabout">
+        <tag key="junction" value="roundabout"/>
+    </sign>
+
+    <sign id="oneway" ref="DE:220" traffic_sign_tag="" icon="DE_220" name="One-way road" de.name="Einbahnstraße"
+            wiki="Key:oneway"
+            de.wiki="DE:Key:oneway">
+        <tag key="oneway" value="yes"/>
+<!--        <supplementary id="DE:1022-10"/>-->
+<!--        FIXME: lane->-->
+    </sign>
+
+    <sign ref="DE:237" name="Bicycle path" de.name="Radweg">
+        <tag key="highway" value="cycleway"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="DE:1020-13"/> <!-- Inlineskaten frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+    </sign>
+
+    <sign ref="DE:238" name="Bridle path" de.name="Reitweg">
+        <tag key="highway" value="bridleway"/>
+        <tag key="horse" value="designated"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="DE:1022-10"/> <!-- Radfahrer frei -->
+        <supplementary id="DE:1026-36"/> <!-- Landwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-37"/> <!-- Forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-38"/> <!-- Land- und forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-39"/> <!-- Betriebs- und Versorgungsdienst frei -->
+    </sign>
+
+    <sign ref="DE:239" name="Pedestrian path" de.name="Gehweg">
+        <tag key="highway" value="footway"/>
+        <tag key="foot" value="designated"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="DE:1020-13"/> <!-- Inlineskaten frei -->
+        <supplementary id="DE:1022-10"/> <!-- Radfahrer frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+    </sign>
+
+    <sign ref="DE:240" name="Pedestrian &amp; bicycle path" de.name="Gemeinsamer Geh- und Radweg">
+        <tag key="highway" value="path"/>
+        <tag key="foot" value="designated"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="segregated" value="no"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="DE:1020-13"/> <!-- Inlineskaten frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+    </sign>
+
+    <sign ref="DE:241" name="Split pedestrian &amp; bicycle path" de.name="Getrennter Rad- und Gehweg">
+        <tag key="highway" value="path"/>
+        <tag key="foot" value="designated"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="segregated" value="yes"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="DE:1020-13"/> <!-- Inlineskaten frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+    </sign>
+
+    <sign ref="DE:242" name="Pedestrian zone" de.name="Fußgängerbereich"
+            wiki="Tag:highway%3Dpedestrian"
+            de.wiki="DE:Tag:highway%3Dpedestrian">
+        <tag key="highway" value="pedestrian"/>
+        <tag key="access" value="" ident="mode"/>
+        <supplementary id="DE:1020-13"/> <!-- Inlineskaten frei -->
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1022-10"/> <!-- Radfahrer frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+        <supplementary id="DE:1026-32"/> <!-- Linienverkehr frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+    </sign>
+
+    <sign ref="DE:244" name="Bicycle road" de.name="Fahrradstraße">
+        <!-- highway=* -->
+        <tag key="bicycle_road" value="yes"/>
+        <tag key="bicycle" value="designated"/>
+        <tag key="vehicle" value="no" ident="mode"/>
+        <tag key="maxspeed" value="30"/> <!-- FIXME: no override but min. value -->
+        <tag key="source:maxspeed" value="DE:bicycle_road"/>
+        <supplementary id="DE:1020-13"/> <!-- Inlineskaten frei -->
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+        <supplementary id="DE:1022-12"/> <!-- Krafträder frei -->
+        <supplementary id="DE:1024-14"/> <!-- Bus frei -->
+        <supplementary id="DE:1026-30"/> <!-- Taxi frei -->
+        <supplementary id="DE:1026-32"/> <!-- Linienverkehr frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+        <supplementary id="DE:Kraftfahrzeuge-frei"/> <!-- Kraftfahrzeuge frei -->
+    </sign>
+
+    <sign ref="DE:250" name="All vehicles prohibited" de.name="Verbot für Fahrzeuge aller Art">
+        <tag key="vehicle" value="no" ident="mode"/>
+        <supplementary id="DE:1020-12"/> <!-- Radfahrer und Anlieger frei -->
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1022-10"/> <!-- Radfahrer frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+        <supplementary id="DE:1022-12"/> <!-- Krafträder frei -->
+        <supplementary id="DE:1024-12"/> <!-- LKW frei -->
+        <supplementary id="DE:1024-14"/> <!-- Bus frei -->
+        <supplementary id="DE:1026-30"/> <!-- Taxi frei -->
+        <supplementary id="DE:1026-32"/> <!-- Linienverkehr frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+        <supplementary id="DE:1026-36"/> <!-- Landwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-37"/> <!-- Forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-38"/> <!-- Land- und forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-39"/> <!-- Betriebs- und Versorgungsdienst frei -->
+    </sign>
+
+    <sign ref="DE:251" name="Motorcars prohibited" de.name="Verbot für Kraftwagen"
+            long_name="Motorcars and other multi-track motorized vehicles prohibited"
+            de.long_name="Verbot für Kraftwagen und sonstige mehrspurige Kraftfahrzeuge"
+            wiki="Key:motorcar"
+            de.wiki="DE:Key:access">
+        <tag key="motorcar" value="no" ident="mode"/>
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1024-12"/> <!-- LKW frei -->
+        <supplementary id="DE:1024-14"/> <!-- Bus frei -->
+        <supplementary id="DE:1026-30"/> <!-- Taxi frei -->
+        <supplementary id="DE:1026-32"/> <!-- Linienverkehr frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+        <supplementary id="DE:1026-36"/> <!-- Landwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-37"/> <!-- Forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-38"/> <!-- Land- und forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-39"/> <!-- Betriebs- und Versorgungsdienst frei -->
+    </sign>
+
+    <sign ref="DE:253" name="Heavy goods vehicles prohibited" de.name="Verbot für LKW"
+            long_name="Vehicles with a permitted gross mass over 3.5 t including their trailers prohibited, except passenger cars and busses prohibited"
+            de.long_name="Verbot für Kraftfahrzeuge mit einer zulässigen Gesamtmasse über 3,5 t, einschließlich ihrer Anhänger und Zugmaschinen, ausgenommen Personenkraftwagen und Kraftomnibusse"
+            wiki="Key:hgv"
+            de.wiki="DE:Key:access">
+        <tag key="hgv" value="no" ident="mode"/>
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1024-14"/> <!-- Bus frei -->
+        <supplementary id="DE:1026-30"/> <!-- Taxi frei -->
+        <supplementary id="DE:1026-32"/> <!-- Linienverkehr frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+        <supplementary id="DE:1026-36"/> <!-- Landwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-37"/> <!-- Forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-38"/> <!-- Land- und forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-39"/> <!-- Betriebs- und Versorgungsdienst frei -->
+    </sign>
+
+    <sign ref="DE:254" name="Bicycles prohibited" de.name="Verbot für Fahrräder"
+            wiki="Key:bicycle"
+            de.wiki="DE:Key:access">
+        <tag key="bicycle" value="no" ident="mode"/>
+    </sign>
+
+    <sign ref="DE:255" name="Motorcycles prohibited" de.name="Verbot für Krafträder">
+        <tag key="motorcycle" value="no" ident="mode"/>
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+    </sign>
+
+    <sign ref="DE:257-50" deprecated="yes" name="Mopeds prohibited" de.name="Verbot für Mofas">
+        <tag key="mofa" value="no" ident="mode"/>
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+    </sign>
+
+    <sign ref="DE:257-51" deprecated="yes" name="Horses prohibited" de.name="Verbot für Reiter">
+        <tag key="horse" value="no" ident="mode"/>
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+    </sign>
+
+    <sign ref="DE:259" name="Pedestrians prohibited" de.name="Verbot für Fußgänger">
+        <tag key="foot" value="no" ident="mode"/>
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+    </sign>
+
+    <sign ref="DE:260" name="Motor vehicles prohibited" de.name="Verbot für Kraftfahrzeuge"
+        long_name="Motorcycles, also with sidecar, mopeds, mofas as well as motorcars and other multi-track motorized vehicles prohibited"
+        de.long_name="Verbot für Krafträder, auch mit Beiwagen, Kleinkrafträder und Mofas sowie für Kraftwagen und sonstige mehrspurige Kraftfahrzeuge">
+        <tag key="motor_vehicle" value="no" ident="mode"/>
+        <supplementary id="DE:1020-30"/> <!-- Anlieger frei -->
+        <supplementary id="DE:1022-11"/> <!-- Mofas frei -->
+        <supplementary id="DE:1024-12"/> <!-- LKW frei -->
+        <supplementary id="DE:1024-14"/> <!-- Bus frei -->
+        <supplementary id="DE:1026-30"/> <!-- Taxi frei -->
+        <supplementary id="DE:1026-32"/> <!-- Linienverkehr frei -->
+        <supplementary id="DE:1026-35"/> <!-- Lieferverkehr frei -->
+        <supplementary id="DE:1026-36"/> <!-- Landwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-37"/> <!-- Forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-38"/> <!-- Land- und forstwirtschaftlicher Verkehr frei -->
+        <supplementary id="DE:1026-39"/> <!-- Betriebs- und Versorgungsdienst frei -->
+    </sign>
+
+    <sign ref="DE:261" name="Hazardous cargo prohibited" de.name="Verbot für kennzeichnungspflichtige Kraftfahrzeuge mit gefährlichen Gütern"
+            wiki="Key:hazmat" 
+            de.wiki="DE:Key:hazmat">
+        <tag key="hazmat" value="no" ident="mode"/>
+    </sign>
+
+    <sign ref="DE:262[$val]" icon="DE_262" name="Mass limit" de.name="Tatsächliche Masse"
+            wiki="Key:maxweight">
+        <tag key="maxweight" value="$val"/>
+        <parameter ident="val" input="textfield" default="5.5" suffix="t" field_width="3"/>
+    </sign>
+
+    <sign ref="DE:263[$val]" icon="DE_263" name="Axle weight limit" de.name="Tatsächliche Achslast"
+            wiki="Key:maxaxleload">
+        <tag key="maxaxleload" value="$val"/>
+        <parameter ident="val" input="textfield" default="8" suffix="t" field_width="3"/>
+    </sign>
+
+    <sign ref="DE:264[$val]" icon="DE_264" name="Width limit" de.name="Tatsächliche Breite"
+            wiki="Key:maxwidth">
+        <tag key="maxwidth" value="$val"/>
+        <parameter ident="val" input="textfield" default="2" suffix="m" field_width="3"/>
+    </sign>
+
+    <sign ref="DE:265[$val]" icon="DE_265" name="Height limit" de.name="Tatsächliche Höhe"
+            wiki="Key:maxheight"
+            de.wiki="DE:Key:maxheight">
+        <tag key="maxheight" value="$val"/>
+        <parameter ident="val" input="textfield" default="3.8" suffix="m" field_width="3"/>
+    </sign>
+
+    <sign ref="DE:266[$val]" icon="DE_266" name="Length limit" de.name="Tatsächliche Länge"
+            wiki="Key:maxlength">
+        <tag key="maxlength" value="$val"/>
+        <parameter ident="val" input="textfield" default="10" suffix="m" field_width="3"/>
+    </sign>
+
+    <sign ref="DE:269" name="Water polluting cargo prohibited" de.name="Verbot für Fahrzeuge mit wassergefährdender Ladung"
+            wiki="Key:hazmat"
+            de.wiki="DE:Key:hazmat">
+        <tag key="hazmat:water" value="no" ident="mode"/>
+    </sign>
+
+    <sign ref="DE:274[$val]" icon="DE_274" name="Speed limit" de.name="Zulässige Höchstgeschwindigkeit"
+            wiki="Key:maxspeed"
+            de.wiki="DE:Key:maxspeed">
+        <tag key="maxspeed" value="$val" ident="restriction"/>
+        <parameter ident="val" type="int" input="combo" editable="yes" text="speed-limit" de.text="Höchstgeschwindigkeit" suffix="km/h" values="5,10,20,30,40,50,60,70,80,90,100,110,120,130" default="60" field_width="3"/>
+        <supplementary id="DE:1053-35"/> <!-- Bei nasser Fahrbahn -->
+        <supplementary id="DE:1010-51"/> <!-- nur LKW -->
+    </sign>
+
+    <sign ref="DE:274.1[$val]" icon="DE_274_1" name="Speed limit zone" de.name="Zone mit zulässiger Höchstgeschwindigkeit">
+        <tag key="maxspeed" value="$val"/>
+        <tag key="zone:maxspeed" value="DE:$val"/>
+        <parameter ident="val" type="int" input="combo" editable="yes" text="speed-limit" de.text="Höchstgeschwindigkeit" suffix="km/h" values="20,30" default="30" field_width="2"/>
+    </sign>
+
+    <sign ref="DE:275[$val]" icon="DE_275" name="Minimum speed limit" de.name="Vorgeschriebene Mindestgeschwindigkeit"
+            wiki="Key:minspeed">
+        <tag key="minspeed" value="$val"/>
+        <parameter ident="val" input="textfield" suffix="km/h" default="30" field_width="2"/>
+    </sign>
+
+    <sign ref="DE:325" name="Traffic calming zone" de.name="Verkehrsberuhigter Bereich"
+            wiki="Tag:highway%3Dliving_street"
+            de.wiki="DE:Tag:highway%3Dliving_street">
+        <tag key="highway" value="living_street"/>
+    </sign>
+
+    <sign ref="DE:327" name="Tunnel" de.name="Tunnel"
+            wiki="Key:tunnel"
+            de.wiki="DE:Key:tunnel">
+        <tag key="tunnel" value="yes"/>
+    </sign>
+
+    <sign ref="DE:1020-12" supplementary="yes" name="Bicyle and residents allowed" de.name="Radfahrer und Anlieger frei"> <!-- FIXME: bad translation into English -->
+        <tag key="bicycle" value="yes"/>
+        <tag tag_ref="mode" append_value="destination"/>
+    </sign>
+
+    <sign ref="DE:1020-13" supplementary="yes" name="Inline skating allowed" de.name="Inlineskaten frei">
+        <tag key="inline_skates" value="yes"/>
+    </sign>
+
+    <sign ref="DE:1020-30" supplementary="yes" name="Residents allowed" de.name="Anlieger frei"> <!-- FIXME: bad translation into English -->
+        <tag tag_ref="mode" append_value="destination"/>
+    </sign>
+
+    <sign ref="DE:1022-10" supplementary="yes" name="Bicycles allowed" de.name="Radfahrer frei">
+        <tag key="bicycle" value="yes"/>
+    </sign>
+
+    <sign ref="DE:1022-11" supplementary="yes" name="Mofas allowed" de.name="Mofas frei">
+        <tag key="mofa" value="yes"/>
+    </sign>
+
+    <sign ref="DE:1022-12" supplementary="yes" name="Motorcycles allowed" de.name="Krafträder frei"
+        long_name="Motorcycles, also with sidecar, mopeds and mofas allowed"
+        de.long_name="Krafträder auch mit Beiwagen, Kleinkrafträder und Mofas frei">
+        <tag key="motorcycle" value="yes"/>
+    </sign>
+
+<!--FIXME: motorcar does not fit, since 1024-10 refers to passenger vehicles -->
+<!--    <sign ref="DE:1024-10" supplementary="yes" name="passenger car allowed" de.name="Personenkraftwagen frei"> -->
+<!--        <tag key="motorcar" value="yes"/>-->
+<!--    </sign>-->
+
+    <sign ref="DE:1024-12" supplementary="yes" name="Heavy goods vehicles allowed" de.name="LKW frei"
+        long_name="Vehicles with a permitted gross mass over 3.5 t including their trailers, except passenger cars and busses, allowed"
+        de.long_name="Kraftfahrzeuge mit einer zulässigen Gesamtmasse über 3,5 t, einschließlich ihrer Anhänger und Zugmaschinen, ausgenommen Personenkraftwagen und Kraftomnibusse frei">
+        <tag key="hgv" value="yes"/>
+    </sign>
+
+    <sign ref="DE:1024-14" supplementary="yes" name="Bus allowed" de.name="Kraftomnibus frei">
+        <tag key="bus" value="yes"/>
+    </sign>
+
+    <sign ref="DE:1026-30" supplementary="yes" name="Taxi allowed" de.name="Taxi frei">
+        <tag key="taxi" value="yes"/>
+    </sign>
+
+    <sign ref="DE:1026-32" supplementary="yes" name="Public service vehicles allowed" de.name="Linienverkehr frei"
+            wiki="Key:bus">
+        <tag key="bus" value="yes"/>
+    </sign>
+
+    <sign ref="DE:1026-35" supplementary="yes" name="Delivery vehicles allowed" de.name="Lieferverkehr frei">
+        <tag tag_ref="mode" append_value="delivery"/>
+    </sign>
+
+    <sign ref="DE:1026-36" supplementary="yes" name="Agricultural vehicles allowed" de.name="Landwirtschaftlicher Verkehr frei">
+        <tag tag_ref="mode" append_value="agricultural"/>
+    </sign>
+
+    <sign ref="DE:1026-37" supplementary="yes" name="Forestry vehicles allowed" de.name="Forstwirtschaftlicher Verkehr frei">
+        <tag tag_ref="mode" append_value="forestry"/>
+    </sign>
+
+    <sign ref="DE:1026-38" supplementary="yes" name="Agricultural and forestry vehicles allowed" de.name="Land- und forstwirtschaftlicher Verkehr frei">
+        <tag tag_ref="mode" append_value="agricultural"/>
+        <tag tag_ref="mode" append_value="forestry"/>
+    </sign>
+
+    <sign ref="DE:1026-39" supplementary="yes" name="Operating and supply service vehicles allowed" de.name="Betriebs- und Versorgungsdienst frei">
+        <tag tag_ref="mode" append_value="private"/> <!-- introduce 'operating' or 'maintenance' for a more specific value? -->
+        <tag tag_ref="mode" append_value="delivery"/>
+    </sign>
+
+    <sign ref="DE:1010-51" supplementary="yes" name="Heavy goods vehicles only" de.name="nur LKW"
+            long_name="Vehicles with a permitted gross mass over 3.5 t including their trailers prohibited, except passenger cars and busses, only"
+            de.long_name="Nur Kraftfahrzeuge mit einer zulässigen Gesamtmasse über 3,5 t, einschl. ihrer Anhänger, und Zugmaschinen, ausgenommen Personenkraftwagen und Kraftomnibusse">
+        <tag tag_ref="restriction" condition="hgv"/>
+    </sign>
+
+    <sign ref="DE:1053-35" supplementary="yes" name="When the road is wet" de.name="Bei nasser Fahrbahn">
+        <tag tag_ref="restriction" condition="wet"/>
+    </sign>
+
+    <sign ref="DE:Kraftfahrzeuge-frei" supplementary="yes" name="Motor vehicles allowed" de.name="Kraftfahrzeuge frei"> <!-- Kein offizielles Zeichen aber in Verwendung, siehe https://de.wikipedia.org/wiki/Bildtafel_der_Verkehrszeichen_in_der_Bundesrepublik_Deutschland_von_2013_bis_2017#cite_note-KFZ_frei-7 -->
+        <tag key="motor_vehicle" value="yes"/>
+    </sign>
+</roadsignpreset>
Index: /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetES.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetES.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetES.xml	(revision 36424)
@@ -0,0 +1,1831 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<roadsignpreset country="ES">
+<!--
+roadsigns plugin preset file for Spain yopaseopor http://yopaseopor.blogspot.com
+-->
+<sign ref="ES:traffic:sign:dir"  traffic_sign_tag="" name="" es.name="Especificar en qué sentido de la vía de doble sentido está la señal de tráfico: forward (sentido de la vía)   / backward (sentido contrario contraria de la vía)" ca.name="">
+        <tag key="direction"  value="$val10"/>
+        <parameter ident="val10" input="textfield" prefix="" default="forward" suffix="" field_width="10"/>
+		<tag key="side"  value="$val11"/>
+        <parameter ident="val11" input="textfield" prefix="" default="right" suffix="" field_width="10"/>
+    </sign> 
+
+
+
+<sign ref="ES:ruta_europea" name="" es.name="Ruta europea" ca.name="Ruta europea">
+        <tag key="" value="" />
+		<tag key="ref" value="E-$val"/>
+        <parameter ident="val" input="textfield" prefix="E-" default="80" suffix="" field_width="3"/>
+</sign> 
+
+<sign ref="ES:motorway" name="" es.name="Autopista o Autovía" ca.name="Autopista o autovia">
+        <tag key="highway" value="motorway" />
+			<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="AP-6" suffix="Referencia de la carretera" field_width="5"/>
+		<tag key="lanes:forward" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="2" suffix="Carriles sentido vía" field_width="5"/>
+		<tag key="oneway" value="yes"/>
+        <tag key="turn:lanes:forward" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="through|through" suffix="direcciones carriles sentido vía.Separadas por |" field_width="5"/>
+		<tag key="width" value="$val8"/>
+        <parameter ident="val8" input="textfield" prefix="" default="8" suffix="4 por carril en anchura normal.Sentido de 2 carriles=8" field_width="5"/>
+		    </sign>
+
+<sign ref="ES:trunk" name="" es.name="Carretera Nacional o Carretera autonómica de primer nivel en buen estado" ca.name="Carretera de primer nivell en bon estat">
+        <tag key="highway" value="trunk" />
+	<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="N-432" suffix="Referencia de la carretera" field_width="5"/>
+		<tag key="lanes" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="2" suffix="Carriles totales (o se especifica totales o se marcan por sentido" field_width="5"/>
+		<tag key="lanes:forward" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="1" suffix="Carriles sentido vía" field_width="5"/>
+		<tag key="lanes:backward" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="1" suffix="Carriles contra sentido de la vía" field_width="5"/>
+		<tag key="oneway" value="$val5"/>
+        <parameter ident="val5" input="textfield" prefix="" default="" suffix="Via de sentido único (yes/no)" field_width="5"/>
+		<tag key="turn:lanes:forward" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="" suffix="direcciones carriles sentido vía.Separadas por |" field_width="5"/>
+		<tag key="turn:lanes:backward" value="$val7"/>
+        <parameter ident="val7" input="textfield" prefix="" default="" suffix="direcciones carriles contra sentido vía.Separadas por |" field_width="5"/>
+		<tag key="width" value="$val8"/>
+        <parameter ident="val8" input="textfield" prefix="" default="8" suffix="4 por carril en anchura normal.Vía de 2 carriles=8" field_width="5"/>
+		    </sign>
+
+<sign ref="ES:primary" name="" es.name="Carretera Nacional o Carretera autonómica de primer nivel en mal estado" ca.name="Carretera de primer nivell en mal estat">
+        <tag key="highway" value="primary" />
+	<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="CL-517" suffix="" field_width="5"/>
+				<tag key="lanes" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="2" suffix="Carriles totales (o se especifica totales o se marcan por sentido" field_width="5"/>
+		<tag key="lanes:forward" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="1" suffix="Carriles sentido vía" field_width="5"/>
+		<tag key="lanes:backward" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="1" suffix="Carriles contra sentido de la vía" field_width="5"/>
+		<tag key="oneway" value="$val5"/>
+        <parameter ident="val5" input="textfield" prefix="" default="" suffix="Via de sentido único (yes/no)" field_width="5"/>
+		<tag key="turn:lanes:forward" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="" suffix="direcciones carriles sentido vía.Separadas por |" field_width="5"/>
+		<tag key="turn:lanes:backward" value="$val7"/>
+        <parameter ident="val7" input="textfield" prefix="" default="" suffix="direcciones carriles contra sentido vía.Separadas por |" field_width="5"/>
+		<tag key="width" value="$val8"/>
+        <parameter ident="val8" input="textfield" prefix="" default="8" suffix="4 por carril en anchura normal.Vía de 2 carriles=8" field_width="5"/>
+		    </sign>
+
+<sign ref="ES:secondary" name="" es.name="Carretera Secundaria o autonómica de segundo nivel" ca.name="Carretera comarcal o secundària">
+        <tag key="highway" value="secondary" />
+	<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="A-450" suffix="" field_width="5"/>
+				<tag key="lanes" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="2" suffix="Carriles totales (o se especifica totales o se marcan por sentido" field_width="5"/>
+		<tag key="lanes:forward" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="1" suffix="Carriles sentido vía" field_width="5"/>
+		<tag key="lanes:backward" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="1" suffix="Carriles contra sentido de la vía" field_width="5"/>
+		<tag key="oneway" value="$val5"/>
+        <parameter ident="val5" input="textfield" prefix="" default="" suffix="Via de sentido único (yes/no)" field_width="5"/>
+		<tag key="turn:lanes:forward" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="" suffix="direcciones carriles sentido vía.Separadas por |" field_width="5"/>
+		<tag key="turn:lanes:backward" value="$val7"/>
+        <parameter ident="val7" input="textfield" prefix="" default="" suffix="direcciones carriles contra sentido vía.Separadas por |" field_width="5"/>
+		<tag key="width" value="$val8"/>
+        <parameter ident="val8" input="textfield" prefix="" default="8" suffix="4 por carril en anchura normal.Vía de 2 carriles=8" field_width="5"/>
+		    </sign>
+
+<sign ref="ES:tertiary" name="" es.name="Carretera Local o de Tercer nivel" ca.name="Carretera local o terciària">
+        <tag key="highway" value="tertiary" />
+	<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="CA-408" suffix="" field_width="5"/>
+				<tag key="lanes" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="2" suffix="Carriles totales (o se especifica totales o se marcan por sentido" field_width="5"/>
+		<tag key="lanes:forward" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="1" suffix="Carriles sentido vía" field_width="5"/>
+		<tag key="lanes:backward" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="1" suffix="Carriles contra sentido de la vía" field_width="5"/>
+		<tag key="oneway" value="$val5"/>
+        <parameter ident="val5" input="textfield" prefix="" default="" suffix="Via de sentido único (yes/no)" field_width="5"/>
+		<tag key="turn:lanes:forward" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="" suffix="direcciones carriles sentido vía.Separadas por |" field_width="5"/>
+		<tag key="turn:lanes:backward" value="$val7"/>
+        <parameter ident="val7" input="textfield" prefix="" default="" suffix="direcciones carriles contra sentido vía.Separadas por |" field_width="5"/>
+		<tag key="width" value="$val8"/>
+        <parameter ident="val8" input="textfield" prefix="" default="8" suffix="4 por carril en anchura normal.Vía de 2 carriles=8" field_width="5"/>
+		    </sign> 
+			
+			<sign ref="ES:p1" name="" es.name="Peligro cruce con prioridad" ca.name="Perill, encreuament amb prioritat">
+        <tag key="" value="" />
+		    </sign>
+						
+<sign ref="ES:p1a" name="" es.name="Peligro cruce con prioridad ,a la derecha" ca.name="Perill, encreuament amb prioritat,a la dreta">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p1b" name="" es.name="Peligro cruce con prioridad ,a la izquierda" ca.name="Perill, encreuament amb prioritat,a l'esquerra">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p1c" name="" es.name="Peligro incorporación a la derecha" ca.name="Perill incorporació per la dreta">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p1d" name="" es.name="Peligro incorporación a la izquierda" ca.name="Perill incorporació per l'esquerra">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p2" name="" es.name="Peligro cruce sin prioridad establecida" ca.name="Perill, encreuament sense prioritat establerta">
+        <tag key="" value="" />
+		    </sign>
+
+
+	<sign ref="ES:p3" name="Traffic light" es.name="Peligro semáforo" ca.name="Perill semàfor">
+        <tag key="highway" value="traffic_signals" />
+<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign> 
+			
+	<sign ref="ES:p4" name="" es.name="Peligro rotonda" ca.name="Perill rotonda">
+                <tag key="junction" value="roundabout"/>
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign> 
+			
+<sign ref="ES:p5" name="" es.name="Peligro puente levadizo" ca.name="Perill pont llevadís">
+        <tag key="bridge" value="drawbridge" />
+		    </sign> 
+			
+<sign ref="ES:p6" name="" es.name="Peligro tranvía" ca.name="Perill tramvia">
+        <tag key="railway" value="tram" />
+		    </sign>
+
+	
+<sign ref="ES:p7" name="" es.name="Peligro paso a nivel con barreras" ca.name="Perill pas a nivell amb barreres">
+<tag key="railway" value="level_crossing" />
+		<tag key="level_crossing" value="automatic_barrier"/>
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+
+
+        		    		    </sign>
+
+<sign ref="ES:p8" name="" es.name="Peligro paso a nivel sin barreras" ca.name="Perill pas a nivell sense barreres">
+<tag key="railway" value="level_crossing" />
+		<tag key="level_crossing" value="uncontrolled"/>
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+
+        		    		    </sign>
+
+<sign ref="ES:p9a" name="" es.name="Peligro proximidad paso a nivel lado derecho 300m" ca.name="Perill proximitat pas a nivell costat dret 300m">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p9b" name="" es.name="Peligro proximidad paso a nivel lado derecho 200m" ca.name="Perill proximitat pas a nivell costat dret 200m">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p9c" name="" es.name="Peligro proximidad paso a nivel lado derecho 100m" ca.name="Perill proximitat pas a nivell costat dret 100m">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:p10a" name="" es.name="Peligro proximidad paso a nivel lado izquierdo 300m" ca.name="Perill proximitat pas a nivell costat esquerre 300m">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p10b" name="" es.name="Peligro proximidad paso a nivel lado izquierdo 200m" ca.name="Perill proximitat pas a nivell costat esquerre 200m">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p10c" name="" es.name="Peligro proximidad paso a nivel lado izquierdo 100m" ca.name="Perill proximitat pas a nivell costat esquerre 100m">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p11" name="" es.name="Peligro paso a nivel sin barreras de una vía" ca.name="Perill pas a nivell sense barreres d'una via">
+<tag key="railway" value="level_crossing" />
+<tag key="level_crossing" value="uncontrolled"/>
+<tag key="tracks" value="1"/>
+        		    		    </sign> 
+		    
+<sign ref="ES:p11a" name="" es.name="Peligro paso a nivel sin barreras de más de una vía" ca.name="Perill pas a nivell sense barreres de més d'una via">
+<tag key="railway" value="level_crossing" />
+<tag key="level_crossing" value="uncontrolled"/>
+<tag key="tracks" value="2"/>
+        		    		    </sign> 
+		   
+<sign ref="ES:p12" name="" es.name="Peligro Aeropuerto" ca.name="Perill aeroport">
+        <tag key="aeroway" value="aerodrome" />
+		    </sign>
+
+<sign ref="ES:p13a" name="" es.name="Peligro curva a la derecha" ca.name="Perill corba a la dreta">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign>
+
+<sign ref="ES:p13b" name="" es.name="Peligro curva a la izquierda" ca.name="Perill corba a l'esquerra">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign>
+
+<sign ref="ES:p14a" name="" es.name="Peligro curva a derecha e izquierda" ca.name="Perill corba a dreta i esquerra">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+<supplementary id="ES:com:s810"/><!-- Complementaria:En X m. -->
+		    </sign>
+
+<sign ref="ES:p14b" name="" es.name="Peligro curva a izquierda y derecha" ca.name="Perill corba a esquerra i dreta">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+<supplementary id="ES:com:s810"/><!-- Complementaria:En X m. -->
+		    </sign>
+
+
+<sign ref="ES:p15" name="" es.name="Peligro badenes" ca.name="">
+        <tag key="traffic_calming" value="rumble_strip" />
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign>
+
+<sign ref="ES:p15a" name="" es.name="Peligro badén" ca.name="">
+        <tag key="traffic_calming" value="bump" />
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign>
+
+<sign ref="ES:p15b" name="" es.name="Peligro bache" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+			
+<sign ref="ES:p16b" icon="ES_p16b" name="" es.name="Pendiente Máxima de subida" ca.name="Pendiente">
+        <tag key="incline" value="$val%"/>
+        <parameter input="textfield" name="" es.name="max. incline" ca.name="Pendiente Máxima de subida" type="int" ident="val" default="10" suffix="%" field_width="3"/>
+		<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+    </sign>
+	
+<sign ref="ES:p16a" icon="ES_p16a" name="" es.name="Pendiente Máxima de bajada" ca.name="Pendiente">
+        <tag key="incline" value="-$val%"/>
+        <parameter input="textfield" name="" es.name="max. incline" ca.name="Pendiente Máxima de bajada" type="int" ident="val" prefix="-" default="10" suffix="%" field_width="3"/>
+		<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+<supplementary id="ES:com:s810"/><!-- Complementaria:En X m. -->
+    </sign>
+
+<sign ref="ES:p17b" name="" es.name="Peligro estrechamiento de calzada por la izquierda" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign>
+
+<sign ref="ES:p17" name="" es.name="Peligro estrechamiento de calzada" ca.name="">
+        <tag key="narrow" value="yes" />
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign>
+
+<sign ref="ES:p17a" name="" es.name="Peligro estrechamiento de calzada por la derecha" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s800"/><!-- Complementaria:A X m. -->
+		    </sign>
+
+<sign ref="ES:p19" name="" es.name="Peligro calzada deslizante" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p20" name="" es.name="Peligro peatones" ca.name="">
+        <tag key="highway" value="passing_place" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:p21" name="" es.name="Peligro zona escolar" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:p22" name="" es.name="Peligro cruce con ciclistas" ca.name="">
+        <tag key="cycleway" value="lane" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:p23" name="" es.name="Peligro animales domésticos" ca.name="">
+        <tag key="route" value="horse" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:p24" name="" es.name="Peligro animales en libertad" ca.name="">
+        <tag key="boundary" value="protected_area" ident="mode"/>
+<supplementary id="ES:com:s810"/><!-- Complementaria:En X m. -->
+		    </sign>
+
+<sign ref="ES:p25" name="" es.name="Peligro calzada de doble sentido" ca.name="">
+        <tag key="oneway" value="no" ident="mode"/>
+		<tag key="lanes:forward" value="1" ident="mode"/>
+		<tag key="lanes:backward" value="1" ident="mode"/>
+		<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+		    </sign>
+
+<sign ref="ES:p26" name="" es.name="Peligro desprendimientos" ca.name="">
+        <tag key="natural" value="scree" ident="mode"/>
+		<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+<supplementary id="ES:com:s810"/><!-- Complementaria:En X m. -->
+		    </sign>
+
+<sign ref="ES:p27" name="" es.name="Peligro muelle" ca.name="">
+        <tag key="man_made" value="pier" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:p28" name="" es.name="Peligro gravilla suelta" ca.name="">
+        <tag key="surface" value="fine_gravel" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:p29" name="" es.name="Peligro viento lateral" ca.name="">
+        <tag key="aeroway" value="windsock" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:p30" name="" es.name="Peligro escalón lateral" ca.name="">
+        <tag key="shoulder" value="yes" ident="mode"/>
+		 <tag key="layer" value="-1" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:p31" name="" es.name="Peligro atasco" ca.name="">
+        <tag key="jams" value="yes" ident="mode"/>
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+<sign ref="ES:p32" name="" es.name="Peligro accidente" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:p33" name="" es.name="Peligro visibilidad reducida" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:p34" name="" es.name="Peligro pavimento deslizante por hielo o nieve" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+		    </sign>
+
+<sign ref="ES:p50" name="" es.name="Peligro indefinido" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:tp18" name="" es.name="Peligro obras" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+
+<sign ref="ES:r1" name="" es.name="Ceda el paso" ca.name="">
+        <tag key="highway" value="give_way" ident="mode"/>
+<supplementary id="ES:com:s840"/><!-- Complementaria:STOP a X m.-->
+		    </sign> 
+<sign ref="ES:r2" name="" es.name="Stop" ca.name="">
+        <tag key="highway" value="stop" ident="mode"/>
+		    </sign> 
+<sign ref="ES:r3" name="" es.name="Carretera con preferencia" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s850"/><!-- Complementaria:Preferencia -->
+<supplementary id="ES:com:s851"/><!-- Complementaria:Preferencia -->
+<supplementary id="ES:com:s852"/><!-- Complementaria:Preferencia -->
+<supplementary id="ES:com:s853"/><!-- Complementaria:Preferencia -->
+		    </sign> 
+<sign ref="ES:r4" name="" es.name="Fin de carretera con preferencia" ca.name="">
+        <tag key="" value="" />
+		    </sign> 
+<sign ref="ES:r5" name="" es.name="Paso estrecho sin prioridad" ca.name="">
+        <tag key="" value="" />
+		    </sign> 
+<sign ref="ES:r6" name="" es.name="Paso estrecho con prioridad" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r100" name="" es.name="Circulación prohibida a todo tipo de vehículos" ca.name="">
+        <tag key="access" value="no" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:r101" name="" es.name="Dirección prohibida" ca.name="">
+        <tag key="" value="" />
+		    </sign> 
+<sign ref="ES:r102" name="" es.name="Prohibido vehículos con motor" ca.name="">
+        <tag key="motor_vehicle" value="no" ident="mode"/>
+		    </sign> 
+
+			<sign ref="ES:r103" name="" es.name="Prohibido automóviles" ca.name="">
+        <tag key="motorcar" value="no" ident="mode"/>
+		    </sign> 
+<sign ref="ES:r104" name="" es.name="Prohibido motocicletas" ca.name="">
+        <tag key="motorcycle" value="no" ident="mode"/>
+		    </sign> 
+<sign ref="ES:r105" name="" es.name="Prohibido ciclomotores" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign> 
+<sign ref="ES:r106" name="" es.name="Prohibido camiones" ca.name="">
+        <tag key="hgv" value="no" ident="mode"/>
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+<sign ref="ES:r107" name="" es.name="Prohibido camiones que superen X toneladas" ca.name="">
+        <tag key="" value="" />
+		<tag key="maxweight" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="3,5" suffix="t" field_width="4"/>
+		    		    </sign>
+
+<sign ref="ES:r108" name="" es.name="Prohibido mercancias peligrosas" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+<sign ref="ES:r109" name="" es.name="Prohibido contaminantes del agua" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+<sign ref="ES:r110" name="" es.name="Prohibido mercancías inflamables o explosivas" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+
+<sign ref="ES:r111" name="" es.name="Prohibido tractores" ca.name="">
+        <tag key="agricultural" value="no" ident="mode"/>
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+<sign ref="ES:r112" name="" es.name="Prohibido remolques de más de 2 toneladas" ca.name="">
+        <tag key="" value="" />
+	<tag key="maxweight" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="2" suffix="t" field_width="4"/>
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+<sign ref="ES:r113" name="" es.name="Prohibido carros tirados por caballos" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r114" name="" es.name="Prohibido bicicletas" ca.name="">
+        <tag key="bicycle" value="no" ident="mode"/>
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+<sign ref="ES:r115" name="" es.name="Prohibido carros a mano" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r116" name="" es.name="Prohibido peatones" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r117" name="" es.name="Prohibido caballos" ca.name="">
+        <tag key="horse" value="no" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:r200" name="" es.name="Detención obligatoria" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+	<sign ref="ES:r200a" name="" es.name="Detención obligatoria en el peaje" ca.name="">
+        <tag key="barrier" value="toll_booth" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:r201" name="" es.name="Prohibido vehículos con más de ese peso" ca.name="">
+        <tag key="maxweight" value="$val"/>
+        <parameter ident="val" input="textfield" default="5,5" suffix="t" field_width="3"/>
+		    </sign> 
+<sign ref="ES:r202" name="" es.name="Prohibido vehículos con más de ese peso en un eje" ca.name="">
+        <tag key="" value="" />
+	<tag key="maxaxleload" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="2,4" suffix="t" field_width="4"/>
+		    </sign> 
+<sign ref="ES:r203" name="" es.name="Prohibido camiones de más de esa medida de largo" ca.name="">
+        <tag key="" value="" />
+	<tag key="maxlength" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="10" suffix="m" field_width="3"/>
+		    </sign> 
+<sign ref="ES:r204" name="" es.name="Prohibido vehículos que excendan ese ancho" ca.name="">
+	<tag key="maxwidth" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="2" suffix="m" field_width="3"/>
+		    </sign> 
+<sign ref="ES:r205" name="" es.name="Prohibido vehículos que excendan esa altura" ca.name="">
+        <tag key="" value="" />
+			<tag key="maxheight" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="4,6" suffix="m" field_width="3"/>
+		    </sign>
+
+<sign ref="ES:r300" name="" es.name="Prohibido mantener una distancia más pequeña de" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+		    </sign>
+
+<sign ref="ES:r301-50" name="" es.name="Prohibido ir a más de "  traffic_sign_tag="maxspeed" ca.name="">
+<tag key="maxspeed" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="50" suffix="" field_width="3"/>
+                <tag key="traffic_sign" value="maxspeed" ident="mode"/>
+				<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+				<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+
+
+<sign ref="ES:r302" name="" es.name="Prohibido girar a la derecha" ca.name="">
+        <tag key="restriction" value="no_right_turn" ident="mode"/>
+		    </sign> 
+<sign ref="ES:r303" name="" es.name="Prohibido girar a la izquierda" ca.name="">
+        <tag key="restriction" value="no_left_turn" ident="mode"/>
+		    </sign> 
+<sign ref="ES:r304" name="" es.name="Prohibido cambiar de sentido" ca.name="">
+        <tag key="restriction" value="no_u_turn" ident="mode"/>
+		    </sign> 
+			
+<sign ref="ES:r305" name="" es.name="Prohibido adelantar.Hay que especificar.Valores - no=adelantamiento prohibido en las dos direcciones | forward=adelantamiento prohibido en la dirección de ida | backward=adelantamiento prohibido en la dirección de vuelta" traffic_sign_tag="overtaking" ca.name="">
+	<tag key="overtaking" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="no" suffix="" field_width="7"/>
+		<tag key="traffic_sign" value="overtaking"/>
+		<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+		    </sign> 
+			
+<sign ref="ES:r306" name="" es.name="Prohibido adelantar camiones" ca.name="">
+        <tag key="overtaking:hgv" value="no" ident="mode"/>
+		<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+		    </sign>
+
+<sign ref="ES:r307" name="" es.name="Prohibida la parada.Hay que decir el lado de la calle left=izquierda | right=derecha " ca.name="">
+	<tag key="parking_lane:$val" value="no_stopping"/>
+        <parameter ident="val" input="textfield" prefix="" default="right" suffix="" field_width="7"/>
+		
+<supplementary id="ES:com:s820"/><!-- Complementaria:En la izquierda -->
+<supplementary id="ES:com:s821"/><!-- Complementaria:En la derecha -->
+<supplementary id="ES:com:s830"/><!-- Complementaria:A ambos lados -->
+		    </sign> 
+
+<sign ref="ES:r308" name="" es.name="Prohibido el estacionamento.Hay que decir el lado de la calle left=izquierda | right=derecha" ca.name="">
+	<tag key="parking_lane:$val" value="no_parking"/>
+        <parameter ident="val" input="textfield" prefix="" default="right" suffix="" field_width="7"/>
+		<supplementary id="ES:com:s820"/><!-- Complementaria:En la izquierda -->
+<supplementary id="ES:com:s821"/><!-- Complementaria:En la derecha -->
+<supplementary id="ES:com:s830"/><!-- Complementaria:A ambos lados -->
+		    </sign> 
+
+	<sign ref="ES:r308a" name="" es.name="Prohibido el estacionamento los días impares" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+	<sign ref="ES:r308b" name="" es.name="Prohibido el estacionamento los días pares" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+	<sign ref="ES:r308c" name="" es.name="Prohibido el estacionamento del 1 al 15 del mes" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+	<sign ref="ES:r308d" name="" es.name="Prohibido el estacionamento del 16 al 31 del mes" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:r308e" name="" es.name="Vado permanente" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r309" name="" es.name="Estacionamiento regulado (O.R.A.)" ca.name="">
+	<tag key="parking_lane:$val" value="no_parking"/>
+        <parameter ident="val" input="textfield" prefix="" default="right" suffix="" field_width="7"/>
+		    </sign> 
+
+<sign ref="ES:r310" name="" es.name="Prohibido hacer sonar el cláxon" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:r400a" name="" es.name="Sentido obligatorio a la derecha" ca.name="">
+        <tag key="restriction" value="only_right_turn" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r400b" name="" es.name="Sentido obligatorio a la izquierda" ca.name="">
+        <tag key="restriction" value="only_left_turn" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r400c" name="" es.name="Sentido obligatorio recto" ca.name="">
+        <tag key="restriction" value="only_straight_on" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r400d" name="" es.name="Sentido obligatorio hacia la derecha" ca.name="">
+        <tag key="restriction" value="only_right_turn" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:r400e" name="" es.name="Sentido obligatorio hacia la izquierda" ca.name="">
+        <tag key="restriction" value="only_left_turn" ident="mode"/>
+		    </sign>
+			
+			<sign ref="ES:r400g" name="" es.name="Sentido obligatorio hacia la izquierda o la derecha" ca.name="">
+        <tag key="restriction" value="no_straight_on" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:r401d" name="" es.name="Sentido obligatorio por la izquierda" ca.name="">
+        <tag key="restriction" value="only_left_turn" ident="mode"/>
+		    </sign>
+			
+<sign ref="ES:r401e" name="" es.name="Sentido obligatorio por la derecha" ca.name="">
+        <tag key="restriction" value="only_right_turn" ident="mode"/>
+		    </sign> 
+
+
+<sign ref="ES:r402" name="" es.name="Rotonda" ca.name="">
+        <tag key="junction" value="roundabout" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r403a" name="" es.name="Posibilidad de giro a la izquierda" ca.name="">
+        <tag key="restriction" value="no_right_turn" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r404" name="" es.name="Obligatorio automóviles" ca.name="">
+        <tag key="motorcar" value="designated" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r405" name="" es.name="Obligatorio motocicletas" ca.name="">
+        <tag key="motorcycle" value="designated" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r406" name="" es.name="Obligatorio camiones" ca.name="">
+        <tag key="hgv" value="designated" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r407" name="" es.name="Obligatorio bicicletas" ca.name="">
+        <tag key="bicycle" value="designated" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r408" name="" es.name="Obligatorio carros" ca.name="">
+        <tag key="highway" value="bridleway" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r410" name="" es.name="Obligatorio peatones" ca.name="">
+        <tag key="highway" value="pedestrian" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r411" name="" es.name="Velocidad mínima" ca.name="">
+<tag key="minspeed" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="30" suffix="" field_width="5"/>
+        		    </sign>
+
+
+<sign ref="ES:r412" name="" es.name="Obligatorio cadenas" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:r413" name="" es.name="Obligatorio luz de cruce" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:r414" name="" es.name="Obligatorio mercancías peligrosas" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:r415" name="" es.name="Obligatorio mercancías contaminantes del agua" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r416" name="" es.name="Obligatorio mercancías explosivas o inflamables" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r417" name="" es.name="Obligatorio cinturón de seguridad" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r418" name="" es.name="Obligatorio Vía T" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:r500" traffic_sign_tag="maxspeed;overtaking" name="" es.name="Fin de prohibiciones"  ca.name="">
+<tag key="maxspeed" value="implicit"/>
+		<tag key="overtaking" value="yes" ident="mode"/>
+			</sign>
+
+
+<sign ref="ES:r501" traffic_sign_tag="maxspeed" name="" es.name="Fin de límite de velocidad" ca.name="">
+		<tag key="maxspeed" value="implicit" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:r502" traffic_sign_tag="overtaking" name="" es.name="Fin de la prohibición de adelantar" ca.name="">
+        <tag key="overtaking" value="yes" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:r503" name="" es.name="Fin de la prohibición de adelantar por camiones" ca.name="">
+        <tag key="overtaking:hgv" value="yes" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:r504" name="" es.name="Fin de estacionamiento controlado" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:r505" name="" es.name="Fin del carril bici" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+
+
+<sign ref="ES:s1" name="" es.name="Autopista" ca.name="">
+        <tag key="highway" value="motorway" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:s1a" name="" es.name="Autovía" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+
+<sign ref="ES:s2" name="" es.name="Fin de autopista" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+
+<sign ref="ES:s2a" name="" es.name="Fin de autovía" ca.name="">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+
+<sign ref="ES:s5" name="" es.name="Inicio de túnel" ca.name="">
+        <tag key="tunnel" value="yes" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s6" name="" es.name="Final de túnel" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s7" name="" es.name="Recomendación velocidad" ca.name="">
+        <tag key="recommend_speed" value="$val" ident="mode"/>
+		        <parameter ident="val" input="textfield" prefix="" default="70" suffix="" field_width="3"/>
+		    </sign>
+
+<sign ref="ES:s8" name="" es.name="Fin de recomendación velocidad" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s9" name="" es.name="Intérvalo recomendado de velocidad.Hay que poner dos velocidades separadas por guión: ejemplo 70-90" ca.name="">
+<tag key="recommend_speed" value="$val" ident="mode"/>
+<parameter ident="val" input="textfield" prefix="" default="70-90" suffix="" field_width="5"/>
+		    </sign>
+
+<sign ref="ES:s10" name="" es.name="Fin de Intérvalo recomendado de velocidad" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s11" name="" es.name="Sentido único" ca.name="">
+        <tag key="oneway" value="yes" ident="mode"/>
+		<tag key="lanes" value="1"/>
+		    </sign> 
+
+<sign ref="ES:s11a" name="" es.name="Doble carril" ca.name="">
+                <tag key="oneway" value="yes" ident="mode"/>
+		<tag key="lanes" value="2"/>
+		    </sign>
+
+<sign ref="ES:s11b" name="" es.name="Tres carriles" ca.name="">
+                <tag key="oneway" value="yes" ident="mode"/>
+		<tag key="lanes" value="3"/>
+		    </sign>
+
+<sign ref="ES:s12" name="" es.name="Calle de dirección única" ca.name="">
+        <tag key="" value="" />
+		    </sign> 
+			
+<sign ref="ES:s13" name="" es.name="Paso de peatones" ca.name="">
+        <tag key="highway" value="crossing" ident="mode"/>
+		    </sign>
+
+	<sign ref="ES:s14a" name="" es.name="Escaleras superiores" ca.name="">
+        <tag key="highway" value="steps" ident="mode"/>
+		    </sign>
+
+	<sign ref="ES:s14b" name="" es.name="Escaleras inferiores" ca.name="">
+        <tag key="highway" value="steps" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s15a" name="" es.name="Calle cortada" ca.name="">
+        <tag key="noexit" value="yes" ident="mode"/>
+		    </sign> 
+<sign ref="ES:s15b" name="" es.name="A la izquierda calle cortada" ca.name="">
+        <tag key="" value="" />
+		    </sign> 
+<sign ref="ES:s15c" name="" es.name="Calle adjacente cortada" ca.name="">
+        <tag key="" value="" />
+		    </sign> 
+<sign ref="ES:s15d" name="" es.name="Posibles desvíos" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s16" name="" es.name="Zona de frenado de emergencia" ca.name="">
+        <tag key="highway" value="escape" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s17" name="" es.name="Aparcamiento" ca.name="">
+        <tag key="amenity" value="parking" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s18" name="" es.name="Parada de Taxis" ca.name="">
+        <tag key="amenity" value="taxi" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s19" name="" es.name="Parada de Bus" ca.name="">
+        <tag key="highway" value="bus_stop" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s20" name="" es.name="Parada de tranvía" ca.name="">
+        <tag key="railway" value="tram_stop" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s21" name="" es.name="Condiciones para pasar el puerto" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+			
+<sign ref="ES:s22" name="" es.name="Cambio de sentido" ca.name="Canvi de sentit">
+<tag key="distance" value="$val" ident="mode"/>
+<parameter ident="val" input="textfield" prefix="Distancia que marca la señal" default="300" suffix="" field_width="3"/>
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+						<supplementary id="ES:com:s800"/><!-- Complementaria:A x. m. -->
+		    </sign>
+
+<sign ref="ES:s23" name="" es.name="Hospital" ca.name="">
+        <tag key="amenity" value="Hospital" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s24" name="" es.name="Fin de luz de cruce" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s25" name="" es.name="Cambio de sentido" ca.name="Canvi de sentit">
+        <tag key="" value="" />
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+						<supplementary id="ES:com:s800"/><!-- Complementaria:A x. m. -->
+		    </sign>
+
+<sign ref="ES:s26a" name="" es.name="Salida a 300m" ca.name="">
+        <tag key="" value="" />
+		    </sign> 
+<sign ref="ES:s26b" name="" es.name="Salida a 200m" ca.name="">
+        <tag key="" value="" />
+		    </sign> 
+<sign ref="ES:s26c" name="" es.name="Salida a 100m" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s27" name="" es.name="Poste SOS" ca.name="">
+        <tag key="emergency" value="phone" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s28" name="" es.name="Zona residencial" ca.name="">
+        <tag key="highway" value="living_street" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s29" name="" es.name="Fin de zona residencial" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s30" name="" es.name="Zona 30" traffic_sign_tag="maxspeed" ca.name="">
+        <tag key="maxspeed" value="30" ident="mode"/>
+		 <tag key="source:maxspeed" value="zone" />
+		    </sign>
+
+<sign ref="ES:s31" name="" es.name="Fin de zona 30" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s32" name="" es.name="Posibilidad Vía T" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s33" name="" es.name="Recomendado bicicleta" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s34" name="" es.name="Carril de parada" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s34a" name="" es.name="Parada para poste SOS" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s50a" name="" es.name="Carril para vehículos rápidos" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="2" />
+		<tag key="lanes:backward" value="1" />
+		<tag key="turn:lanes:forward" value="slight_left|through"/>
+		<tag key="minspeed:lanes:forward" value="$val|" ident="mode"/>
+<parameter ident="val" input="textfield" prefix="" default="70" suffix="" field_width="3"/>
+</sign> 
+
+<sign ref="ES:s50b" name="" es.name="Carril para vehículos lentos" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="2" />
+		<tag key="lanes:backward" value="1" />
+		<tag key="turn:lanes:forward" value="through|slight_right"/>
+		<tag key="minspeed:lanes:forward" value="$val|" ident="mode"/>
+<parameter ident="val" input="textfield" prefix="" default="70" suffix="" field_width="3"/>
+</sign> 
+
+<sign ref="ES:s50c" name="" es.name="Carril para vehículos lentos en autopista" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="3" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="through|through|slight_right"/>
+		<tag key="minspeed:lanes:forward" value="$val|$val|" ident="mode"/>
+<parameter ident="val" input="textfield" prefix="" default="70" suffix="" field_width="3"/>
+</sign> 
+
+<sign ref="ES:s50d" name="" es.name="Continuación de carril para vehículos lentos" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="2" />
+		<tag key="lanes:backward" value="1" />
+		<tag key="turn:lanes:forward" value="through|through"/>
+		<tag key="minspeed:lanes:forward" value="$val|" ident="mode"/>
+<parameter ident="val" input="textfield" prefix="" default="30" suffix="" field_width="3"/>
+<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+</sign> 
+
+<sign ref="ES:s50e" name="" es.name="Continuación de carril para vehículos lentos en autopista" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="3" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="through|through|through"/>
+		<tag key="minspeed:lanes:forward" value="$val|$val|" ident="mode"/>
+<parameter ident="val" input="textfield" prefix="" default="70" suffix="" field_width="3"/>
+<supplementary id="CAT:com:s860"/><!-- Complementaria:Cartell Recordi -->
+</sign> 
+
+<sign ref="ES:s51" name="" es.name="Parada de bus" ca.name="">
+        <tag key="amenity" value="bus_stop" ident="mode"/>
+		    </sign>
+			
+<sign ref="ES:s52" name="" es.name="Fin del tercer carril" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="3" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="through|through|slight_left"/>
+</sign> 
+
+<sign ref="ES:s52a" name="" es.name="Fin del segundo carril derecho en vía de doble sentido" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="2" />
+		<tag key="lanes:backward" value="1" />
+		<tag key="turn:lanes:forward" value="through|slight_left"/>
+		</sign> 
+		
+		<sign ref="ES:s52b" name="" es.name="Fin del segundo carril izquierdo en vía de doble sentido" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="2" />
+		<tag key="lanes:backward" value="1" />
+		<tag key="turn:lanes:forward" value="slight_right|through"/>
+		</sign> 
+		
+		<sign ref="ES:s53" name="" es.name="Surge segundo carril" ca.name="">
+        <tag key="lanes" value="2" ident="mode"/>
+		<tag key="lanes:forward" value="2" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="through|slight_right"/>
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		</sign> 
+
+		<sign ref="ES:s53b" name="" es.name="Surge tercer carril" ca.name="">
+        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="3" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="through|through|slight_right"/>
+		</sign> 
+		
+				<sign ref="ES:s60a" name="" es.name="Carril izquierdo se desvía" ca.name="">
+        <tag key="lanes" value="2" ident="mode"/>
+		<tag key="lanes:forward" value="2" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="slight_left|through"/>
+		</sign> 
+		
+
+	<sign ref="ES:s60b" name="" es.name="Carril derecho se desvía" ca.name="">
+                <tag key="lanes" value="2" ident="mode"/>
+		<tag key="lanes:forward" value="2" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="through|slight_right"/>
+		    </sign>
+
+<sign ref="ES:s61a" name="" es.name="Tercer carril se desvía a la izquierda" ca.name="">
+                        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="3" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="slight_left|through|through"/>
+		    </sign>
+		    
+
+
+	<sign ref="ES:s61b" name="" es.name="Tercer carril se desvía a la derecha" ca.name="">
+                        <tag key="lanes" value="3" ident="mode"/>
+		<tag key="lanes:forward" value="3" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="through|through|slight_right"/>
+				    </sign>
+
+<sign ref="ES:s62a" name="" es.name="Cuarto carril se desvía a la izquierda" ca.name="">
+        <tag key="lanes" value="4" ident="mode"/>
+		<tag key="lanes:forward" value="4" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="slight_left|through|through|through"/>
+		    </sign>
+		   
+	<sign ref="ES:s62b" name="" es.name="Cuarto carril se desvía a la derecha" ca.name="">
+                        <tag key="lanes" value="4" ident="mode"/>
+		<tag key="lanes:forward" value="4" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="through|through|through|slight_right"/>
+		    </sign>
+
+<sign ref="ES:s63" name="" es.name="Carriles se dividen en dos direcciones" ca.name="">
+<tag key="lanes" value="4" ident="mode"/>
+		<tag key="lanes:forward" value="4" />
+		<tag key="oneway" value="yes" />
+		<tag key="turn:lanes:forward" value="slight_left|slight_left|slight_right|slight_right"/>
+         </sign> 
+
+<sign ref="ES:s64b" name="" es.name="Carril derecho para las bicicletas" ca.name="">
+             <tag key="cycleway" value="lane" ident="mode"/>
+			 <tag key="lanes:forward" value="3" />
+		<tag key="oneway" value="yes" />
+		    </sign>
+
+
+	<sign ref="ES:s64a" name="" es.name="Carril derecho para las bicicletas en vía de doble sentido" ca.name="">
+        <tag key="cycleway:right" value="lane" ident="mode"/>
+					 <tag key="lanes:forward" value="2" />
+		<tag key="lanes:backward" value="1" />
+		    		    </sign>
+
+
+<sign ref="ES:s100" name="" es.name="Puesto de Socorro" ca.name="">
+        <tag key="amenity" value="doctors" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:s101" name="" es.name="Puesto de Socorro con Ambulancia" ca.name="">
+        <tag key="amenity" value="clinic" ident="mode"/>
+		    </sign>
+
+
+<sign ref="ES:s102" name="" es.name="Estación de ITV" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s103" name="" es.name="Taller mecánico" ca.name="">
+        <tag key="shop" value="hadware" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s104" name="" es.name="Teléfono" ca.name="">
+        <tag key="amenity" value="telephone" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s105" name="" es.name="Gasolinera" ca.name="">
+        <tag key="amenity" value="fuel" ident="mode"/>
+		<supplementary id="ES:com:s870"/><!-- Complementaria:En la salida -->
+		    </sign>
+
+<sign ref="ES:s106" name="" es.name="Gasolinera y Taller mecánico" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s107" name="" es.name="Zona de acampada" ca.name="">
+        <tag key="tourism" value="camp_site" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s108" name="" es.name="Fuente" ca.name="">
+        <tag key="natural" value="spring" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s109" name="" es.name="Lugar paisajístico" ca.name="">
+        <tag key="tourism" value="viewpoint" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s110" name="" es.name="Lugar de pernoctación" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s111" name="" es.name="Restaurante" ca.name="">
+        <tag key="amenity" value="restaurant" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s112" name="" es.name="Cafetería" ca.name="">
+        <tag key="amenity" value="cafe" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s113" name="" es.name="Lugar para caravanas" ca.name="">
+        <tag key="tourism" value="caravan_site" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s114" name="" es.name="Zona de picnic" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s115" name="" es.name="Zona para el excursionismo" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s116" name="" es.name="Zona de acampada incluso para autocaravanas" ca.name="">
+        <tag key="tourism" value="caravan_site" ident="mode"/>
+		<tag key="tents" value="yes"/>
+		    </sign>
+
+<sign ref="ES:s117" name="" es.name="Albergue" ca.name="">
+        <tag key="tourism" value="picnic_site" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s118" name="" es.name="Punto de información" ca.name="">
+        <tag key="information" value="office" ident="mode"/>
+		<tag key="tourism" value="information" />
+		    </sign>
+
+<sign ref="ES:s119" name="" es.name="Coto de pesca" ca.name="">
+        <tag key="leisure" value="fishing" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s120" name="" es.name="Parque natural" ca.name="">
+        <tag key="leisure" value="natural_reserve" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s121" name="" es.name="Monumento" ca.name="">
+        <tag key="historic" value="monument" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s122" name="" es.name="" ca.name="">
+        <tag key="" value="" />
+		    </sign>
+
+<sign ref="ES:s123" name="" es.name="Zona de descanso" ca.name="">
+        <tag key="highway" value="rest_area" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s124" name="" es.name="Aparcamiento + tren" ca.name="">
+        <tag key="amenity" value="parking" ident="mode"/>
+		<tag key="park_ride" value="yes" />
+		    </sign>
+
+<sign ref="ES:s125" name="" es.name="Aparcamiento + metro" ca.name="">
+        <tag key="amenity" value="parking" ident="mode"/>
+		<tag key="park_ride" value="yes" />
+		    </sign>
+
+<sign ref="ES:s126" name="" es.name="Aparcamiento + bus" ca.name="">
+        <tag key="amenity" value="parking" ident="mode"/>
+		<tag key="park_ride" value="yes" />
+		    </sign>
+
+<sign ref="ES:s127" name="" es.name="Area de Servicio" ca.name="">
+        <tag key="highway" value="services" ident="mode"/>
+				    </sign>
+
+<sign ref="ES:s200" name="" es.name="Direcciones en rotonda.Se separa cada dirección con |, y se empieza de izquierda a derecha desde la misma dirección" ca.name="">
+        <tag key="junction" value="roundabout"/>
+		<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Guadarrama|Villalba|A Coruña" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:colour" value="$val5"/>
+        <parameter ident="val5" input="textfield" prefix="" default="white|white|blue" suffix="Color de la señal.Cada panel separado por | " field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="||A-6;AP-6" suffix="Referencias: Cada panel separado por |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="left|through|right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+
+
+	<sign ref="ES:s220" name="" es.name="Direcciones en carretera convencional - Se deben separar los diversos paneles por |" ca.name="">
+		<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Santiago de Compostela|La Estrada" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="N-525|N-640" suffix="Referencias: Cada panel separado por |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="through|slight_right" suffix=" direcciones,cada panel separado por |" field_width="20"/>
+		    </sign>
+
+
+	<sign ref="ES:s222" name="" es.name="Direcciones por autopista" ca.name="">
+        		<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Villalba" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="A-6" suffix="Referencias: Cada panel separado por |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+
+
+	<sign ref="ES:s222a" name="" es.name="Direcciones por autopista o continuación por carretera" ca.name="">
+                		<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Cádiz|Sevilla" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:colour" value="$val5"/>
+        <parameter ident="val5" input="textfield" prefix="" default="white|blue" suffix="Color de la señal.Cada panel separado por | " field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="|A-4" suffix="Referencias: Cada panel separado por |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="through|slight_right" suffix=" dirección flecha" field_width="20"/>
+		    		    </sign>
+
+
+	<sign ref="ES:s225" name="" es.name="Direcciones en salida de autopista" ca.name="">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Las Matas;Los Peñascales" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="junction:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="26" suffix="Número de salida" field_width="10"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+
+
+<sign ref="ES:s230" name="" es.name="Direcciones en salida de carretera" ca.name="">
+<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Pinto" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+
+
+<sign ref="ES:s230a" name="" es.name="Panel vertical direcciones en salida de carretera" ca.name="">
+		<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Teruel|Ademuz" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="N-330|" suffix="Referencias: Cada panel separado por |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="through|slight_right" suffix=" direcciones,cada panel separado por |" field_width="20"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		    </sign>
+
+
+<sign ref="ES:s232" name="" es.name="Acceso a autopista desde carretera" ca.name="">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Pontevedra" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="A-9" suffix="Referencia" field_width="10"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+
+<sign ref="ES:s232a" name="" es.name="Acceso a autopista desde carretera y continuación" ca.name="">
+<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Benavente|Tordesillas" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="N-630|A-6" suffix="Referencias: Cada panel separado por |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="through|slight_right" suffix=" direcciones,cada panel separado por |" field_width="20"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		    </sign>
+
+
+<sign ref="ES:s235" name="" es.name="Acceso a autopista desde carretera" ca.name="">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Valladolid" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="N-122" suffix="Referencia" field_width="10"/>
+		<tag key="junction:ref" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="201" suffix="Número de salida" field_width="10"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+	
+
+<sign ref="ES:s235a" name="" es.name="Pórtico vertical salida en autovía" ca.name="">
+		<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Villalba;A Coruña|Las Rozas" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="A-6|" suffix="Referencias: Cada panel separado por |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="through|slight_right" suffix=" direcciones,cada panel separado por |" field_width="20"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		<tag key="junction:ref" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="44" suffix="Número de salida" field_width="4"/>
+		    </sign>
+	
+
+<sign ref="ES:s242" name="" es.name="Acceso a autopista desde autopista con salidas muy próximas entre ellas." ca.name="">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Ávila;Segovia" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="junction:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="61AB" suffix="Número de salida" field_width="10"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+	
+<sign ref="ES:s242a" name="" es.name="Salidas en autopista desde autopista muy próximas entre ellas " ca.name="Sortides en autopista des d'autopistes molt properes">
+		<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Tordesillas;A Coruña|Ávila;Segovia" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="A-6|" suffix="Referencias: Cada panel separado por |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="through|through|slight_right" suffix=" direcciones,cada panel separado por |" field_width="20"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="6"/>
+		<tag key="junction:ref" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="61AB" suffix="Número de salida" field_width="5"/>
+		    </sign>
+	
+
+<sign ref="ES:s250" name="" es.name="Girar a la izquierda por la primera calle de la derecha" ca.name="Girar a l'esquerra pel primer carrer de la dreta">
+        <tag key="" value="" />
+		    </sign>
+			
+<sign ref="ES:s260" name="" es.name="Carril derecho se va a la derecha, izquierdo para continuar o girar" ca.name="Carril dret marxa a la dreta, esquerre per continuar recte o girar a l'esquerra">
+ <tag key="lanes" value="2" ident="mode"/>
+<tag key="lanes:forward" value="2" />
+<tag key="oneway" value="yes" />
+<tag key="turn:lanes:forward" value="through;left|slight_right"/>
+			</sign> 
+
+	<sign ref="ES:s261" name="" es.name="Salida hacia zona de servicios en carretera" ca.name="Sortida cap a zona de serveis en carretera">
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="fuel;mechanic;hotel;restaurant" suffix="Símbolo(s)" field_width="50"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="5"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="15"/>
+		    </sign>
+
+	<sign ref="ES:s263" name="" es.name="Salida hacia zona de servicios con salida compartida" ca.name="Sortida cap a zona de serveis amb sortida compartida">
+        <tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="fuel;mechanic;hotel;restaurant" suffix="Símbolo(s)" field_width="50"/>
+		<tag key="junction:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="162" suffix="Número de salida" field_width="10"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="1250" suffix="Distancia a la que está la salida (en m.) |" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+
+				<sign ref="ES:s263a" name="" es.name="Salida hacia zona de servicios con salida en exclusiva" ca.name="Sortida cap a zona de serveis amb sortida en exclusiva">
+<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="fuel;mechanic;hotel;restaurant" suffix="Símbolo(s)" field_width="50"/>
+		<tag key="junction:distance" value="$val5 m"/>
+        <parameter ident="val5" input="textfield" prefix="" default="500" suffix="Distancia a la que está la salida (en m.) |" field_width="5"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="15"/>
+		    </sign>
+			
+			<sign ref="ES:s310" name="" es.name="Indicación carretera convencional" ca.name="Indicació carretera convencional">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Logroño" suffix="" field_width="20"/>
+		<tag key="distance" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default=" " suffix="Distancia en km.(si se indica)" field_width="3"/>
+		<tag key="turn:destination" value="$val4"/>
+		<tag key="destination:ref" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="N-111" suffix="Referencia" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="left" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+			
+<sign ref="ES:s320" name="" es.name="Indicación carretera convencional" ca.name="Indicació carretera convencional">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="playa" suffix="" field_width="20"/>
+		<tag key="distance" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="3" suffix="Distancia en km.(si se indica)" field_width="3"/>
+		<tag key="turn:destination" value="$val4"/>
+		<tag key="leisure" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="beach" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="left" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+
+				<sign ref="ES:s351" name="" es.name="Salida en carretera" ca.name="Sortida en carretera">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="El Escorial" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="" suffix="Referencia (si está especificada)" field_width="10"/>
+		<tag key="junction:ref" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="16" suffix="Número de salida" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" dirección flecha" field_width="20"/>
+		    </sign>
+
+<sign ref="ES:s500" traffic_sign_tag="city_limit" name="" es.name="Límite de población" ca.name="Entrada a la població">
+        <tag key="traffic_sign" value="city_limit"/>
+		<tag key="name" value="$val"/>
+        <parameter input="textfield" name="" es.name="nombre_población" ca.name="Maximale Steigung" type="int" ident="val" default="Los Corrales de Buelna" suffix="" field_width="12"/>
+		    </sign>
+
+<sign ref="ES:s510" name="" es.name="Fin de límite de población" ca.name="Fi de població">        <tag key="name" value="$val"/>
+        <parameter input="textfield" name="" es.name="nombre_población" ca.name="Maximale Steigung" type="int" ident="val" default="Los Corrales de Buelna" suffix="" field_width="12"/>
+		    </sign>
+			
+<sign ref="ES:s520" name="" es.name="Punto importante en la vía" ca.name="Punt important a la via">        
+<tag key="name" value="$val"/>
+        <parameter input="textfield" name="" es.name="punto_via" ca.name="punt_via" type="int" ident="val" default="puerto de Navacerrada 1700 m" suffix="" field_width="12"/>
+		    </sign>
+			
+<sign ref="ES:s540" name="" es.name="Límite administrativo" ca.name="Límit administratiu">        
+<tag key="boundary" value="administrative"/>
+<tag key="name" value="$val"/>
+        <parameter input="textfield" name="" es.name="nombre_límite" ca.name="Maximale Steigung" type="int" ident="val" default="PROVINCIA DE HUESCA" suffix="" field_width="12"/>
+		    </sign>
+
+
+<sign ref="ES:s570" name="" es.name="Punto kilométrico autovía" ca.name="Fita quilomètrica autovia">
+         <tag key="highway" value="milestone" ident="mode"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="A-68" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="275" suffix=" km" field_width="3"/>
+				    </sign>
+		  
+
+	<sign ref="ES:s570a" name="" es.name="Punto kilométrico autopista" ca.name="Fita quilomètrica autopista">
+         <tag key="highway" value="milestone" ident="mode"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="AP-7" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="225" suffix=" km" field_width="3"/>
+				  
+		    </sign>
+
+
+	<sign ref="ES:s571" name="" es.name="Punto kilométrico autovía con ruta europea" ca.name="Fita quilomètrica autovia amb ruta europea">
+                 <tag key="highway" value="milestone" ident="mode"/>
+		<tag key="ref_int" value="E-$val3"/>
+        <parameter ident="val3" input="textfield" prefix="E-" default="804" suffix="" field_width="3"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="A-68" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="225" suffix=" km" field_width="3"/>
+				  		    </sign>
+
+
+	<sign ref="ES:s572" name="" es.name="Punto kilométrico carretera convencional" ca.name="Fita quilomètrica carretera convencional">
+        <tag key="highway" value="milestone" ident="mode"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="C-170" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="162" suffix=" km" field_width="4"/>
+				    </sign>
+
+
+	<sign ref="ES:s573" name="" es.name="Punto kilométrico carretera convencional con ruta europea" ca.name="Fita quilomètrica carretera convencional amb ruta europea">
+                <tag key="highway" value="milestone" ident="mode"/>
+						<tag key="ref_int" value="E-$val3"/>
+        <parameter ident="val3" input="textfield" prefix="E-" default="80" suffix="" field_width="3"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="N-122" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="162" suffix=" km" field_width="4"/>
+		    </sign>
+
+
+	<sign ref="ES:s574" name="" es.name="Poste kilométrico autovía" ca.name="Pal quilomètric autovia">
+         <tag key="highway" value="milestone" ident="mode"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="A-5" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="30" suffix=" km" field_width="3"/>
+		    </sign>
+
+
+	<sign ref="ES:s574a" name="" es.name="Poste kilométrico carretera 1er orden" ca.name="Pal quilomètric carretera 1r ordre">
+                 <tag key="highway" value="milestone" ident="mode"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="N-110" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="40" suffix=" km" field_width="4"/>
+		    </sign>
+
+
+	<sign ref="ES:s574b" name="" es.name="Poste kilométrico autopista" ca.name="Pal quilomètric autopista">
+         <tag key="highway" value="milestone" ident="mode"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="AP-7" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="30" suffix=" km" field_width="3"/>
+		    </sign>
+
+
+	<sign ref="ES:s575" name="" es.name="Poste kilométrico carretera convencional" ca.name="Pal quilomètric carretera convencional">
+         <tag key="highway" value="milestone" ident="mode"/>
+		<tag key="ref" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="C-241" suffix="" field_width="5"/>
+		<tag key="pk" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="510" suffix=" km" field_width="3"/>
+		    </sign>
+			
+<sign ref="ES:s600" name="" es.name="Confirmación de dirección vía y distancia" ca.name="Confirmació de direcció , via i distància">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Aranda de Duero;Soria" suffix="" field_width="40"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="N-122" suffix="Referencia (si está especificada)" field_width="7"/>
+		<tag key="distance" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="33;155" suffix=" distancia" field_width="20"/>
+		    </sign>
+			
+<sign ref="ES:s602" name="" es.name="Confirmación de dirección vía y distancia en autopista" ca.name="Confirmació de direcció , via i distància en autopista">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Torija;Zaragoza" suffix="" field_width="40"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="E-90;A-2" suffix="Referencia (si está especificada)" field_width="7"/>
+		<tag key="distance" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="5;256" suffix=" distancia" field_width="20"/>
+		    </sign>
+			
+<sign ref="ES:s610" name="" es.name="Confirmación de dirección  y distancia" ca.name="Confirmació de direcció i distància">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="albergue nacional de Aranda de Duero" suffix="" field_width="40"/>
+		<tag key="distance" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="56" suffix=" distancia" field_width="20"/>
+		    </sign>
+			
+
+	<sign ref="ES:s700" name="" es.name="Indicación urbana Calle" ca.name="Indicación urbana Carrer">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="calle Sierpes" suffix="" field_width="20"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="right" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+
+<sign ref="ES:s710" name="" es.name="Indicación urbana estación de transportes" ca.name="Indicació urbana estació de transports">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="estación de Chamartín" suffix="" field_width="20"/>
+		<tag key="public_transport" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="station" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="left" suffix=" dirección flecha" field_width="7"/>
+		</sign>
+
+<sign ref="ES:s720" name="" es.name="Indicación urbana recinto deportivo" ca.name="Indicació urbana recinte esportiu">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="estadio B. Villamarín" suffix="" field_width="20"/>
+		<tag key="leisure" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="stadium" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="through" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+
+
+<sign ref="ES:s730" name="" es.name="Indicación urbana zona natural" ca.name="Indicació urbana zona natural">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="parque del Oeste" suffix="" field_width="20"/>
+		<tag key="leisure" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="garden" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="left" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+
+
+<sign ref="ES:s740" name="" es.name="Indicación urbana zona cultural" ca.name="Indicació urbana zona cultural">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="ermita de San Saturio" suffix="" field_width="20"/>
+		<tag key="historic" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="monument" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="right" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+
+
+<sign ref="ES:s750" name="" es.name="Indicación urbana zona industrial" ca.name="Indicació urbana zona industrial">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="zona industrial" suffix="" field_width="20"/>
+		<tag key="landuse" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="industrial" suffix="Símbolo (si lo hay)" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="left" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+
+
+<sign ref="ES:s760" name="" es.name="Indicación urbana autopista" ca.name="Indicació urbana autopista">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Valencia" suffix="" field_width="20"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="A-3" suffix="Referencia (si la hay)" field_width="6"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="right" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+
+
+<sign ref="ES:s770" name="" es.name="Indicación urbana carretera" ca.name="Indicació urbana carretera">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Toledo" suffix="" field_width="20"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="N-401" suffix="Referencia (si la hay)" field_width="6"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="left" suffix=" dirección flecha" field_width="7"/>
+		    </sign>
+			
+<sign ref="ES:s900" name="" es.name="Incendios" ca.name="">
+        <tag key="" value="" ident="mode"/>
+		    </sign>
+			
+<sign ref="ES:s920" name="" es.name="España" ca.name="">
+        <tag key="" value="" ident="mode"/>
+		    </sign>
+
+<sign ref="ES:s940" name="" es.name="Velocidades" ca.name="">
+        <tag key="" value="" ident="mode"/>
+		    </sign>
+						
+			<!-- Aquí comencen les catalanes -->
+		
+				<sign ref="CAT:radar" name="Speed camera" es.name="Radar" ca.name="Radar">
+        <tag key="highway" value="speed_camera"/>
+        <tag key="maxspeed" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="90" suffix="Velocitat radar" field_width="7"/>
+		    </sign>
+			
+			<sign ref="CAT:s230" name="" es.name="Direcciones en salida de carretera (CAT)" ca.name="Direccions en sortida de carretera">
+<tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Lleida;Tàrrega" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbol (si n'hi ha)" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="through;slight_right" suffix=" direcció fletxa" field_width="20"/>
+				<supplementary id="ES:com:s800"/><!-- Complementaria:A x. m. -->
+		    </sign>
+			
+						<sign ref="CAT:s300" name="" es.name="Indicación carretera convencional" ca.name="Indicació carretera convencional">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Tàrrega" suffix="" field_width="20"/>
+		<tag key="distance" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="" suffix="Distància en km.(si s'indica)" field_width="3"/>
+		<tag key="turn:destination" value="$val4"/>
+		<tag key="destination:ref" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="C-14" suffix="Referència" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="right" suffix=" direcció fletxa" field_width="7"/>
+		    </sign>
+			
+							<sign ref="CAT:s351" name="" es.name="Salida en carretera" ca.name="Sortida en carretera">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="L'Arboç,Vilanova i la Geltrú" suffix="" field_width="40"/>
+		<tag key="destination:sign" value="$val2"/>
+        <parameter ident="val2" input="textfield" prefix="" default="" suffix="Símbol (si n'hi ha)" field_width="10"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="BV-2115" suffix="Referència (si està especificada)" field_width="10"/>
+		<tag key="junction:ref" value="$val6"/>
+        <parameter ident="val6" input="textfield" prefix="" default="" suffix="Número de sortida" field_width="10"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="slight_right" suffix=" direcció fletxa" field_width="20"/>
+		    </sign>
+			
+<sign ref="CAT:s600" name="" es.name="Confirmación de dirección vía y distancia (CAT)" ca.name="Confirmació de direcció , via i distància (Catalunya)">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Tàrrega" suffix="" field_width="40"/>
+		<tag key="destination:ref" value="$val3"/>
+        <parameter ident="val3" input="textfield" prefix="" default="C-14" suffix="Referencia (si está especificada)" field_width="7"/>
+		<tag key="distance" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="24" suffix=" distancia" field_width="20"/>
+		    </sign>
+
+	<sign ref="CAT:s700" name="" es.name="Indicación urbana elementos internos (Catalunya)" ca.name="Indicació urbana elements interns (Catalunya)">
+        <tag key="destination" value="$val"/>
+        <parameter ident="val" input="textfield" prefix="" default="Mercat" suffix="" field_width="20"/>
+		<tag key="turn:destination" value="$val4"/>
+        <parameter ident="val4" input="textfield" prefix="" default="left" suffix=" direcció fletxa" field_width="7"/>
+		    </sign>			
+
+<!-- Aquí comencen les suplementàries -->
+
+		    <sign ref="CAT:com:s860" supplementary="yes" name="" es.name="Mensaje" ca.name="Missatge">
+        <tag key="name"  value="$val10"/>
+        <parameter ident="val10" input="textfield" prefix="" default="RECORDI" suffix="" field_width="10"/>
+    </sign> 
+	
+	<sign ref="ES:com:s870" supplementary="yes" name="" es.name="En la salida.Especificar en qué dirección señala la flecha" ca.name="A la sortida.Especificar en quina direcció assenyala la fletxa.">
+        <tag key="turn:lanes:forward"  value="$val10"/>
+        <parameter ident="val10" input="textfield" prefix="" default="slight_right" suffix="" field_width="10"/>
+    </sign> 
+	
+		<sign ref="ES:com:s850" supplementary="yes" name="" es.name="Dirección de la preferencia" ca.name="Direcció de la preferència">
+        <tag key="turn:lanes:forward"  value="slight_left"/>
+    </sign> 
+	
+<sign ref="ES:com:s851" supplementary="yes" name="" es.name="Dirección de la preferencia" ca.name="Direcció de la preferència">
+        <tag key="turn:lanes:forward"  value="right"/>
+		    </sign> 
+		
+<sign ref="ES:com:s852" supplementary="yes" name="" es.name="Dirección de la preferencia" ca.name="Direcció de la preferència">
+        <tag key="turn:lanes:forward"  value="left"/>
+		    </sign> 
+		
+<sign ref="ES:com:s853" supplementary="yes" name="" es.name="Dirección de la preferencia" ca.name="Direcció de la preferència">
+        <tag key="turn:lanes:forward"  value="slight_right"/>
+    </sign> 
+	
+<sign ref="ES:com:s840" supplementary="yes" name="" es.name="STOP A X m." ca.name="STOP A X m.">
+  <tag key="distance"  value="$val10 m"/>
+  <parameter ident="val10" input="textfield" prefix="" default="150" suffix="" field_width="3"/>
+    </sign> 
+	
+	<sign ref="ES:com:s820" supplementary="yes" name="" es.name="En x. m. a la izquierda" ca.name="En x. m. a l'esquerra">
+  <tag key="length"  value="$val10"/>
+  <parameter ident="val10" input="textfield" prefix="" default="10" suffix="" field_width="3"/>
+    </sign> 
+	
+		<sign ref="ES:com:s821" supplementary="yes" name="" es.name="En x. m. a la derecha" ca.name="En x. m. a la dreta">
+  <tag key="length"  value="$val10"/>
+  <parameter ident="val10" input="textfield" prefix="" default="10" suffix="" field_width="3"/>
+    </sign> 
+	
+			<sign ref="ES:com:s830" supplementary="yes" name="" es.name="En x. m. a la derecha y X a la izquierda" ca.name="En x. m. a la dreta i X a l'esquerra">
+<tag key="length:left"  value="$val10"/>
+  <parameter ident="val10" input="textfield" prefix="" default="15" suffix="" field_width="3"/>
+  <tag key="length:right"  value="$val11"/>
+  <parameter ident="val11" input="textfield" prefix="" default="25" suffix="" field_width="3"/>
+    </sign> 
+	
+			<sign ref="ES:com:s800" supplementary="yes" name="" es.name="A x. m. " ca.name="A x. m. ">
+  <tag key="distance"  value="$val10 m"/>
+  <parameter ident="val10" input="textfield" prefix="" default="150" suffix="" field_width="4"/>
+    </sign> 
+	
+				<sign ref="ES:com:s810" supplementary="yes" name="" es.name="En x. m. " ca.name="En x. m. ">
+  <tag key="length"  value="$val10"/>
+  <parameter ident="val10" input="textfield" prefix="" default="4025" suffix="" field_width="5"/>
+    </sign> 
+			
+<sign ref="ES:panel:dir:left" name="" es.name="Curva peligrosa izquierda" ca.name="Corba perillosa a l'esquerra">
+ <tag key="" value=""/>
+    </sign>
+			
+<sign ref="ES:panel:dir:left:2" name="" es.name="Curva peligrosa izquierda" ca.name="Corba perillosa a l'esquerra">
+ <tag key="" value=""/>
+</sign>
+			
+<sign ref="ES:panel:dir:left:3" name="" es.name="Curva peligrosa izquierda" ca.name="Corba perillosa a l'esquerra">
+<tag key="" value=""/>
+</sign>
+			
+			<sign ref="ES:panel:dir:right" name="" es.name="Curva peligrosa derecha" ca.name="Corba perillosa a la dreta">
+ <tag key="" value=""/>
+    </sign>
+			
+<sign ref="ES:panel:dir:right:2" name="" es.name="Curva peligrosa derecha" ca.name="Corba perillosa a la dreta">
+ <tag key="" value=""/>
+</sign>
+			
+<sign ref="ES:panel:dir:right:3" name="" es.name="Curva peligrosa derecha" ca.name="Corba perillosa a la dreta">
+<tag key="" value=""/>
+</sign>
+
+<sign ref="ES:panel:light" name="" es.name="Panel informativo luminoso" ca.name="Panell informatiu il·luminat">
+<tag key="" value=""/>
+</sign>
+
+<sign ref="ES:road:beacon:big" name="" es.name="Hito de vértice" ca.name="Fita de vèrtex">
+<tag key="" value=""/>
+</sign>
+
+<sign ref="ES:road:beacon:little" name="" es.name="Hito abatible" ca.name="Fita abatible">
+<tag key="" value=""/>
+</sign>
+			
+
+	
+</roadsignpreset>
Index: /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetPL.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetPL.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetPL.xml	(revision 36424)
@@ -0,0 +1,1884 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+	Author: keltoi (artmaz@go2.pl)
+-->
+<roadsignpreset country="PL">
+
+<sign ref="PL:B-1" name="All vehicles prohibited" pl.name="zakaz ruchu w obu kierunkach"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu na drodze wszelkich pojazdów, kolumn pieszych oraz jeźdźców i poganiaczy.;Pod znakiem mogą być umieszczone tabliczki;;T-22 'tabliczka wskazująca, że znak nie dotyczy rowerów jednośladowych',;jeżeli dopuszcza się inne odstępstwa od stosowania się do znaku B-1, na tabliczce pod znakiem umieszcza się właściwą informację o treści 'Nie dotyczy...'.;;Odmiany B-1:;Po odpowiedniej zmianie znaku może, zakazywać ruchu w obu kierunkach w określonych przepisach w innym celu. Zasady zakazu ruchu w obu kierunkach w każdym przypadku są takie same lecz dla określonych przepisów, (link zewnętrzny).;;;Znak;Informacja;;"
+	>
+	<tag key="vehicle" value="no"/>
+	<supplementary id="PL:T-22"/>
+</sign>
+
+<sign ref="PL:B-2" name="no entry - oneway exit" pl.name="zakaz wjazdu"
+	long_name=""
+	pl.long_name="Znak zakazuje wjazdu na drogę lub jezdnię od strony jego umieszczenia pojazdów, kolumn pieszych oraz jeźdźców i poganiaczy.;Umieszczona pod znakiem tabliczka T-22 'tabliczka wskazująca, że znak nie dotyczy rowerów jednośladowych' wskazuje, że znak nie dotyczy rowerów jednośladowych, gdy jest dla nich wyznaczony pas ruchu.;Często stosowany na drogach i jezdniach jednokierunkowych do wyznaczania kierunku ruchu. Znak może być także stosowany na drogach dwukierunkowych w celu zabronienia wjazdu na tę drogę na danym skrzyżowaniu.;;"
+	wiki="Key:oneway"
+	>
+	<tag key="oneway" value="-1"/>
+	<supplementary id="PL:T-22"/>
+</sign>
+
+<sign ref="PL:B-3" name="Motorcars prohibited" pl.name="zakaz wjazdu pojazdów silnikowych, z wyjątkiem motocykli jednośladowych"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów silnikowych, nie dotyczy motocykli jednośladowych. Stosowany na odcinkach dróg o niedostatecznej szerokości lub nośności, gdzie ruch pojazdów silnikowych wielośladowy (w tym motocykli z przyczepą) nie może być dopuszczony.;"
+	wiki="Key:motorcar"
+	>
+	<tag key="motorcar" value="no"/>
+</sign>
+
+<sign ref="PL:B-3a" name="zakaz wjazdu autobusów" pl.name="zakaz wjazdu autobusów"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu autobusów. Stosowany w celu wyeliminowania ruchu autobusów z obszarów, gdzie duża ich liczba może powodować zakłócenia ruchu innych pojazdów.;"
+	wiki="Key:psv"
+	>
+	<tag key="psv" value="no"/>
+</sign>
+
+<sign ref="PL:B-4" name="Motorcycles prohibited" pl.name="zakaz wjazdu motocykli"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu motocykli. Stosowany na drogach, na których trzeba ograniczyć hałas wytwarzany przez motocykle, np. w pobliżu szpitali.;"
+	>
+	<tag key="motorcycle" value="no"/>
+</sign>
+
+<sign ref="PL:B-5" name="Heavy goods vehicles prohibited" pl.name="zakaz wjazdu samochodów ciężarowych"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu:;;samochodów ciężarowych o dopuszczalnej masie całkowitej przekraczającej 3,5 t,;ciągników samochodowych,;pojazdów specjalnych i używanych do celów specjalnych o dopuszczalnej masie całkowitej przekraczającej 3,5 t,;ciągników rolniczych,;pojazdów wolnobieżnych.;;Jeżeli znak dotyczy pojazdów o innej niż 3,5 t dopuszczalnej masie całkowitej, wówczas na znaku lub na tabliczce podaje się określoną wartość.;Odmiany B-5:;;;Znak;Informacja;;"
+	wiki="Key:hgv"
+	>
+	<tag key="hgv" value="no"/>
+</sign>
+
+<sign ref="PL:B-5a[$val]" id="PL:B-5a" name="zakaz wjazdu samochodów ciężarowych o określonej masie" pl.name="zakaz wjazdu samochodów ciężarowych o określonej masie"
+	>
+	<tag key="maxweight:hgv" value="$val"/>
+	<parameter ident="val" input="textfield" default="6" suffix="t" field_width="3"/>
+</sign>
+
+<sign ref="PL:B-6" name="zakaz wjazdu ciągników rolniczych" pl.name="zakaz wjazdu ciągników rolniczych"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu ciągników rolniczych i pojazdów wolnobieżnych. Stosowany na ulicach, na których występuje duże natężenie ruchu, a pojazdy wolnobieżne mogą powodować tamowanie ruchu.;"
+	>
+	<tag key="agricultural" value="no"/>
+</sign>
+
+<sign ref="PL:B-7" name="zakaz wjazdu pojazdów silnikowych z przyczepą" pl.name="zakaz wjazdu pojazdów silnikowych z przyczepą"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów z przyczepą. Nie dotyczy pojazdów z przyczepą jednoosiową lub naczepą. Pod znakiem może być umieszczana tabliczka z wartością dopuszczalnej masy całkowitej przyczepy. Stosowany przy niekorzystnych warunkach drogowych, np. spadkach podłużnych, ostrych skrętach.;Odmiany B-7:;;;Znak;Informacja;;"
+	wiki="Key:articulated"
+	>
+	<tag key="articulated" value="no"/>
+</sign>
+
+<sign ref="PL:B-7a[$val]" id="PL:B-7a" name="zakaz wjazdu pojazdów silnikowych z przyczepą o określonej masie" pl.name="zakaz wjazdu pojazdów silnikowych z przyczepą o określonej masie"
+	wiki="Key:maxweight:articulated"
+	>
+	<tag key="maxweight:articulated" value="$val"/>
+	<parameter ident="val" input="textfield" default="5" suffix="t" field_width="3"/>
+</sign>
+
+<sign ref="PL:B-8" name="horse drawn" pl.name="zakaz wjazdu pojazdów zaprzęgowych"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów zaprzęgowych, a także jeźdźców i poganiaczy. Stosowany na drogach, na których występuje duże natężenie ruchu, gdzie ruch pojazdów zaprzęgowych może powodować tamowanie ruchu.;"
+	wiki="Key:horse_drawn"
+	>
+	<tag key="horse_drawn" value="no"/>
+</sign>
+
+<sign ref="PL:B-9" name="Bicycles prohibited" pl.name="zakaz wjazdu rowerów"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu zarówno na jezdni i poboczu rowerów i wózków rowerowych. Stosowany na drogach o dużym natężeniu ruchu lub dużej dopuszczalnej prędkości stanowiących niebezpieczeństwo dla kierujących rowerami oraz tam, gdzie w pobliżu została wyznaczona droga dla rowerów oznaczona znakiem C-13.;"
+	wiki="Key:bicycle"
+	>
+	<tag key="bicycle" value="no"/>
+</sign>
+
+<sign ref="PL:B-10" name="Mopeds prohibited" pl.name="zakaz wjazdu motorowerów"
+	long_name=""
+	pl.long_name="Znak zakazuje wjazdu motorowerów. Stosowany, gdy istnieje potrzeba zamknięcia ruchu dla wszelkich pojazdów wyposażonych w silnik na drogach, gdzie zabroniony został ruch pojazdów samochodowych.;"
+	>
+	<tag key="mofa" value="no"/>
+</sign>
+
+<sign ref="PL:B-11" name="zakaz wjazdu wózków rowerowych" pl.name="zakaz wjazdu wózków rowerowych"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu rowerów wielośladowych. Stosowany na drogach o dużym natężeniu ruchu, gdzie ruch tych pojazdów może powodować tamowanie ruchu.;"
+	>
+</sign>
+
+<sign ref="PL:B-12" name="zakaz wjazdu wózków ręcznych" pl.name="zakaz wjazdu wózków ręcznych"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu na jezdni i poboczu wózków ręcznych prowadzonych, ciągniętych lub pchanych.;"
+	>
+</sign>
+
+<sign ref="PL:B-13" name="zakaz wjazdu pojazdów z towarami wybuchowymi lub łatwo zapalnymi" pl.name="zakaz wjazdu pojazdów z towarami wybuchowymi lub łatwo zapalnymi"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów przewożących w ilościach, dla których jest wymagane oznakowanie pojazdu tablicami ostrzegawczymi barwy pomarańczowej, towary klas ADR:;;1 - materiały i przedmioty wybuchowe,;2 F - gazy palne;3 - materiały ciekłe zapalne,;4.1 - materiały stałe zapalne, materiały samoreaktywne,;4.2 - materiały samozapalne,;4.3 - materiały wytwarzające w zetknięciu z wodą gazy palne,;5.1 - materiały utleniające,;5.2 - nadtlenki organiczne.;;;"
+	wiki="Key:access:explosives"
+	>
+	<tag key="access:explosives" value="no"/>
+</sign>
+
+<sign ref="PL:B-13a" name="Hazardous cargo prohibited" pl.name="zakaz wjazdu pojazdów z towarami niebezpiecznymi"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów przewożących towary niebezpieczne w ilościach, dla których jest wymagane oznakowanie pojazdu tablicami ostrzegawczymi barwy pomarańczowej. Pod znakiem może być umieszczona tabliczka wskazująca, że zakaz dotyczy określonych grup towarów lub T-31 'tabliczka wskazująca kategorię tunelu':;;T-31b (B) - zakaz wjazdu pojazdów przewożących towary zagrażające wybuchem o bardzo dużym zasięgu,;T-31c (C) - zakaz wjazdu pojazdów przewożących towary zagrażające wybuchem o bardzo dużym zasięgu, wybuchem o dużym zasięgu oraz towary zagrażające masowym zatruciem,;T-31d (D) - zakaz wjazdu pojazdów przewożących towary zagrażające wybuchem o bardzo dużym zasięgu, wybuchem o dużym zasięgu, towary zagrażające masowym zatruciem oraz towary zagrażające pożarem o dużym zasięgu,;T-31e (E) - zakaz wjazdu pojazdów przewożących jakiekolwiek towary niebezpieczne w ilościach wymagających oznakowania pojazdów tablicami barwy pomarańczowej, z wyjątkiem niektórych materiałów promieniotwórczych, odpadów medycznych i próbek diagnostycznych - UN 2919, 3291, 3331,3359 i 3373.;;;"
+	wiki="Key:hazmat"
+	>
+	<tag key="hazmat" value="no"/>
+	<supplementary id="PL:T-31"/>
+</sign>
+
+<sign ref="PL:B-14" name="Water polluting cargo prohibited" pl.name="zakaz wjazdu pojazdów z towarami, które mogą skazić wodę"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów przewożących w ilościach, dla których jest wymagane oznakowanie pojazdu tablicami ostrzegawczymi barwy pomarańczowej, towary klas ADR:;;2 T - gazy trujące,;2 TC - gazy żrące,;3 - materiały ciekłe zapalne,;4.3 - materiały wytwarzające w zetknięciu z wodą gazy palne,;6.1 - materiały trujące,;6.2 - materiały zakaźne,;8 - materiały żrące,;materiały zagrażające środowisku klasy 9.;;;"
+	wiki="Key:hazmat"
+	>
+	<tag key="hazmat:water" value="no"/>
+</sign>
+
+<sign ref="PL:B-15[$val]" id="PL:B-15" name="Width limit" pl.name="zakaz wjazdu pojazdów o szerokości ponad ...m"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów, których szerokość wraz z ładunkiem jest większa od wartości podanej na znaku. Ruch pojazdów ze względu na szerokość ogranicza się, gdy szerokość przejazdu jest mniejsza niż 3,5 m. Na znaku podaje się odległość między elementami konstrukcyjnymi ograniczającymi skrajnie poziomą pomniejszoną o 1 m. Stawiany jest ze względu na wąskie obiekty drogowe jak np. tunele, mosty, a także wąskie ulice i pasy ruchu (wówczas znak może być umieszczony nad pasem ruchu, którego dotyczy lub jako element znaku F-22 'ograniczenia na pasie ruchu').;"
+	wiki="Key:maxwidth"
+	>
+	<tag key="maxwidth" value="$val"/>
+	<parameter ident="val" input="textfield" default="2" suffix="m" field_width="3"/>
+</sign>
+
+<sign ref="PL:B-16[$val]" id="PL:B-16" name="Height limit" pl.name="zakaz wjazdu pojazdów o wysokości ponad ...m"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów, których wysokość wraz z ładunkiem jest większa od wartości podanej na znaku. Ruch pojazdów ze względu na wysokość ogranicza się, gdy wysokość przejazdu jest mniejsza niż 4,5 m. Na znaku podaje się wysokość obiektu nad jezdnią pomniejszoną o 0,5 m. Jest ustawiany ze względu na niskie tunele, wiadukty, linie sieci napowietrznej.;"
+	wiki="Key:maxheight"
+	>
+	<tag key="maxheight" value="$val"/>
+	<parameter ident="val" input="textfield" default="3.5" suffix="m" field_width="3"/>
+</sign>
+
+<sign ref="PL:B-17[$val]" id="PL:B-17" name="Length limit" pl.name="zakaz wjazdu pojazdów o długości ponad ...m"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów lub zespołów pojazdów, których długość wraz z ładunkiem jest większa od wartości podanej na znaku. Ruch pojazdów ze względu na długość ogranicza się na drogach o ostrych i wąskich zakrętach oraz tam, gdzie ruch takich pojazdów może utrudniać ruch.;"
+	wiki="Key:maxlength"
+	>
+	<tag key="maxlength" value="$val"/>
+	<parameter ident="val" input="textfield" default="6" suffix="m" field_width="3"/>
+</sign>
+
+<sign ref="PL:B-18[$val]" id="PL:B-18" name="Weight limit" pl.name="zakaz wjazdu pojazdów o rzeczywistej masie całkowitej ponad ...t"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów lub zespołów pojazdów, których rzeczywista masa całkowita jest większa od wartości podanej na znaku. Stawiany jest ze względu na odcinki dróg o niewystarczającej nośności.;"
+	wiki="Key:maxweight"
+	>
+	<tag key="maxweight" value="$val"/>
+	<parameter ident="val" input="textfield" default="7" suffix="t" field_width="3"/>
+</sign>
+
+<sign ref="PL:B-19[$val]" id="PL:B-19" name="Axle weight limit" pl.name="zakaz wjazdu pojazdów o nacisku osi większym niż ...t"
+	long_name=""
+	pl.long_name="Znak zakazuje ruchu pojazdów, których nacisk osi jest większy od nacisku odpowiadającego masie podanej na znaku. W przypadku osi wielokrotnej nacisk żadnej z osi składowych nie może odpowiadać masie większej niż 80% masy podanej na znaku.;Znak stosuje się:;;na odcinkach dróg o nośności niedostosowanej do nacisku osi pojedynczej 80 kN,;na odcinkach dróg krajowych o nośności niedostosowanej do nacisku osi pojedynczej 100 kN.;;Przykładowo nacisk osi ograniczony do 5 t odpowiada nośności 5000 [kg] · g ≈ 50 [kN], dla g ≈ 10 m/s2.;;"
+	wiki="Key:maxaxleload"
+	>
+	<tag key="maxaxleload" value="$val"/>
+	<parameter ident="val" input="textfield" default="5" suffix="t" field_width="3"/>
+</sign>
+
+<sign ref="PL:B-20" name="stop" pl.name="stop"
+	long_name=""
+	pl.long_name="Znak zakazuje przejazdu bez zatrzymania pojazdu przed:;;wjazdem na skrzyżowanie z drogą z pierwszeństwem.;niestrzeżonym przejazdem kolejowym,;przejazdem tramwajowym,;w innych miejscach przecinania się kierunków ruchu.;;Kierujący zobowiązany jest ustąpić pierwszeństwa poruszającym się drogą z pierwszeństwem i analogicznie w pozostałych sytuacjach. Zatrzymanie pojazdu powinno nastąpić w miejscu wyznaczonym znakiem poziomym P-12 'linia bezwzględnego zatrzymania - stop', w rejonie przejazdu kolejowego dodatkowo przed znakiem G-3 lub G-4 'krzyż św. Andrzeja'. W razie braku wyznaczonego miejsca, zatrzymanie powinno nastąpić w takim miejscu, w którym kierujący może upewnić się, że nie utrudni ruchu na drodze z pierwszeństwem.;Pod znakiem B-20 może być tabliczka T-6c 'tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie (umieszczana na drodze podporządkowanej)' i T-6d 'tabliczka wskazująca prostopadły przebieg drogi z pierwszeństwem przez skrzyżowanie oraz układ dróg podporządkowanych (umieszczana na drodze podporządkowanej)'.;Na drogach o dopuszczalnej prędkości powyżej 60 km/h znak B-20 poprzedzany jest znakiem A-7 'ustąp pierwszeństwa' z tabliczką T-1 'tabliczka wskazująca odległość znaku ostrzegawczego od miejsca niebezpiecznego' z napisem STOP.;Znak jest stosowany, gdy nie są spełnione warunki widoczności (mała widoczność na zatrzymanie).;;"
+	>
+	<tag key="highway" value="stop" ident="yield"/>
+	<supplementary id="PL:T-6c"/>
+	<supplementary id="PL:T-6d"/>
+	<supplementary id="PL:T-1"/>
+</sign>
+
+<sign ref="PL:B-21" name="zakaz skręcania w lewo" pl.name="zakaz skręcania w lewo"
+	long_name=""
+	pl.long_name="Znak zabrania skręcania w lewo i zawracania na skrzyżowaniu, przed którym jest ustawiony.;Znak znajdujący się w obrębie skrzyżowania dotyczy tylko najbliższej jezdni, przed którą został umieszczony, co jest istotne w przypadku skrzyżowań z drogą dwujezdniową.;Umieszczona pod znakiem tabliczka T-22 'tabliczka wskazująca, że znak nie dotyczy rowerów jednośladowych' wskazuje, że znak nie dotyczy rowerów jednośladowych, gdy jest dla nich wyznaczony pas ruchu.;Razem z B-21 może występować znak F-7 'sposób jazdy w związku z zakazem skręcania w lewo', który wskazuje możliwy dojazd do drogi, w którą skręcanie jest zabronione.;Stosowany na skrzyżowaniach z jezdnią jednokierunkową, na którą nie ma wjazdu od strony skrzyżowania oraz, gdy pojazdy skręcające w lewo mogą utrudniać ruch.;;"
+	>
+	<supplementary id="PL:T-22"/>
+</sign>
+
+<sign ref="PL:B-22" name="zakaz skręcania w prawo" pl.name="zakaz skręcania w prawo"
+	long_name=""
+	pl.long_name="Znak zabrania skręcania w prawo na skrzyżowaniu, przed którym jest ustawiony. Stosowany analogicznie jak B-21.;Rozporządzenie w sprawie szczegółowych warunków technicznych dla znaków i sygnałów drogowych oraz urządzeń bezpieczeństwa ruchu drogowego i warunków ich umieszczania na drogach przewiduje stosowanie odmiany znaku F-7 'sposób jazdy w związku z zakazem skręcania w lewo' występującej wraz ze znakiem B-22. Nie ma jej jednak w Rozporządzeniu w sprawie znaków i sygnałów drogowych.;;"
+	>
+</sign>
+
+<sign ref="PL:B-23" name="zakaz zawracania" pl.name="zakaz zawracania"
+	long_name=""
+	pl.long_name="Znak zabrania zawracania od miejsca jego ustawienia do najbliższego skrzyżowania włącznie lub znaku B-24 'koniec zakazu zawracania'. Stosowany w miejscach, gdzie manewr zawracania może powodować utrudnienie ruchu.;"
+	>
+</sign>
+
+<sign ref="PL:B-24" name="koniec zakazu zawracania" pl.name="koniec zakazu zawracania"
+	long_name=""
+	pl.long_name="Znak odwołuje zakaz zawracania.;"
+	>
+</sign>
+
+<sign ref="PL:B-25" name="zakaz wyprzedzania" pl.name="zakaz wyprzedzania"
+	long_name=""
+	pl.long_name="Znak zabrania kierującym pojazdami silnikowymi wyprzedzania pojazdów silnikowych wielośladowych od miejsca jego ustawienia do najbliższego skrzyżowania lub znaku B-27 'koniec zakazu wyprzedzania'. Pod znakiem mogą być umieszczone tabliczki T-23a - T-23j wskazujące rodzaj pojazdów, których obowiązuje zakaz wyprzedzania.;Stosowany w miejscach, gdzie manewr wyprzedzania może powodować zagrożenie bezpieczeństwa ruchu, w szczególności przy braku dostatecznej widoczności pojazdów nadjeżdżających z przeciwka.;;"
+	wiki="Key:overtaking"
+	>
+	<tag key="overtaking" value="no" ident="restriction"/>
+	<supplementary id="PL:T-23a"/>
+	<supplementary id="PL:T-23b"/>
+	<supplementary id="PL:T-23c"/>
+	<supplementary id="PL:T-23d"/>
+	<supplementary id="PL:T-23e"/>
+	<supplementary id="PL:T-23f"/>
+	<supplementary id="PL:T-23g"/>
+	<supplementary id="PL:T-23h"/>
+	<supplementary id="PL:T-23i"/>
+	<supplementary id="PL:T-23j"/>
+</sign>
+
+<sign ref="PL:B-26" name="zakaz wyprzedzania przez samochody ciężarowe" pl.name="zakaz wyprzedzania przez samochody ciężarowe"
+	long_name=""
+	pl.long_name="Znak zabrania wyprzedzania pojazdów silnikowych wielośladowych od miejsca jego ustawienia do najbliższego skrzyżowania lub znaku B-28 'koniec zakazu wyprzedzania przez samochody ciężarowe' kierującym:;;samochodami ciężarowymi o dopuszczalnej masie całkowitej przekraczającej 3,5 t,;ciągnikiem samochodowym,;pojazdem specjalnym lub do celów specjalnych - o dopuszczalnej masie całkowitej przekraczająca 3,5 t.;;;"
+	>
+	<tag key="overtaking:hgv" value="no"/>
+</sign>
+
+<sign ref="PL:B-27" name="koniec zakazu wyprzedzania" pl.name="koniec zakazu wyprzedzania"
+	long_name=""
+	pl.long_name="Znak odwołuje zakaz wyprzedzania.;"
+	>
+</sign>
+
+<sign ref="PL:B-28" name="koniec zakazu wyprzedzania przez samochody ciężarowe" pl.name="koniec zakazu wyprzedzania przez samochody ciężarowe"
+	long_name=""
+	pl.long_name="Znak odwołuje zakaz wyprzedzania przez samochody ciężarowe.;"
+	>
+</sign>
+
+<sign ref="PL:B-29" name="zakaz używania sygnałów dźwiękowych" pl.name="zakaz używania sygnałów dźwiękowych"
+	long_name=""
+	pl.long_name="Znak zabrania używania sygnałów dźwiękowych, chyba że jest to konieczne w celu ostrzeżenia o bezpośrednim zagrożeniu bezpieczeństwa ruchu. Zakaz obowiązuje od miejsca ustawienia znaku do najbliższego skrzyżowania lub znaku B-30 'koniec zakazu używania sygnałów dźwiękowych'.;Stosowany jest tylko poza obszarem zabudowanym w miejscach, gdzie należy ograniczyć hałas: parki, rezerwaty przyrody, ośrodki wypoczynkowe itp. Należy pamiętać, że zgodnie z art. 29 Ustawy - Prawo o ruch drogowym, w obszarze zabudowanym używanie sygnałów dźwiękowych jest zawsze zabronione z podobnym zastrzeżeniem dotyczącym ostrzeżenia o bezpośrednim zagrożeniu bezpieczeństwa ruchu.;;"
+	>
+</sign>
+
+<sign ref="PL:B-30" name="koniec zakazu używania sygnałów dźwiękowych" pl.name="koniec zakazu używania sygnałów dźwiękowych"
+	long_name=""
+	pl.long_name="Znak odwołuje zakaz używania sygnałów dźwiękowych.;"
+	>
+</sign>
+
+<sign ref="PL:B-31" name="pierwszeństwo dla nadjeżdżających z przeciwka" pl.name="pierwszeństwo dla nadjeżdżających z przeciwka"
+	long_name=""
+	pl.long_name="Znak zabrania kierującym wjazdu lub wejścia na zwężony odcinek jezdni, jeżeli zmusiłoby to kierujących znajdujących się na tym odcinku lub zbliżających się do niego z przeciwnej strony do zatrzymania się.;Po przeciwnej stronie zwężenia ustawiany jest znak D-5 'pierwszeństwo na zwężonym odcinku jezdni'. Taka organizacja ruchu wprowadzana jest na zwężonych odcinkach krótszych niż 150 m, gdzie nie mogą wyminąć się pojazdy o szerokości 2,5 m oraz gdy kierujący mają dobrą widoczność pojazdów nadjeżdżających z przeciwka.;;"
+	>
+</sign>
+
+<sign ref="PL:B-32" name="stój - kontrola celna" pl.name="stój - kontrola celna"
+	long_name=""
+	pl.long_name="Znak zabrania przejazdu bez zatrzymania się do kontroli celnej. Zatrzymanie powinno nastąpić w miejscu wyznaczonym w tym celu, a jeżeli nie jest wyznaczone - przed znakiem. Dalszy ruch może nastąpić za zgodą uprawnionej osoby lub po nadaniu sygnału zezwalającego na ruch.;Odmiany B-32:;Po odpowiedniej zmianie napisu znak może wskazywać obowiązek zatrzymania pojazdu z innej przyczyny. Zasady zatrzymania pojazdu i zezwolenia na dalszy ruch w każdym przypadku są takie same.;;;Znak;Informacja;;"
+	>
+</sign>
+
+<sign ref="PL:B-32a" name="stój - kontrola graniczna" pl.name="stój - kontrola graniczna"
+	>
+</sign>
+
+<sign ref="PL:B-32b" name="stój - rogatka uszkodzona" pl.name="stój - rogatka uszkodzona"
+	>
+</sign>
+
+<sign ref="PL:B-32c" name="stój - sygnalizacja uszkodzona" pl.name="stój - sygnalizacja uszkodzona"
+	>
+</sign>
+
+<sign ref="PL:B-32d" name="stój - wjazd na prom" pl.name="stój - wjazd na prom"
+	>
+</sign>
+
+<sign ref="PL:B-32e" name="stój - kontrola drogowa" pl.name="stój - kontrola drogowa"
+	>
+</sign>
+
+<sign ref="PL:B-32f" name="stój - pobór opłat" pl.name="stój - pobór opłat"
+	>
+</sign>
+
+<sign ref="PL:B-33[$val]" id="PL:B-33" name="Speed limit" pl.name="ograniczenie prędkości"
+	long_name=""
+	pl.long_name="Znak zabrania przekraczania prędkości określonej liczbą kilometrów na godzinę. Ograniczenie obowiązuje od miejsca ustawienia znaku do:;;najbliższego skrzyżowania,;wprowadzenia innej dopuszczalnej prędkości znakiem B-33 lub B-43 'strefa ograniczonej prędkości',;początku strefy zamieszkania oznaczonej znakiem D-40,;początku lub końca obszaru zabudowanego, oznaczonych odpowiednio znakami D-42 i D-43,;znaku B-34 'koniec ograniczenia prędkości'.;;Pod znakiem mogą być umieszczone tabliczki T-23a - T-23j wskazujące rodzaj pojazdów, których obowiązuje ograniczenie prędkości.;Dopuszczalna prędkość większa niż 60 km/h na obszarze zabudowanym dotyczy samochodu osobowego, motocykla i samochodu ciężarowego o dopuszczalnej masie całkowitej nieprzekraczającej 3,5 t, z wyjątkiem:;;pojazdu przewożącego towary niebezpieczne,;pojazdu z urządzeniem wystającym do przodu więcej niż 1,5 m od siedzenia kierującego (dopuszczalna prędkość 30 km/h na obszarze zabudowanym i 60 km/h poza obszarem zabudowanym),;pojazdu holującego pojazd silnikowy (dopuszczalna prędkość 30 km/h na obszarze zabudowanym i 60 km/h poza obszarem zabudowanym),;motocykla, którym przewozi się dziecko w wieku do lat 7 (dopuszczalna prędkość 40 km/h),;samochodu ciężarowego przewożącego osoby poza kabiną kierowcy.;;Prędkość pojazdów ogranicza ze względu na wymagające tego warunki drogowe, gdy inne działania nie wpływają na poprawę bezpieczeństwa ruchu drogowego. W przypadku braku lub uchylenia ograniczenia prędkości wyrażonej znakiem B-33, obowiązują dopuszczalne prędkości określone w ustawie - Prawo o ruchu drogowym.;;"
+	wiki="Key:maxspeed"
+	>
+	<tag key="maxspeed" value="$val" ident="restriction"/>
+	<parameter ident="val" type="int" input="combo" editable="yes" text="speed-limit" suffix="km/h" values="5,10,20,30,40,50,60,70,80,90,100,110,120,130" default="50" field_width="3"/>
+	<supplementary id="PL:T-23a"/>
+	<supplementary id="PL:T-23b"/>
+	<supplementary id="PL:T-23c"/>
+	<supplementary id="PL:T-23d"/>
+	<supplementary id="PL:T-23e"/>
+	<supplementary id="PL:T-23f"/>
+	<supplementary id="PL:T-23g"/>
+	<supplementary id="PL:T-23h"/>
+	<supplementary id="PL:T-23i"/>
+	<supplementary id="PL:T-23j"/>
+</sign>
+
+<sign ref="PL:B-34[$val]" id="PL:B-34" name="koniec ograniczenia prędkości" pl.name="koniec ograniczenia prędkości"
+	long_name=""
+	pl.long_name="Znak odwołuje ograniczenie prędkości.;"
+	>
+	<parameter ident="val" type="int" input="combo" editable="yes" text="speed-limit" suffix="km/h" values="5,10,20,30,40,50,60,70,80,90,100,110,120,130" default="50" field_width="3"/>
+</sign>
+
+<sign ref="PL:B-35" name="zakaz postoju" pl.name="zakaz postoju"
+	long_name=""
+	pl.long_name="Znak zakazuje postoju pojazdu rozumianego jako unieruchomienie pojazdu niewynikające z warunków lub przepisów ruchu drogowego, trwające dłużej niż 1 minutę. Oznacza to, że znak dopuszcza chwilowe zatrzymanie pojazdu np. w celu zabrania lub wysadzenia pasażera. Zakaz obowiązuje od miejsca ustawienia znaku do najbliższego skrzyżowania po tej stronie drogi, po której ustawiono znak.;Pod znakiem mogą być umieszczone tabliczki:;;T-24 'tabliczka wskazująca, że pozostawiony pojazd zostanie usunięty na koszt właściciela',;T-25a 'tabliczka wskazująca początek zakazu postoju lub zatrzymywania';T-25b 'tabliczka wskazująca kontynuację zakazu postoju lub zatrzymywania';T-25c 'tabliczka wskazująca odwołanie zakazu postoju lub zatrzymywania';T-26 'tabliczka wskazująca, że zakaz postoju lub zatrzymywania dotyczy strony placu';dopuszczalny czas unieruchomienia pojazdu dłuższy niż 1 minuta lub obowiązywanie znaku w określonych godzinach może być wskazane napisem na znaku albo na umieszczonej pod nim tabliczce,;jeżeli dopuszcza się inne odstępstwa od stosowania się do znaku B-35, na tabliczce pod znakiem umieszcza się właściwą informację o treści 'Nie dotyczy...'.;;Odmiany B-35:;Po odpowiedniej zmianie znaku, może on wskazywać zakaz postoju w określony w przepisach inny sposób. Zasady zakazu postoju w każdym przypadku są takie same lecz dla określonych przepisów, (link zewnętrzny).;;;znak;Informacja;;"
+	>
+	<supplementary id="PL:T-24"/>
+	<supplementary id="PL:T-25a"/>
+	<supplementary id="PL:T-25b"/>
+	<supplementary id="PL:T-25c"/>
+	<supplementary id="PL:T-26"/>
+</sign>
+
+<sign ref="PL:B-36" name="zakaz zatrzymywania się" pl.name="zakaz zatrzymywania się"
+	long_name=""
+	pl.long_name="Znak zabrania zatrzymywania pojazdu z wyjątkiem unieruchomionia ze względu na warunki lub przepisy ruchu drogowego. Pozostałe przepisy są analogiczne jak w przypadku znaku B-35 'zakaz postoju'.;"
+	wiki="Key:stopping"
+	>
+	<tag key="stopping" value="no"/>
+	<tag key="traffic_restriction" value="no_stopping"/>
+</sign>
+
+<sign ref="PL:B-37" name="zakaz postoju w dni nieparzyste" pl.name="zakaz postoju w dni nieparzyste"
+	long_name=""
+	pl.long_name="Znak zabrania postoju w takim samym zakresie, jak znak B-35 'zakaz postoju', lecz obowiązuje tylko w dni nieparzyste. Stosowany wraz ze znakiem B-38 'zakaz postoju w dni parzyste' dla udostępnienia jednej strony jezdni co drugi dzień, np. w celu wywozu śmieci, zaopatrzenia sklepów.;"
+	>
+</sign>
+
+<sign ref="PL:B-38" name="zakaz postoju w dni parzyste" pl.name="zakaz postoju w dni parzyste"
+	long_name=""
+	pl.long_name="Znak stosowany tak jak znak B-37, obowiązuje w dni parzyste.;"
+	>
+</sign>
+
+<sign ref="PL:B-39[$day w godz. $val_on-$val_off]" id="PL:B-39" name="strefa ograniczonego postoju" pl.name="strefa ograniczonego postoju"
+	long_name=""
+	pl.long_name="Znak wskazuje wjazd do strefy, w której obowiązuje zakaz postoju pojazdów na wszystkich drogach. Na znaku podaje się informacje o zakresie obowiązywania np. czas obowiązywania, dopuszczalny czas postoju, określone rodzaje pojazdów. W przypadku braku takich informacji, zakaz obowiązuje w takim samym zakresie, jak wyrażony znakiem B-35 'zakaz postoju'.;Znak B-39 nie dotyczy:;;pojazdu komunikacji publicznej zatrzymującego się na wyznaczonym dla niego miejscu,;pojazdu zatrzymującego się w miejscu oznaczonymi znakami:;;D-18 'parking';D-18a 'parking - miejsce zastrzeżone';D-18b 'parking zadaszony';D-44 'strefa parkowania';;;pojazdu unieruchomionego ze względu na warunki lub przepisy ruchu drogowego,;autobusu szkolnego.;;;"
+	>
+	<tag key="time_on" value="$val_on"/>
+	<tag key="time_off" value="$val_off"/>
+	<parameter ident="day" input="textfield" default="W dni powszednie" field_width="11"/>
+	<parameter ident="val_on" input="textfield" prefix="od" default="7" field_width="2"/>
+	<parameter ident="val_off" input="textfield" prefix="do" default="21" field_width="2"/>
+</sign>
+
+<sign ref="PL:B-40" name="koniec strefy ograniczonego postoju" pl.name="koniec strefy ograniczonego postoju"
+	long_name=""
+	pl.long_name="Oznacza wyjazd ze strefy ograniczonego postoju.;"
+	>
+</sign>
+
+<sign ref="PL:B-41" name="Pedestrians prohibited" pl.name="zakaz ruchu pieszych"
+	long_name=""
+	pl.long_name="Znak zabrania ruchu pieszych po tej stronie drogi, po której znak jest umieszczony. Stosowany ze względu na brak chodnika przy dużym ruchu pojazdów stanowiących niebezpieczeństwo dla pieszych lub gdy droga posiada wydzielony ciąg przeznaczony do ruchu pieszego.;"
+	>
+	<tag key="foot" value="no"/>
+</sign>
+
+<sign ref="PL:B-42" name="koniec zakazów" pl.name="koniec zakazów"
+	long_name=""
+	pl.long_name="Znak odwołuje wszystkie obowiązujące zakazy wyrażone znakami posiadającymi własny znak odwołujący:;;B-23 'zakaz zawracania',;B-25 'zakaz wyprzedzania',;B-26 'zakaz wyprzedzania przez samochody ciężarowe',;B-29 'zakaz używania sygnałów dźwiękowych';B-33 'ograniczenie prędkości'.;;;"
+	>
+	<tag key="maxspeed" value="national"/>
+</sign>
+
+<sign ref="PL:B-43[$val]" id="PL:B-43" name="Speed limit zone" pl.name="strefa ograniczonej prędkości"
+	long_name=""
+	pl.long_name="Znak wskazuje wjazd do strefy, w której na wszystkich drogach obowiązuje zakaz przekraczania prędkości, określonej na znaku przez liczbę kilometrów na godzinę. Dopuszczalna prędkość mniejsza lub równa 30 km/h oznacza, że umieszczone w strefie urządzenia wymuszające powolną jazdę (progi zwalniające, miejscowe przewężenia) nie muszą być oznakowane znakami ostrzegawczymi. Strefy ograniczonej prędkości wyznacza się na obszarach z dużą liczbą skrzyżowań oraz dużym natężeniu ruchu pojazdów i pieszych.;"
+	>
+	<tag key="maxspeed" value="$val"/>
+	<tag key="zone:maxspeed" value="PL:$val"/>
+	<parameter ident="val" type="int" input="combo" editable="yes" text="speed-limit" suffix="km/h" values="20,30" default="30" field_width="2"/>
+</sign>
+
+<sign ref="PL:B-44[$val]" id="PL:B-44" name="koniec strefy ograniczonej prędkości" pl.name="koniec strefy ograniczonej prędkości"
+	long_name=""
+	pl.long_name="Znak wskazuje wyjazd ze strefy ograniczonej prędkości.;"
+	>
+	<parameter ident="val" type="int" input="combo" editable="yes" text="speed-limit" suffix="km/h" values="20,30" default="30" field_width="2"/>
+</sign>
+
+<sign ref="PL:B-3/4" name="Motor vehicles prohibited" pl.name="zakaz wjazdu pojazdów silnikowych"
+	icon="PL_B-3_4.png"
+	>
+	<tag key="motor_vehicle" value="no"/>
+</sign>
+
+<sign ref="PL:B-6/8" name="zakaz wjazdu ciągników rolniczych i pojazdów zaprzęgowych" pl.name="zakaz wjazdu ciągników rolniczych i pojazdów zaprzęgowych"
+	icon="PL_B-6_8.png"
+	>
+	<tag key="agricultural" value="no"/>
+	<tag key="horse_drawn" value="no"/>
+</sign>
+
+<sign ref="PL:B-6/8/9" name="zakaz wjazdu pojazdów innych niż samochodowe" pl.name="zakaz wjazdu pojazdów innych niż samochodowe"
+	icon="PL_B-6_8_9.png"
+	>
+	<tag key="agricultural" value="no"/>
+	<tag key="bicycle" value="no"/>
+	<tag key="horse_drawn" value="no"/>
+</sign>
+
+<sign ref="PL:B-9/12" name="zakaz wjazdu rowerów i wózków ręcznych" pl.name="zakaz wjazdu rowerów i wózków ręcznych"
+	icon="PL_B-9_12.png"
+	>
+	<tag key="bicycle" value="no"/>
+</sign>
+
+<sign ref="PL:B-13/14" name="zakaz wjazdu pojazdów z towarami wybuchowymi lub łatwo zapalnymi oraz towarami mogącymi skazić wodę" pl.name="zakaz wjazdu pojazdów z towarami wybuchowymi lub łatwo zapalnymi oraz towarami mogącymi skazić wodę"
+	icon="PL_B-13_14.png"
+	>
+	<tag key="hazmat:water" value="no"/>
+	<tag key="access:explosives" value="no"/>
+</sign>
+
+<sign ref="PL:B-3/4/10" name="zakaz wjazdu pojazdów silnikowych i motorowerów" pl.name="zakaz wjazdu pojazdów silnikowych i motorowerów"
+	icon="PL_B-3_4_10.png"
+	>
+	<tag key="motorcar" value="no"/>
+	<tag key="motorcycle" value="no"/>
+	<tag key="mofa" value="no"/>
+</sign>
+
+
+<sign ref="PL:C-1" name="nakaz jazdy w prawo przed znakiem" pl.name="nakaz jazdy w prawo przed znakiem"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu skręt w prawo przed znakiem. Znak ten umieszczony jest na przedłużeniu osi części jezdni, jadących którą nakaz dotyczy. Stosowany zwykle na skrzyżowaniach z jezdnią jednokierunkową, gdzie nie ma możliwości jazdy na wprost.;"
+	>
+</sign>
+
+<sign ref="PL:C-2" name="nakaz jazdy w prawo za znakiem" pl.name="nakaz jazdy w prawo za znakiem"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu skręt w prawo za znakiem. Znak ten umieszczony jest obok jezdni, której dotyczy i obowiązuje na najbliższym skrzyżowaniu lub w miejscu, gdzie występuje możliwość zmiany kierunku jazdy.;"
+	>
+</sign>
+
+<sign ref="PL:C-3" name="nakaz jazdy w lewo przed znakiem" pl.name="nakaz jazdy w lewo przed znakiem"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu skręt w lewo przed znakiem. Stosowany analogicznie jak znak C-1.;"
+	>
+</sign>
+
+<sign ref="PL:C-4" name="nakaz jazdy w lewo za znakiem" pl.name="nakaz jazdy w lewo za znakiem"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu skręt w lewo za znakiem. Stosowany analogicznie jak znak C-2.;"
+	>
+</sign>
+
+<sign ref="PL:C-5" name="nakaz jazdy prosto" pl.name="nakaz jazdy prosto"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu jazdę prosto. Znak obowiązuje na najbliższym skrzyżowaniu lub w miejscu, gdzie występuje możliwość zmiany kierunku jazdy. Często stosowany jest poza skrzyżowaniami na drogach o dużym natężeniu ruchu w celu wyeliminowania skręcania (szczególnie w lewo) pojazdów do obiektów przydrożnych.;"
+	>
+</sign>
+
+<sign ref="PL:C-6" name="nakaz jazdy prosto lub w prawo" pl.name="nakaz jazdy prosto lub w prawo"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu jazdę prosto lub w prawo. Stosowany na skrzyżowaniach o więcej niż czterech wlotach, gdy nie można zastosować znaku B-21 'zakaz skręcania w lewo'.;"
+	>
+</sign>
+
+<sign ref="PL:C-7" name="nakaz jazdy prosto lub w lewo" pl.name="nakaz jazdy prosto lub w lewo"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu jazdę prosto lub w lewo. Stosowany na skrzyżowaniach o więcej niż czterech wlotach, gdy nie można zastosować znaku B-22 'zakaz skręcania w prawo'.;"
+	>
+</sign>
+
+<sign ref="PL:C-8" name="nakaz jazdy w prawo lub w lewo" pl.name="nakaz jazdy w prawo lub w lewo"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu jazdę w prawo lub w lewo. Stosowany, gdy zabroniona jest jazda prosto.;"
+	>
+</sign>
+
+<sign ref="PL:C-9" name="nakaz jazdy z prawej strony znaku" pl.name="nakaz jazdy z prawej strony znaku"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu ominięcie wysepki lub przeszkody na jezdni z prawej strony znaku. Umieszczony na pasie dzielącym drogi oznacza początek jezdni jednokierunkowej.;"
+	>
+</sign>
+
+<sign ref="PL:C-10" name="nakaz jazdy z lewej strony znaku" pl.name="nakaz jazdy z lewej strony znaku"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu ominięcie wysepki lub przeszkody na jezdni po lewej stronie znaku, lecz nie oznacza jednocześnie jezdni jednokierunkowej.;"
+	>
+</sign>
+
+<sign ref="PL:C-11" name="nakaz jazdy z prawej lub z lewej strony znaku" pl.name="nakaz jazdy z prawej lub z lewej strony znaku"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu ominięcie wysepki lub przeszkody na jezdni z lewej lub prawej strony znaku. Umieszczany jest w miejscu rozdzielenia jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:C-12" name="Roundabout" pl.name="ruch okrężny"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu jazdę dookoła wyspy lub placu w kierunku wskazanym na znaku (skrzyżowanie o ruchu okrężnym). Znak C-12 najczęściej występuje łącznie ze znakiem A-7 'ustąp pierwszeństwa', co oznacza pierwszeństwo kierującego znajdującego się na skrzyżowaniu przed kierującym wjeżdżającym na to skrzyżowanie. W przypadku znaku C-12 występującego samodzielnie, pojazd znajdujący się na skrzyżowaniu ustępuje pierwszeństwa pojazdowi na wjeżdżającemu (zgodnie z zasadą prawej ręki).;"
+	wiki="Tag:junction=roundabout"
+	>
+	<tag key="junction" value="roundabout"/>
+</sign>
+
+<sign ref="PL:C-13" name="Bicycle path" pl.name="droga dla rowerów"
+	long_name=""
+	pl.long_name="Znak nakazuje kierującemu rowerem jednośladowym jazdę drogą dla rowerów.;"
+	>
+	<tag key="highway" value="path"/>
+	<tag key="bicycle" value="official"/>
+</sign>
+
+<sign ref="PL:C-13a" name="koniec drogi dla rowerów" pl.name="koniec drogi dla rowerów"
+	long_name=""
+	pl.long_name="Znak oznacza koniec drogi przeznaczonej dla kierujących rowerami jednośladowymi.;"
+	>
+	<tag key="highway" value="path"/>
+	<tag key="bicycle" value="no"/>
+</sign>
+
+<sign ref="PL:C-14[$val]" id="PL:C-14" name="Minimum speed limit" pl.name="prędkość minimalna"
+	long_name=""
+	pl.long_name="Znak oznacza obowiązek jazdy z prędkością nie mniejszą niż określona na znaku liczbą kilometrów na godzinę przy zachowaniu ograniczeń prędkości wynikających z przepisów ustawy – Prawo o ruchu drogowym, chyba że warunki ruchu lub jego bezpieczeństwo wymagają zmniejszenia prędkości. Zgodnie z art. 19 ustawy – Prawo o ruchu drogowym, kierujący jest w każdej sytuacji zobowiązany jechać z prędkością nieutrudniającą jazdy innym kierującym. Znak C-14 stosowany jest, gdy kierujący nagminnie zmniejszają prędkość jazdy z przyczyn niewynikających ze stanu technicznego drogi.;"
+	wiki="Key:minspeed"
+	>
+	<tag key="minspeed" value="$val"/>
+	<parameter ident="val" input="textfield" suffix="km/h" default="30" field_width="2"/>
+</sign>
+
+<sign ref="PL:C-15[$val]" id="PL:C-15" name="koniec prędkości minimalnej" pl.name="koniec prędkości minimalnej"
+	long_name=""
+	pl.long_name="Znak oznacza miejsce, w którym prędkość minimalna określona znakiem C-14 przestaje obowiązywać.;"
+	>
+	<parameter ident="val" input="textfield" suffix="km/h" default="30" field_width="2"/>
+</sign>
+
+<sign ref="PL:C-16" name="Pedestrian path" pl.name="droga dla pieszych"
+	long_name=""
+	pl.long_name="Znak nakazuje pieszym korzystanie z drogi przeznaczonej wyłącznie do ruchu pieszego. Stosowany tam, gdzie ze względu na duże natężenie ruchu pieszego, wyeliminowanie ruchu pojazdów zapewnia poprawę bezpieczeństwa.;"
+	>
+	<tag key="highway" value="path"/>
+	<tag key="foot" value="official"/>
+</sign>
+
+<sign ref="PL:C-16a" name="koniec drogi dla pieszych" pl.name="koniec drogi dla pieszych"
+	long_name=""
+	pl.long_name="Znak oznacza koniec drogi przeznaczonej tylko dla pieszych.;"
+	>
+	<tag key="highway" value="path"/>
+	<tag key="foot" value="no"/>
+</sign>
+
+<sign ref="PL:C-17[$val]" id="PL:C-17" name="nakazany kierunek jazdy dla pojazdów z towarami niebezpiecznymi" pl.name="nakazany kierunek jazdy dla pojazdów z towarami niebezpiecznymi"
+	long_name=""
+	pl.long_name="Znak wskazuje kierunek jazdy na skrzyżowaniu dla pojazdów przewożących towary niebezpieczne w ilościach, dla których jest wymagane oznakowanie pojazdu tablicami ostrzegawczymi barwy pomarańczowej. Kierunek wskazany może być symbolem znaku C-2, C-4, C-5, C-6, C-7 lub C-8. Znak stosowany w szczególności do wskazania miejsc postojowych dla pojazdów z towarami niebezpiecznymi, np. w terminalach odpraw celnych.;"
+	>
+	<parameter ident="val" input="textfield" prefix="znak kierunku:" default="PL:C-2" field_width="5"/>
+</sign>
+
+<sign ref="PL:C-18" name="nakaz używania łańcuchów przeciwpoślizgowych" pl.name="nakaz używania łańcuchów przeciwpoślizgowych"
+	long_name=""
+	pl.long_name="Znak oznacza, że kierujący pojazdem silnikowym ma obowiązek stosować łańcuchy przeciwpoślizgowe na co najmniej dwóch kołach napędowych. Stosowany w okresie zimowym na drogach, na których podczas opadów śniegu występują trudności poruszania się pojazdów niewyposażonych w łańcuchy. Umieszczona pod znakiem tabliczka od T-23a do T-23j oznacza, że nakaz dotyczy pojazdów określonych na tabliczce.;"
+	>
+	<supplementary id="PL:T-23a"/>
+	<supplementary id="PL:T-23b"/>
+	<supplementary id="PL:T-23c"/>
+	<supplementary id="PL:T-23d"/>
+	<supplementary id="PL:T-23e"/>
+	<supplementary id="PL:T-23f"/>
+	<supplementary id="PL:T-23g"/>
+	<supplementary id="PL:T-23h"/>
+	<supplementary id="PL:T-23i"/>
+	<supplementary id="PL:T-23j"/>
+</sign>
+
+<sign ref="PL:C-19" name="koniec nakazu używania łańcuchów przeciwpoślizgowych" pl.name="koniec nakazu używania łańcuchów przeciwpoślizgowych"
+	long_name=""
+	pl.long_name="Znak oznacza miejsce, w którym nakaz używania łańcuchów przeciwpoślizgowych przestaje obowiązywać.;"
+	>
+</sign>
+
+<sign ref="PL:C-13/16a" name="Split pedestrian &amp; bicycle path" pl.name="wskazujący ruch rowerów lewą stroną drogi i ruch pieszych prawą stroną drogi"
+	icon="PL_C-13_16a.png"
+	>
+	<tag key="highway" value="path"/>
+	<tag key="foot" value="official"/>
+	<tag key="bicycle" value="official"/>
+	<tag key="segregated" value="yes"/>
+</sign>
+
+<sign ref="PL:C-13/16b" name="Split pedestrian &amp; bicycle path" pl.name="wskazujący ruch pieszych lewą stroną drogi i ruch rowerów prawą stroną drogi"
+	icon="PL_C-13_16b.png"
+	>
+	<tag key="highway" value="path"/>
+	<tag key="foot" value="official"/>
+	<tag key="bicycle" value="official"/>
+	<tag key="segregated" value="yes"/>
+</sign>
+
+<sign ref="PL:C-13/16c" name="Pedestrian &amp; bicycle path" pl.name="wskazujący ruch pieszych i rowerów na tej samej drodze"
+	icon="PL_C-13_16c.png"
+	>
+	<tag key="highway" value="path"/>
+	<tag key="foot" value="official"/>
+	<tag key="bicycle" value="official"/>
+</sign>
+
+
+<sign ref="PL:A-1" name="hazardous turn right" pl.name="niebezpieczny zakręt w prawo"
+	long_name=""
+	pl.long_name="Znak ostrzega przed pojedynczym niebezpiecznym zakrętem w prawo. Stosuje się go na ogół poza miastami, gdy kąt zwrotu łuku drogi jest większy niż 5°, a jego promień jest mniejszy niż 750 m oraz w zależności od przechyłki. Ustawiany także na zakrętach o ograniczonej widoczności, bądź gdzie dochodzi do częstych wypadków lub kolizji.;"
+	>
+	<tag key="hazard" value="turn_right"/>
+</sign>
+
+<sign ref="PL:A-2" name="hazardous turn left" pl.name="niebezpieczny zakręt w lewo"
+	long_name=""
+	pl.long_name="Znak ostrzega przed pojedynczym niebezpiecznym zakrętem w lewo. Stosuje się go analogicznie jak znak A-1.;"
+	>
+	<tag key="hazard" value="turn_left"/>
+</sign>
+
+<sign ref="PL:A-3" name="multiple hazardous turns - first right" pl.name="niebezpieczne zakręty - pierwszy w prawo"
+	long_name=""
+	pl.long_name="Znak ostrzega przed niebezpiecznymi zakrętami, z których pierwszy jest w prawo. Stosuje się go na tych samych zasadach, co znaki A-1 i A-2, gdy odległość od końca pierwszego zakrętu do początku kolejnego wymagającego oznakowania zakrętu (niezależnie od tego, w którym jest kierunku) jest mniejsza niż 300 m.;Gdy liczba zakrętów jest większa niż 2, pod znakiem mogą być umieszczone tabliczki:;;T-2 'tabliczka wskazująca długość odcinka drogi, na którym powtarza się lub występuje niebezpieczeństwo' (koniec tego odcinka wskazuje tabliczka T-3),;T-4 'tabliczka wskazująca liczbę zakrętów',;T-5 'tabliczka wskazująca początek drogi krętej' (gdy krętość odcinka przekracza 160°/km).;;;"
+	>
+	<tag key="hazard" value="turns_first_right" ident="haz"/>
+	<supplementary id="PL:T-2"/>
+	<supplementary id="PL:T-3"/>
+	<supplementary id="PL:T-4"/>
+	<supplementary id="PL:T-5"/>
+</sign>
+
+<sign ref="PL:A-4" name="multiple hazardous turns - first left" pl.name="niebezpieczne zakręty - pierwszy w lewo"
+	long_name=""
+	pl.long_name="Znak ostrzega przed niebezpiecznymi zakrętami, z których pierwszy jest w lewo. Stosuje się go analogicznie jak znak A-3.;Gdy liczba zakrętów jest większa niż 2, pod znakiem mogą być umieszczone tabliczki:;;T-2 'tabliczka wskazująca długość odcinka drogi, na którym powtarza się lub występuje niebezpieczeństwo' (koniec tego odcinka wskazuje tabliczka T-3),;T-4 'tabliczka wskazująca liczbę zakrętów',;T-5 'tabliczka wskazująca początek drogi krętej' (gdy krętość odcinka przekracza 160°/km).;;;"
+	>
+	<tag key="hazard" value="turns_first_left" ident="haz"/>
+	<supplementary id="PL:T-2"/>
+	<supplementary id="PL:T-3"/>
+	<supplementary id="PL:T-4"/>
+	<supplementary id="PL:T-5"/>
+</sign>
+
+<sign ref="PL:A-5" name="equal priority road crossing" pl.name="skrzyżowanie dróg"
+	long_name=""
+	pl.long_name="Znak ostrzega przed skrzyżowaniem dróg, na którym pierwszeństwo nie jest określone znakami (skrzyżowanie równorzędne). Stosowany wyłącznie wtedy, gdy jedna z dróg miała nadane pierwszeństwo znakiem D-1 'droga z pierwszeństwem', A-6a, A-6b, A-6c, A-6d, A-6e 'skrzyżowanie z drogą podporządkowaną', lub gdy układ skrzyżowania może sugerować inne zasady pierwszeństwa.;"
+	>
+	<tag key="hazard" value="crossing_equal"/>
+</sign>
+
+<sign ref="PL:A-6a" name="minor priority road crossing" pl.name="skrzyżowanie z drogą podporządkowaną występującą po obu stronach"
+	long_name=""
+	pl.long_name="Znak ostrzega przed skrzyżowaniem z drogą podporządkowaną występującą po obu stronach drogi z pierwszeństwem. Stosowany jest poza obszarem zabudowanym dla wskazania pierwszeństwa drogi przebiegającej na wprost, przy której jest ustawiony. Jeżeli osie dróg poprzecznych nie przecinają się na skrzyżowaniu, stosuje się tabliczkę T-6b 'tabliczka wskazująca układ dróg podporządkowanych'.;"
+	>
+	<tag key="hazard" value="crossing_minor"/>
+	<supplementary id="PL:T-6b"/>
+</sign>
+
+<sign ref="PL:A-6b" name="minor priority road crossing on right hand side" pl.name="skrzyżowanie z drogą podporządkowaną występującą po prawej stronie"
+	long_name=""
+	pl.long_name="Znak, stosowany podobnie jak A-6a, ostrzega przed skrzyżowaniem z drogą podporządkowaną występującą po prawej stronie drogi z pierwszeństwem.;"
+	>
+	<tag key="hazard" value="crossing_minor_right"/>
+</sign>
+
+<sign ref="PL:A-6c" name="minor priority road crossing on left hand side" pl.name="skrzyżowanie z drogą podporządkowaną występującą po lewej stronie"
+	long_name=""
+	pl.long_name="Znak, stosowany podobnie jak A-6a, ostrzega przed skrzyżowaniem z drogą podporządkowaną występującą po lewej stronie drogi z pierwszeństwem.;"
+	>
+	<tag key="hazard" value="crossing_minor_left"/>
+</sign>
+
+<sign ref="PL:A-6d" name="wlot drogi jednokierunkowej z prawej strony" pl.name="wlot drogi jednokierunkowej z prawej strony"
+	long_name=""
+	pl.long_name="Znak ostrzega przed skrzyżowaniem z podporządkowanym wlotem - drogą kończącą się pasem włączania z prawej strony.;"
+	>
+</sign>
+
+<sign ref="PL:A-6e" name="wlot drogi jednokierunkowej z lewej strony" pl.name="wlot drogi jednokierunkowej z lewej strony"
+	long_name=""
+	pl.long_name="Znak ostrzega przed skrzyżowaniem z podporządkowanym wlotem - drogą kończącą się pasem włączania z lewej strony.;"
+	>
+</sign>
+
+<sign ref="PL:A-7" name="yield" pl.name="ustąp pierwszeństwa"
+	long_name=""
+	pl.long_name="Znak ostrzega przed koniecznością ustąpienia pierwszeństwa. Umieszczony jest na drodze podporządkowanej przed skrzyżowaniem z drogą z pierwszeństwem, gdy spełnione są warunki widoczności (w innym wypadku stosuje się znak B-20 'stop'). Znak dotyczy tylko najbliższej jezdni, przed którą został umieszczony. Może być umieszczony w innych miejscach, gdzie z przepisów ustawy - Prawo o ruchu drogowym wynika obowiązek ustąpienia pierwszeństwa, np. wyjazd z obiektu, torowisko tramwajowe.;Pod znakiem może być umieszczona tabliczka T-6c 'tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie';Na drogach o dopuszczalnej prędkości powyżej 60 km/h znak A-7 poprzedzany jest znakiem A-7 z tabliczką T-1 'tabliczka wskazująca odległość znaku ostrzegawczego od miejsca niebezpiecznego'.;;"
+	wiki="Yield"
+	>
+	<tag key="highway" value="give_way" ident="yield"/>
+	<supplementary id="PL:T-6c"/>
+	<supplementary id="PL:T-1"/>
+</sign>
+
+<sign ref="PL:A-8" name="roundabout" pl.name="skrzyżowanie o ruchu okrężnym"
+	long_name=""
+	pl.long_name="Znak ostrzega przed skrzyżowaniem, na którym ruch odbywa się dookoła wyspy lub placu w kierunku wskazanym na znaku, oznaczonym znakiem C-12 'ruch okrężny'. Stosowany zwykle, gdy droga miała wcześniej nadane pierwszeństwo lub skrzyżowanie nie jest widoczne z dostatecznej odległości.;"
+	>
+	<tag key="hazard" value="roundabout"/>
+</sign>
+
+<sign ref="PL:A-9" name="railway crossing" pl.name="przejazd kolejowy z zaporami"
+	long_name=""
+	pl.long_name="Znak ostrzega przed przejazdem kolejowym wyposażonym w zapory zamykające całą szerokość jezdni lub półzapory zamykające wjazd na przejazd. Wraz ze znakiem stosuje się słupki wskaźnikowe G-1a, G-1b, G-1c (po prawej stronie jezdni), 'G-1d, G-1e, G-1f (po lewej stronie jezdni na jezdniach jednokierunkowych).;"
+	wiki="Key:railway"
+	>
+	<tag key="railway" value="level_crossing"/>
+</sign>
+
+<sign ref="PL:A-10" name="no barrier railway crossing" pl.name="przejazd kolejowy bez zapór"
+	long_name=""
+	pl.long_name="Znak ostrzega przed przejazdem kolejowym niewyposażonym w zapory lub półzapory. Przejazd może być wyposażony w samoczynną sygnalizację świetlną.;W przypadku przejazdów niebezpiecznych ze względu na ostry kąt przecięcia się drogi z linią kolejową lub przebieg linii kolejowej po łuku, pod znakiem stosuje się tabliczkę T-7 'tabliczka wskazująca układ torów i drogi na przejeździe'.;Wraz ze znakiem również stosuje się słupki wskaźnikowe, a także 'krzyż św. Andrzeja' G-3 lub G-4, wyznaczający miejsce, w którym powinien być zatrzymany pojazd w związku z przejazdem pociągu (nie bliżej niż 5 m od skrajnej szyny).;;"
+	wiki="Key:railway"
+	>
+	<tag key="railway" value="crossing"/>
+	<supplementary id="PL:T-7"/>
+</sign>
+
+<sign ref="PL:A-11" name="nierówna droga" pl.name="nierówna droga"
+	long_name=""
+	pl.long_name="Znak ostrzega przed odcinkiem jezdni na którym występują poprzeczne nierówności jezdni, które mogą być niebezpieczne dla ruchu lub obniżają komfort jazdy.;"
+	>
+</sign>
+
+<sign ref="PL:A-11a" name="próg zwalniający" pl.name="próg zwalniający"
+	long_name=""
+	pl.long_name="Znak ostrzega przed progiem zwalniającym - wypukłością zastosowaną na jezdni w celu spowolnienia ruchu pojazdów.;"
+	>
+</sign>
+
+<sign ref="PL:A-12a" name="zwężenie jezdni - dwustronne" pl.name="zwężenie jezdni - dwustronne"
+	long_name=""
+	pl.long_name="Znak ostrzega przed zwężeniem jezdni, które może powodować utrudnienia ruchu lub być niebezpieczne dla kierujących, gdy występuje zmniejszenie szerokości po obu stronach jezdni przekraczające 0,2 m, a szerokość zwężonego odcinka wynosi mniej niż 5,5 m.;"
+	>
+</sign>
+
+<sign ref="PL:A-12b" name="zwężenie jezdni - prawostronne" pl.name="zwężenie jezdni - prawostronne"
+	long_name=""
+	pl.long_name="Znak ostrzega przed zwężeniem jezdni, które może powodować utrudnienia ruchu lub być niebezpieczne dla kierujących, gdy występuje zmniejszenie szerokości po prawej stronie jezdni przekraczające 0,2 m, a szerokość zwężonego odcinka wynosi mniej niż 5,5 m.;"
+	>
+</sign>
+
+<sign ref="PL:A-12c" name="zwężenie jezdni - lewostronne" pl.name="zwężenie jezdni - lewostronne"
+	long_name=""
+	pl.long_name="Znak ostrzega przed zwężeniem jezdni, które może powodować utrudnienia ruchu lub być niebezpieczne dla kierujących, gdy występuje zmniejszenie szerokości po lewej stronie jezdni przekraczające 0,2 m, a szerokość zwężonego odcinka wynosi mniej niż 5,5 m.;"
+	>
+</sign>
+
+<sign ref="PL:A-13" name="ruchomy most" pl.name="ruchomy most"
+	long_name=""
+	pl.long_name="Znak ostrzega przed mostem o ruchomym przęśle. Umieszczany jest przed wjazdem na czynny most zwodzony lub obrotowy.;"
+	>
+</sign>
+
+<sign ref="PL:A-14" name="roboty na drodze" pl.name="roboty na drodze"
+	long_name=""
+	pl.long_name="Znak ostrzega przed miejscem, w którym prowadzone są na drodze roboty, gdzie kierujący może spotkać osoby pracujące na drodze lub przeszkody utrudniające ruch, takie jak maszyny, materiały.;Umieszczona pod znakiem tabliczka T-19 wskazuje na malowanie znaków poziomych.;;"
+	>
+	<supplementary id="PL:T-19"/>
+</sign>
+
+<sign ref="PL:A-15" name="śliska jezdnia" pl.name="śliska jezdnia"
+	long_name=""
+	pl.long_name="Znak ostrzega przed możliwością poślizgu pojazdu z powodu zmniejszonej szorstkości jezdni spowodowanej w szczególności:;;zmianą nawierzchni jezdni,;stałym lub okresowym zawilgoceniem nawierzchni jezdni.;;;"
+	>
+	<tag key="hazard" value="slippery_road"/>
+</sign>
+
+<sign ref="PL:A-16" name="pedestrians crossing" pl.name="przejście dla pieszych"
+	long_name=""
+	pl.long_name="Znak ostrzega przed przejściem dla pieszych. Umieszcza się go przed przejściem bez sygnalizacji świetlnej na drogach o dopuszczalnej prędkości powyżej 60 km/h lub przed przejściem poza skrzyżowaniami, gdy może nie być widoczne odpowiednio wcześnie.;"
+	>
+	<tag key="hazard" value="pedestrians"/>
+</sign>
+
+<sign ref="PL:A-17" name="children" pl.name="dzieci"
+	long_name=""
+	pl.long_name="Znak ostrzega przed miejscem na drodze szczególnie uczęszczanym przez dzieci w wieku od 7 do 15 lat. Znak umieszcza się zwłaszcza w pobliżu szkół podstawowych, gimnazjów, placówek prowadzących zajęcia z dziećmi, terenów zabaw itp.;"
+	>
+	<tag key="hazard" value="children"/>
+</sign>
+
+<sign ref="PL:A-18a" name="household animals" pl.name="zwierzęta gospodarskie"
+	long_name=""
+	pl.long_name="Znak ostrzega przed możliwością napotkania na drodze zwierząt gospodarskich. Stosuje się go do oznaczania miejsc, w których odbywa się regularny przepęd zwierząt wzdłuż lub w poprzek (przy ośrodkach hodowlanych, pastwiskach itp.);"
+	>
+	<tag key="hazard" value="sheep"/>
+	<tag key="hazard" value="cattle"/>
+	<tag key="hazard" value="household_animals"/>
+</sign>
+
+<sign ref="PL:A-18b" name="wild animals" pl.name="zwierzęta dzikie"
+	long_name=""
+	pl.long_name="Znak ostrzega przed możliwością napotkania na drodze zwierząt dzikich. Stosuje się go do oznaczania miejsc, w których zwierzęta dziko żyjące często przekraczają drogę (lasy z dużą ilością zwierzyny, szlaki wędrówek zwierząt);"
+	>
+	<tag key="hazard" value="wild_animals"/>
+</sign>
+
+<sign ref="PL:A-19" name="side wind" pl.name="boczny wiatr"
+	long_name=""
+	pl.long_name="Znak ostrzega przed miejscem, w którym mogą występować silne boczne podmuchy wiatru, np. przy wyjeździe z gęstego lasu, głębokiego wykopu, obszaru o zwartej zabudowie na otwarty teren. W miejscach występowania silnych podmuchów wiatru może być ustawiony sygnalizator pokazujący siłę i kierunek wiatru w danej chwili.;"
+	>
+	<tag key="hazard" value="side_wind"/>
+</sign>
+
+<sign ref="PL:A-20" name="odcinek jezdni o ruchu dwukierunkowym" pl.name="odcinek jezdni o ruchu dwukierunkowym"
+	long_name=""
+	pl.long_name="Znak ostrzega jadących jezdnią jednokierunkową przed miejscem, w którym rozpoczyna się ruch dwukierunkowy. Stosowany w sytuacji, gdy:;;dwie jezdnie jednokierunkowe łączą się w jedną jezdnię dwukierunkową,;przy wprowadzeniu ruchu w przeciwnym kierunku na jezdnię mającą dotychczas ruch jednokierunkowy.;;;"
+	>
+</sign>
+
+<sign ref="PL:A-21" name="tram" pl.name="tramwaj"
+	long_name=""
+	pl.long_name="Znak ostrzega przed przecięciem drogi przez tory tramwajowe w taki sposób, że kierujący mogą nie zorientować się odpowiednio wcześnie o istnieniu tych torów.;Przed przejazdami tramwajowymi niebezpiecznymi ze względu na ostry kąt przecięcia się drogi z linią kolejową lub przebieg torów po łuku, pod znakiem stosuje się tabliczkę T-7 'tabliczka wskazująca układ torów i drogi na przejeździe'.;Tabliczka T-8 pod znakiem wskazuje pas ruchu skierowany na tory tramwajowe.;;"
+	>
+	<tag key="hazard" value="tram"/>
+	<supplementary id="PL:T-7"/>
+	<supplementary id="PL:T-8"/>
+</sign>
+
+<sign ref="PL:A-22" name="Incline down" pl.name="niebezpieczny zjazd"
+	long_name=""
+	pl.long_name="Znak ostrzega przed znacznym spadkiem podłużnym drogi, co najmniej 10% w terenie górskim, a na pozostałych drogach co najmniej 7%, bądź gdy zjazd jest niebezpieczny ze względu na ostre zakręty lub zły stan nawierzchni. Umieszczona pod znakiem tabliczka T-9 wskazuje rzeczywistą wielkość spadku.;"
+	wiki="Key:incline"
+	>
+	<tag key="incline" value="down" ident="incl"/>
+	<supplementary id="PL:T-9"/>
+</sign>
+
+<sign ref="PL:A-23" name="Incline up" pl.name="stromy podjazd"
+	long_name=""
+	pl.long_name="Znak ostrzega przed znacznym wzniesieniem drogi, co najmniej 8% w terenie górskim, a na pozostałych drogach co najmniej 6%, bądź gdy wjazd na wzniesienie jest utrudniony ze względu na ostre zakręty lub zły stan nawierzchni. Umieszczona pod znakiem tabliczka T-9 wskazuje rzeczywistą wielkość wzniesienia.;"
+	wiki="Key:incline"
+	>
+	<tag key="incline" value="up" ident="incl"/>
+	<supplementary id="PL:T-9"/>
+</sign>
+
+<sign ref="PL:A-24" name="cyclists" pl.name="rowerzyści"
+	long_name=""
+	pl.long_name="Znak ostrzega przed miejscem, w którym rowerzyści wyjeżdżają z drogi dla rowerów. Umieszcza się go też przed przejazdem dla rowerzystów na drogach o dopuszczalnej prędkości powyżej 60 km/h lub przed przejazdem poza skrzyżowaniami, albo gdy przejazd może nie być widoczny odpowiednio wcześnie.;"
+	>
+	<tag key="hazard" value="cyclists"/>
+</sign>
+
+<sign ref="PL:A-25" name="falling rocks" pl.name="spadające odłamki skalne"
+	long_name=""
+	pl.long_name="Znak ostrzega przed miejscem, w którym na drogę mogą staczać się lub zalegać na niej odłamki skalne, stanowiące niebezpieczeństwo dla nadjeżdżających pojazdów.;"
+	>
+	<tag key="hazard" value="falling_rocks"/>
+</sign>
+
+<sign ref="PL:A-26" name="airport" pl.name="lotnisko"
+	long_name=""
+	pl.long_name="Znak ostrzega przed możliwością nagłego pojawienia się nisko przelatującego samolotu lub śmigłowca. Znak stosuje się w pobliżu lotnisk, gdzie nagłe pojawienie się przelatującego nisko samolotu może przestraszyć kierującego pojazdem i spowodować nieprawidłowy manewr.;"
+	>
+	<tag key="hazard" value="airport"/>
+</sign>
+
+<sign ref="PL:A-27" name="water bank" pl.name="nabrzeże lub brzeg rzeki"
+	long_name=""
+	pl.long_name="Znak ostrzega przed odcinkiem drogi prowadzącym bezpośrednio do nabrzeża lub wzdłuż brzegu rzeki lub innego zbiornika wodnego w odległości mniejszej niż 10 m, gdzie nie są zastosowane bariery ochronne.;"
+	>
+	<tag key="hazard" value="water_bank"/>
+</sign>
+
+<sign ref="PL:A-28" name="loose gravel" pl.name="sypki żwir"
+	long_name=""
+	pl.long_name="Znak ostrzega przed odcinkiem drogi pokrytej żwirem (grysem), który może być wyrzucany spod kół jadących pojazdów. Dotyczy to przede wszystkim nawierzchni tłuczniowych oraz nawierzchni, na których przeprowadzone powierzchniowe utrwalenie warstwy ścieralnej do czasu stabilnego oblepienia kruszywa przez bitum. Ponadto znak może być umieszczony przed wyjazdami z kamieniołomów lub żwirowni.;"
+	>
+	<tag key="hazard" value="loose_gravel"/>
+</sign>
+
+<sign ref="PL:A-29" name="traffic signals" pl.name="sygnały świetlne"
+	long_name=""
+	pl.long_name="Znak ostrzega przed miejscem, w którym ruch jest kierowany za pomocą sygnalizacji świetlnej. Znak stosuje się:;;przed każdą sygnalizacją świetną poza obszarem zabudowanym,;przed pierwszą sygnalizacją w obszarze zabudowanych,;w każdym miejscu, gdzie sygnalizacja zastosowana została do kierowania ruchem wahadłowym,;w każdym miejscu, gdy sygnalizator jest tylko zawieszony nad jezdnią.;;;"
+	>
+	<tag key="hazard" value="traffic_signals"/>
+</sign>
+
+<sign ref="PL:A-30" name="inne niebezpieczeństwo" pl.name="inne niebezpieczeństwo"
+	long_name=""
+	pl.long_name="Znak ostrzega przed niebezpieczeństwem innego rodzaju niż określone pozostałymi znakami ostrzegawczymi. Umieszczona pod znakiem tabliczka wskazuje rodzaj niebezpieczeństwa za pomocą symbolu lub napisu. Ze znakiem A-30 najczęściej stosowane są następujące tabliczki:;;T-10 'tabliczka wskazująca bocznicę kolejową lub tor o podobnym charakterze' - w miejscu tak oznakowanym ruch na drodze jest wstrzymywany przez pracownika kolei podczas przejeżdżania (przetaczania) pociągu,;T-11 'tabliczka wskazująca przeprawę promową',;T-12 'tabliczka wskazująca podłużny uskok nawierzchni',;T-13 'tabliczka wskazująca odcinek drogi, na którym występują deformacje nawierzchni w postaci kolein',;T-14 'tabliczka wskazująca miejsce częstych wypadków o charakterze wskazanym na tabliczce',;T-15 'tabliczka wskazująca miejsce częstych wypadków spowodowanych śliską nawierzchnią jezdni ze względu na opady deszczu',;T-16 'tabliczka wskazująca miejsce wyjazdu pojazdów uprzywilejowanych wskazanych na tabliczce',;T-17 'tabliczka wskazująca granicę państwa',;T-18 'tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu o przebiegu wskazanym na tabliczce'.;;;"
+	>
+	<supplementary id="PL:T-10"/>
+	<supplementary id="PL:T-11"/>
+	<supplementary id="PL:T-12"/>
+	<supplementary id="PL:T-13"/>
+	<supplementary id="PL:T-14"/>
+	<supplementary id="PL:T-14a"/>
+	<supplementary id="PL:T-14b"/>
+	<supplementary id="PL:T-15"/>
+	<supplementary id="PL:T-16"/>
+	<supplementary id="PL:T-16a"/>
+	<supplementary id="PL:T-17"/>
+	<supplementary id="PL:T-18"/>
+</sign>
+
+<sign ref="PL:A-31" name="hazardous roadside" pl.name="niebezpieczne pobocze"
+	long_name=""
+	pl.long_name="Znak ostrzega przed niebezpiecznym poboczem (wąskim, miękkim, zbyt wysokim lub obniżonym) lub końcem pobocza bitumicznego przechodzącego w ziemne. Znak z odwróconym symbolem ostrzega o niebezpiecznym poboczu występującym po lewej stronie drogi.;Odmiany A-31:;;;znak;Informacja;;"
+	>
+	<tag key="hazard" value="roadside"/>
+</sign>
+
+<sign ref="PL:A-31a" name="hazardous left roadside" pl.name="niebezpieczne pobocze po lewej stronie"
+	>
+	<tag key="hazard" value="roadside_left"/>
+</sign>
+
+<sign ref="PL:A-32" name="frost on the roadway" pl.name="oszronienie jezdni"
+	long_name=""
+	pl.long_name="Znak ostrzega przed mogącym występować na drodze oszronieniem jezdni lub gołoledzią. Stosowany jest wyłącznie w okresie zimowym przed mostami i wiaduktami, na których oszronienie jezdni lub gołoledź pojawia się, gdy nie występuje jeszcze na innych odcinkach drogi oraz w pobliżu rzek i zbiorników wodnych.;"
+	>
+	<tag key="hazard" value="frost"/>
+</sign>
+
+<sign ref="PL:A-33" name="traffic jam" pl.name="zator drogowy"
+	long_name=""
+	pl.long_name="Znak ostrzega przed częstym występowaniem zablokowania ruchu ze względu na natężenie ruchu pojazdów, gdy stojące pojazdy mogą nie zostać w porę dostrzeżone przez kierującego, np. przed skrzyżowaniem z sygnalizacją świetlną, gdy odcinek jezdni jest niewidoczny ze względu na zakręt lub wzniesienie.;"
+	>
+	<tag key="hazard" value="traffic_jam"/>
+</sign>
+
+<sign ref="PL:A-34" name="road accident" pl.name="wypadek drogowy"
+	long_name=""
+	pl.long_name="Znak ostrzega przed miejscem, w którym na skutek wypadku drogowego nastąpiło zablokowanie drogi lub znaczne utrudnienie ruchu pojazdów. Znak ustawiany jest przez służby zabezpieczające miejsce wypadku.;"
+	>
+	<tag key="hazard" value="accident"/>
+</sign>
+
+
+<sign ref="PL:D-1" name="droga z pierwszeństwem" pl.name="droga z pierwszeństwem"
+	long_name=""
+	pl.long_name="Oznacza początek lub kontynuację drogi z pierwszeństwem. Znak posiada dwie wersje różniące się wielkością:;;o długości boku 600 lub 900 mm – umieszczaną na początku drogi z pierwszeństwem w obszarze zabudowanym oraz przed każdym skrzyżowaniem na który droga z pierwszeństwem zmienia kierunek wraz tabliczkami T-6a albo T-6b wskazującymi odpowiednio rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie lub układ dróg podporządkowanych (gruba linia na tabliczkach oznacza drogę z pierwszeństwem) w odległości do 50 m od skrzyżowania.;o długości boku 400 mm – powtarzaną przed skrzyżowaniami wzdłuż drogi z pierwszeństwem.;;;"
+	>
+	<supplementary id="PL:T-6a"/>
+	<supplementary id="PL:T-6b"/>
+</sign>
+
+<sign ref="PL:D-2" name="koniec drogi z pierwszeństwem" pl.name="koniec drogi z pierwszeństwem"
+	long_name=""
+	pl.long_name="Oznacza odwołanie pierwszeństwa nadanego znakiem drogi D-1 droga z pierwszeństwem przed skrzyżowaniem z inną drogą z pierwszeństwem, skrzyżowaniem równorzędnym lub skrzyżowaniem o ruchu okrężnym.;"
+	>
+</sign>
+
+<sign ref="PL:D-3" name="oneway" pl.name="droga jednokierunkowa"
+	long_name=""
+	pl.long_name="Oznacza początek lub kontynuację drogi lub jezdni, na której ruch odbywa się w jednym kierunku. Umieszczona pod znakiem tabliczka T-22 wskazuje, że ruch rowerów jednośladowych na wyznaczonym na jezdni pasie ruchu przeznaczonym dla tych pojazdów odbywa się w kierunku przeciwnym do wskazanego na znaku.;"
+	wiki="Key:oneway"
+	>
+	<tag key="oneway" value="yes" ident="onew"/>
+	<supplementary id="PL:T-22"/>
+</sign>
+
+<sign ref="PL:D-4a" name="droga bez przejazdu" pl.name="droga bez przejazdu"
+	long_name=""
+	pl.long_name="Oznacza początek drogi, której przeciwległy koniec nie ma połączenia z inną drogą lub wjazd do zamkniętego obszaru, z którego wyjazd jest możliwy tylko w tym samym miejscu.;"
+	wiki="Key:noexit"
+	>
+	<tag key="noexit" value="yes"/>
+</sign>
+
+<sign ref="PL:D-4b" name="wjazd na drogę bez przejazdu" pl.name="wjazd na drogę bez przejazdu"
+	long_name=""
+	pl.long_name="Oznacza, że droga za skrzyżowaniem jest drogą bez przejazdu.;Odmiany D-4b:;;;znak;Informacja;;"
+	>
+</sign>
+
+<sign ref="PL:D-4c" name="wjazd na drogę bez przejazdu z lewej strony" pl.name="wjazd na drogę bez przejazdu z lewej strony"
+	>
+</sign>
+
+<sign ref="PL:D-5" name="pierwszeństwo na zwężonym odcinku jezdni" pl.name="pierwszeństwo na zwężonym odcinku jezdni"
+	long_name=""
+	pl.long_name="Oznacza, że kierujący przejeżdżają lub przechodzą przed kierującymi zbliżającymi się z kierunku przeciwnego.;Po przeciwnej stronie zwężenia ustawiany jest znak B-31 pierwszeństwo dla nadjeżdżających z przeciwka. Taka organizacja ruchu wprowadzana jest na zwężonych odcinkach krótszych niż 150 m, gdzie nie mogą wyminąć się pojazdy o szerokości 2,5 m oraz gdy kierujący mają dobrą widoczność pojazdów nadjeżdżających z przeciwka.;;"
+	>
+</sign>
+
+<sign ref="PL:D-6" name="przejście dla pieszych" pl.name="przejście dla pieszych"
+	long_name=""
+	pl.long_name="Onacza miejsce przeznaczone do przechodzenia pieszych w poprzek drogi. Znak umieszcza się bezpośrednio przed przejściem dla pieszych oznaczonym znakiem poziomym P-10. Kierujący pojazdem zbliżający się do miejsca oznaczonego znakiem jest obowiązany zmniejszyć prędkość tak, aby nie narazić na niebezpieczeństwo pieszych znajdujących się w tych miejscach lub na nie wchodzących. Umieszczona pod znakiem tabliczka T-27 wskazuje, że przejście dla pieszych jest szczególnie uczęszczane przez dzieci.;"
+	wiki="Tag:highway=crossing"
+	>
+	<tag key="highway" value="crossing"/>
+	<supplementary id="PL:T-27"/>
+</sign>
+
+<sign ref="PL:D-6a" name="przejazd dla rowerzystów" pl.name="przejazd dla rowerzystów"
+	long_name=""
+	pl.long_name="Oznacza miejsce przeznaczone do przejeżdżania rowerzystów w poprzek drogi. Znak umieszcza się bezpośrednio przed przejazdem dla rowerzystów oznaczonym znakiem poziomym P-11. Kierujący pojazdem zbliżający się do miejsca oznaczonego znakiem jest obowiązany zmniejszyć prędkość tak, aby nie narazić na niebezpieczeństwo rowerzystów znajdujących się w tych miejscach lub na nie wjeżdżających.;"
+	wiki="Tag:highway=crossing"
+	>
+	<tag key="highway" value="crossing"/>
+</sign>
+
+<sign ref="PL:D-6b" name="przejście dla pieszych i przejazd dla rowerzystów" pl.name="przejście dla pieszych i przejazd dla rowerzystów"
+	long_name=""
+	pl.long_name="Oznacza miejsce przeznaczone do przechodzenia pieszych i przejeżdżania rowerzystów w poprzek drogi. Znak umieszcza się bezpośrednio przed przejazd dla rowerzystów i przejazdem dla rowerzystów znajdującymi się obok siebie. Kierujący pojazdem zbliżający się do miejsca oznaczonego znakiem jest obowiązany zmniejszyć prędkość tak, aby nie narazić na niebezpieczeństwo pieszych znajdujących się w tych miejscach lub na nie wchodzących oraz rowerzystów znajdujących się w tych miejscach lub na nie wjeżdżających. Umieszczona pod znakiem tabliczka T-27 wskazuje, że przejście dla pieszych jest szczególnie uczęszczane przez dzieci.;"
+	wiki="Tag:highway=crossing"
+	>
+	<tag key="highway" value="crossing"/>
+	<supplementary id="PL:T-27"/>
+</sign>
+
+<sign ref="PL:D-7" name="droga ekspresowa" pl.name="droga ekspresowa"
+	long_name=""
+	pl.long_name="Oznacza początek lub kontynuację drogi ekspresowej. Umieszczona pod znakiem tabliczka T-1a wskazuje odległość do początku drogi. Umieszczona pod znakiem tabliczka T-28 wskazuje, że za przejazd pobierane są opłaty.;"
+	>
+	<supplementary id="PL:T-1a"/>
+	<supplementary id="PL:T-28"/>
+</sign>
+
+<sign ref="PL:D-8" name="koniec drogi ekspresowej" pl.name="koniec drogi ekspresowej"
+	long_name=""
+	pl.long_name="Oznacza koniec drogi ekspresowej. Umieszczona pod znakiem tabliczka T-1a wskazuje odległość do końca drogi.;"
+	>
+	<supplementary id="PL:T-1a"/>
+</sign>
+
+<sign ref="PL:D-9" name="autostrada" pl.name="autostrada"
+	long_name=""
+	pl.long_name="Oznacza początek lub kontynuację autostrady. Umieszczona pod znakiem tabliczka T-1a wskazuje odległość do początku autostrady. Umieszczona pod znakiem tabliczka T-28 wskazuje, że za przejazd pobierane są opłaty.;"
+	>
+	<supplementary id="PL:T-1a"/>
+	<supplementary id="PL:T-28"/>
+</sign>
+
+<sign ref="PL:D-10" name="koniec autostrady" pl.name="koniec autostrady"
+	long_name=""
+	pl.long_name="Oznacza koniec autostrady. Umieszczona pod znakiem tabliczka T-1a wskazuje odległość do końca autostrady.;"
+	>
+	<supplementary id="PL:T-1a"/>
+</sign>
+
+<sign ref="PL:D-11" name="początek pasa ruchu dla autobusów" pl.name="początek pasa ruchu dla autobusów"
+	long_name=""
+	pl.long_name="Oznacza początek pasa ruchu przeznaczonego tylko dla autobusów i trolejbusów oraz innych pojazdów wykonujących odpłatny przewóz osób na regularnych liniach. Jeżeli na pasie dopuszczony jest ruch innych pojazdów, na znaku umieszczony jest odpowidni napis, np. TAXI, co oznacza, że na pasie oznaczonym tym znakiem jest dopuszczony także ruch taksówek.;Wyznaczanie pasów ruchu dla autobusów i trolejbusów ma na celu poprawienie sprawności kursowania tych pojazdów na zatłoczonych ulicach.;;"
+	>
+</sign>
+
+<sign ref="PL:D-12" name="pas ruchu dla autobusów" pl.name="pas ruchu dla autobusów"
+	long_name=""
+	pl.long_name="Oznacza kontynuację pasa ruchu dla autobusów i innych pojazdów wykonującymi odpłatny przewóz na regularnych liniach. Znak D-12 z tabliczką T-3a oznacza koniec pasa ruchu przed znajdujący się przed skrzyżowaniem.;"
+	>
+	<!-- ident="info" -->
+	<supplementary id="PL:T-3a"/>
+</sign>
+
+<sign ref="PL:D-13[$val]" id="PL:D-13" name="początek pasa ruchu powolnego" pl.name="początek pasa ruchu powolnego"
+	long_name=""
+	pl.long_name="Oznacza początek pasa ruchu, z którego są obowiązani korzystać kierujący pojazdami nieosiągającymi na wzniesieniu minimalnej prędkości określonej na znaku liczbą kilometrów na godzinę. Umieszczona pod znakiem tabliczka T-1a wskazuje odległość do początku pasa ruchu.;"
+	>
+	<parameter ident="val" input="textfield" suffix="km/h" default="30" field_width="2"/>
+	<supplementary id="PL:T-1a"/>
+</sign>
+
+<sign ref="PL:D-13a" name="początek pasa ruchu" pl.name="początek pasa ruchu"
+	long_name=""
+	pl.long_name="Oznacza początek pasa ruchu po stronie wskazanej na znaku. Umieszczona pod znakiem tabliczka T-1a wskazuje odległość do początku lub końca pasa ruchu.;"
+	>
+	<supplementary id="PL:T-1a"/>
+</sign>
+
+<sign ref="PL:D-14" name="koniec pasa ruchu" pl.name="koniec pasa ruchu"
+	long_name=""
+	pl.long_name="Oznacza koniec skrajnego pasa ruchu, znajdującego się po stronie wskazanej na znaku. Znak D-14 umieszczony przy pasie ruchu powolnego oznacza koniec tego pasa ruchu. Umieszczona pod znakiem tabliczka T-1a wskazuje odległość do początku lub końca pasa ruchu.;"
+	>
+	<supplementary id="PL:T-1a"/>
+</sign>
+
+<sign ref="PL:D-15" name="przystanek autobusowy" pl.name="przystanek autobusowy"
+	long_name=""
+	pl.long_name="Oznacza miejsce zatrzymywania się wskazanych na znaku pojazdów wykonujących odpłatny przewóz osób na regularnych liniach. Oznacza ponadto miejsce do zatrzymywania się innych niż autobus pojazdów samochodowych wykonujących odpłatny przewóz osób na regularnych liniach i pojazdów przeznaczonych do przewozu dzieci do szkół i przedszkoli.;"
+	>
+</sign>
+
+<sign ref="PL:D-16" name="przystanek trolejbusowy" pl.name="przystanek trolejbusowy"
+	long_name=""
+	pl.long_name="Oznacza miejsce zatrzymywania się wskazanych na znaku pojazdów wykonujących odpłatny przewóz osób na regularnych liniach.;"
+	>
+</sign>
+
+<sign ref="PL:D-17" name="przystanek tramwajowy" pl.name="przystanek tramwajowy"
+	long_name=""
+	pl.long_name="Oznacza miejsce zatrzymywania się wskazanych na znaku pojazdów wykonujących odpłatny przewóz osób na regularnych liniach.;"
+	>
+</sign>
+
+<sign ref="PL:D-18" name="parking" pl.name="parking"
+	long_name=""
+	pl.long_name="Oznacza miejsce przeznaczone na postój pojazdów (zespołów pojazdów), z wyjątkiem przyczep kempingowych; umieszczona pod znakiem tabliczka T-23e oznacza, że na parkingu jest dopuszczony także postój przyczep kempingowych. Umieszczona pod znakiem D-18 tabliczka T-30 wskazuje sposób ustawienia pojazdu względem krawędzi jezdni (oznaczonej na tabliczce barwą szarą) oraz że miejsce jest przeznaczone dla pojazdów samochodowych o dopuszczalnej masie całkowitej nieprzekraczającej 2,5 t. Umieszczona pod znakiem D-18 tabliczka T-3a wskazuje koniec miejsca przeznaczonego na postój. Umieszczona pod znakiem tabliczka T-29 informuje o miejscu przeznaczonym dla pojazdu samochodowego uprawnionej osoby niepełnosprawnej o obniżonej sprawności ruchowej oraz dla kierującego pojazdem przewożącego taką osobę. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	wiki="Tag:amenity=parking"
+	>
+	<tag key="amenity" value="parking" ident="info"/>
+	<supplementary id="PL:T-23e"/>
+	<supplementary id="PL:T-30"/>
+	<supplementary id="PL:T-30a"/>
+	<supplementary id="PL:T-30b"/>
+	<supplementary id="PL:T-30c"/>
+	<supplementary id="PL:T-30d"/>
+	<supplementary id="PL:T-30e"/>
+	<supplementary id="PL:T-30f"/>
+	<supplementary id="PL:T-30g"/>
+	<supplementary id="PL:T-30h"/>
+	<supplementary id="PL:T-30i"/>
+	<supplementary id="PL:T-3a"/>
+	<supplementary id="PL:T-29"/>
+</sign>
+
+<sign ref="PL:D-18a" name="parking - miejsce zastrzeżone" pl.name="parking - miejsce zastrzeżone"
+	long_name=""
+	pl.long_name="Oznacza miejsce przeznaczone na postój pojazdu uprawnionej osoby. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-18b" name="parking zadaszony" pl.name="parking zadaszony"
+	long_name=""
+	pl.long_name="Oznacza zadaszone miejsce przeznaczone na postój pojazdów (np. znajdujące się w budynku lub pod wiatą). Umieszczona pod znakiem tabliczka T-29 informuje o miejscu przeznaczonym dla pojazdu samochodowego uprawnionej osoby niepełnosprawnej o obniżonej sprawności ruchowej oraz dla kierującego pojazdem przewożącego taką osobę. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+	<supplementary id="PL:T-29"/>
+</sign>
+
+<sign ref="PL:D-19" name="postój taksówek" pl.name="postój taksówek"
+	long_name=""
+	pl.long_name="Oznacza miejsce przeznaczone na postój taksówek osobowych, z wyjątkiem taksówek zajętych. Umieszczony dodatkowo na znaku napis 'Bagażowe' wskazuje, że znak ten dotyczy taksówek bagażowych. Jeśli na postoju taksówek nie umieszczono znaku D-20, to kończy się on w odległości nie większej niż 20m przed znakiem D-19.;Odmiany D-19:;;;znak;Informacja;;"
+	>
+	<tag key="taxi" value="yes" />
+</sign>
+
+<sign ref="PL:D-19a" name="postój taksówek bagażowych" pl.name="postój taksówek bagażowych"
+	>
+</sign>
+
+<sign ref="PL:D-20" name="koniec postoju taksówek" pl.name="koniec postoju taksówek"
+	long_name=""
+	pl.long_name="Oznacza miejsce, w którym kończy się postój taksówek. Umieszczony dodatkowo na znaku napis 'Bagażowe' wskazuje, że znak ten dotyczy taksówek bagażowych.;Odmiany D-20:;;;znak;Informacja;;"
+	>
+	<tag key="taxi" value="no" />
+</sign>
+
+<sign ref="PL:D-20a" name="koniec postoju taksówek bagażowych" pl.name="koniec postoju taksówek bagażowych"
+	>
+</sign>
+
+<sign ref="PL:D-21" name="szpital" pl.name="szpital"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-21a" name="policja" pl.name="policja"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-22" name="punkt opatrunkowy" pl.name="punkt opatrunkowy"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-23" name="stacja paliwowa" pl.name="stacja paliwowa"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Umieszczony w dolnej części znaku napis 'LPG GAZ' informuje, że stacja prowadzi także sprzedaż gazu do napędu pojazdów. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-23a" name="stacja paliwowa tylko z gazem do napędu pojazdów" pl.name="stacja paliwowa tylko z gazem do napędu pojazdów"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-24" name="telefon" pl.name="telefon"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-25" name="poczta" pl.name="poczta"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Umieszczony na znaku symbol słuchawki telefonicznej informuje, że na poczcie znajduje się ogólnodostępny telefon. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-26" name="stacja obsługi technicznej" pl.name="stacja obsługi technicznej"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-26a" name="wulkanizacja" pl.name="wulkanizacja"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-26b" name="" pl.name=""
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-26c" name="toaleta publiczna" pl.name="toaleta publiczna"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Umieszczony w dolnej części znaku napis BUS informuje o możliwości opróżniania toalet zainstalowanych w pojazdach. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-26d" name="natrysk" pl.name="natrysk"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-27" name="bufet lub kawiarnia" pl.name="bufet lub kawiarnia"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-28" name="restauracja" pl.name="restauracja"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-29" name="Hotel (motel)" pl.name="Hotel (motel)"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni, znak informuje również o innych miejscach noclegowych.;"
+	>
+</sign>
+
+<sign ref="PL:D-30" name="Obozowisko (camping)" pl.name="Obozowisko (camping)"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-31" name="obozowisko (camping) wyposażone w podłączenia elektryczne dla przyczep kempingowych" pl.name="obozowisko (camping) wyposażone w podłączenia elektryczne dla przyczep kempingowych"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-32" name="pole biwakowe" pl.name="pole biwakowe"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-33" name="schronisko młodzieżowe" pl.name="schronisko młodzieżowe"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-34" name="punkt informacji turystycznej" pl.name="punkt informacji turystycznej"
+	long_name=""
+	pl.long_name="Informuje o wskazanym na znaku obiekcie znajdującym się przy drodze. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-34a[Radio $val1 $val2 MHz]" id="PL:D-34a" name="informacja radiowa o ruchu drogowym" pl.name="informacja radiowa o ruchu drogowym"
+	long_name=""
+	pl.long_name="Iinformuje o stacjach radiowych podających informacje o warunkach ruchu drogowego.;"
+	>
+	<parameter ident="val1" input="textfield" prefix="Radio" default="" field_width="4"/>
+	<parameter ident="val2" input="textfield" suffix="MHz" default="" field_width="4"/>
+</sign>
+
+<sign ref="PL:D-35" name="przejście podziemne dla pieszych" pl.name="przejście podziemne dla pieszych"
+	long_name=""
+	pl.long_name="Informuje o możliwości przechodzenia pieszych na drugą stronę drogi gdy przejście mieści się pod nią, oraz że w ten sposób jest bezpieczniej.;"
+	>
+</sign>
+
+<sign ref="PL:D-35a" name="schody ruchome w dół" pl.name="schody ruchome w dół"
+	long_name=""
+	pl.long_name="Jest tym samym znakiem co D-35 lecz posiada ruchome schody.;"
+	>
+</sign>
+
+<sign ref="PL:D-36" name="przejście nadziemne dla pieszych" pl.name="przejście nadziemne dla pieszych"
+	long_name=""
+	pl.long_name="Informuje o możliwości przechodzenia pieszych na drugą stronę drogi gdy przejście mieści się nad nią, oraz że w ten sposób jest bezpieczniej.;"
+	>
+</sign>
+
+<sign ref="PL:D-36a" name="schody ruchome w górę" pl.name="schody ruchome w górę"
+	long_name=""
+	pl.long_name="Jest tym samym znakiem co D-36 lecz posiada ruchome schody.;"
+	>
+</sign>
+
+<sign ref="PL:D-37" name="Tunnel" pl.name="tunel"
+	long_name=""
+	pl.long_name="Oznacza wjazd do tunelu, nakazuje jeszcze włączenie w pojeździe przednich świateł mijania.;"
+	>
+	<tag key="tunnel" value="yes"/>
+</sign>
+
+<sign ref="PL:D-38" name="koniec tunelu" pl.name="koniec tunelu"
+	long_name=""
+	pl.long_name="Oznacza wyjazd z tunelu.;"
+	>
+</sign>
+
+<sign ref="PL:D-39" name="dopuszczalne prędkości" pl.name="dopuszczalne prędkości"
+	long_name=""
+	pl.long_name="Informuje o dopuszczalnych prędkościach obowiązujących na terytorium Rzeczypospolitej Polskiej. Na przejściu granicznym mogą być także umieszczone tablice z napisami lub symbolami, podające informacje o obowiązujących na terytorium naszego państwa przepisach ruchu drogowego.;"
+	>
+</sign>
+
+<sign ref="PL:D-39a" name="opłaty drogowe" pl.name="opłaty drogowe"
+	long_name=""
+	pl.long_name="Informuje o płatnościach drogowych na terytorium Rzeczypospolitej Polskiej.;"
+	>
+</sign>
+
+<sign ref="PL:D-40" name="Pedestrian zone" pl.name="strefa zamieszkania"
+	long_name=""
+	pl.long_name="Oznacza wjazd do strefy zamieszkania. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni. Informuje ponadto, że umieszczone w tej strefie urządzenia wymuszające powolną jazdę (progi zwalniające) mogą nie być oznakowane znakami ostrzegawczymi."
+	wiki="Tag:highway%3Dpedestrian"
+	>
+	<tag key="highway" value="living_street"/>
+</sign>
+
+<sign ref="PL:D-41" name="koniec strefy zamieszkania" pl.name="koniec strefy zamieszkania"
+	long_name=""
+	pl.long_name="Oznacza wyjazd ze strefy zamieszkania. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-42" name="obszar zabudowany" pl.name="obszar zabudowany"
+	long_name=""
+	pl.long_name="Oznacza wjazd na obszar zabudowany.;Do dnia 31 grudnia 2005 roku tablica z białym tłem oraz czarnym obrzeżem i napisem określającym nazwę miejscowości miała takie samo znaczenie, jak znak D-42. Obecnie tablica taka nie ma żadnej wykładni prawnej.;;"
+	>
+</sign>
+
+<sign ref="PL:D-43" name="koniec obszaru zabudowanego" pl.name="koniec obszaru zabudowanego"
+	long_name=""
+	pl.long_name="Oznacza wyjazd z obszaru zabudowanego.;Do dnia 31 grudnia 2005 roku tablica z białym tłem oraz czarnym obrzeżem i napisem określającym nazwę miejscowości, przekreślona czerwoną linią, miała takie samo znaczenie, jak znak D-43. Obecnie tablica taka nie ma żadnej wykładni prawnej.;;"
+	>
+</sign>
+
+<sign ref="PL:D-44[$val_on-$val_off]" id="PL:D-44" name="strefa parkowania" pl.name="strefa parkowania"
+	long_name=""
+	pl.long_name="Oznacza wjazd do strefy, w której za postój pojazdu jest pobierana opłata. W strefie tej zabroniony jest postój pojazdu bez wniesienia opłaty, z wyjątkiem postoju pojazdów osób lub jednostek, dla których ustalona została zerowa stawka opłaty, oraz postoju pojazdów komunikacji publicznej na wyznaczonych dla nich miejscach.;"
+	>
+	<tag key="time_on" value="$val_on"/>
+	<tag key="time_off" value="$val_off"/>
+	<parameter ident="val_on" input="textfield" prefix="od" default="7" field_width="2"/>
+	<parameter ident="val_off" input="textfield" prefix="do" default="18" field_width="2"/>
+</sign>
+
+<sign ref="PL:D-45" name="koniec strefy parkowania" pl.name="koniec strefy parkowania"
+	long_name=""
+	pl.long_name="Oznacza wyjazd ze strefy parkowania.;"
+	>
+</sign>
+
+<sign ref="PL:D-46" name="droga wewnętrzna" pl.name="droga wewnętrzna"
+	long_name=""
+	pl.long_name="Oznacza początek ogólnodostępnej drogi niepublicznej; napis umieszczony na znaku wskazuje zarządcę tej drogi. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-47" name="koniec drogi wewnętrznej" pl.name="koniec drogi wewnętrznej"
+	long_name=""
+	pl.long_name="Oznacza wyjazd z drogi wewnętrznej na drogę publiczną. Znak może być umieszczony w innym miejscu niż po prawej stronie jezdni.;"
+	>
+</sign>
+
+<sign ref="PL:D-48[$val]" id="PL:D-48" name="zmiana pierwszeństwa" pl.name="zmiana pierwszeństwa"
+	long_name=""
+	pl.long_name="Uprzedza o mającej nastąpić lub niedawno wprowadzonej zmianie obowiązujących dotychczas zasad pierwszeństwa na najbliższym skrzyżowaniu; umieszczony pod znakiem napis określa datę wprowadzenia nowej zasady pierwszeństwa pokazanej znakami A-5, A-6a, A-6b, A-6c, A-7, A-30, B-20, B-31, D-1 i D-5.;Odmiany D-20:;;;znak;Informacja;;"
+	>
+	<parameter ident="val" input="textfield" prefix="znak:" default="PL:A-5" field_width="5"/>
+</sign>
+
+<sign ref="PL:D-48a" name="zmiana pierwszeństwa z trójkątem wskazujący wlot podporządkowany" pl.name="zmiana pierwszeństwa z trójkątem wskazujący wlot podporządkowany"
+	>
+</sign>
+
+<sign ref="PL:D-49" name="pobór opłat" pl.name="pobór opłat"
+	long_name=""
+	pl.long_name="Uprzedza o miejscu, w którym są pobierane opłaty za przejazd.;"
+	>
+</sign>
+
+<sign ref="PL:D-50" name="zatoka" pl.name="zatoka"
+	long_name=""
+	pl.long_name="Informuje o zatoce występującej w tunelu. Umieszczona pod znakiem tabliczka T-33 lub umieszczony na znaku napis SOS informuje, że w zatoce znajduje się telefon alarmowy i gaśnica.;"
+	wiki="Tag:highway=emergency bay"
+	>
+	<tag key="highway" value="emergency_bay"/>
+	<supplementary id="PL:T-33"/>
+</sign>
+
+<sign ref="PL:D-51" name="automatyczna kontrola prędkości" pl.name="automatyczna kontrola prędkości"
+	long_name=""
+	pl.long_name="Uprzedza o miejscu lub odcinku drogi, na którym prędkość jazdy jest kontrolowana i rejestrowana przez urządzenia działające samoczynnie.;"
+	>
+</sign>
+
+<sign ref="PL:D-52" name="strefa ruchu" pl.name="strefa ruchu"
+	long_name=""
+	pl.long_name="Stosuje się w celu oznakowania strefy ruchu. Znak ten umieszcza się na początku strefy ruchu na wszystkich drogach droprowadzających do niej ruch. Decyzję o ustaleniu takiej strefy podejmuje zarządca (czyli właściciel) terenu, na którym położona jest strefa ruchu. W strefie ruchu stosuje się znaki takie jak na drogach wewnętrznych.;"
+	>
+</sign>
+
+<sign ref="PL:D-53" name="koniec strefy ruchu" pl.name="koniec strefy ruchu"
+	long_name=""
+	pl.long_name="Stosuje się w celu wyjazdu pojazdu z drogi wewnętrznej położonej w strefie ruchu położoną na drogę publiczną zarządzaną przez administrację rządową lub samorządową. Znak ten umieszcza się na wszystkich drogach wylotowych ze strefy oznakowanej znakami D-52,w tym samym przekroju poprzecznym drogi co znak D-52. Znak ten może być umieszczany po lewej stronie jezdni, na odwrotnej stronie znaku D-52.;"
+	>
+</sign>
+
+
+<sign ref="PL:T-1[$val]" id="PL:T-1" name="tabliczka wskazująca odległość znaku ostrzegawczego od miejsca niebezpiecznego" pl.name="tabliczka wskazująca odległość znaku ostrzegawczego od miejsca niebezpiecznego"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje odległość od danego miejsca niebezpiecznego. Stosowana do znaków ostrzegawczych wskazujących niebezpieczeństwo występujące pojedynczo, gdy znak nie został ustawiony w określonej w Rozporządzenie w sprawie znaków i sygnałów drogowych odległości od miejsca niebezpiecznego.;"
+	>
+	<parameter ident="val" input="textfield" default="100" suffix="m" field_width="3"/>
+	<tag tag_ref="yield" append_value=""/>
+</sign>
+
+<sign ref="PL:T-1a[$val]" id="PL:T-1a" name="tabliczka wskazująca odległość znaku informacyjnego od początku (końca) drogi lub pasa ruchu" pl.name="tabliczka wskazująca odległość znaku informacyjnego od początku (końca) drogi lub pasa ruchu"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje odległość do miejsca początku lub końca drogi lub pasa ruchu. Stosowana jest wraz z następującymi znakami informacyjnymi: D-7 droga ekspresowa, D-8 koniec drogi ekspresowej, D-9 autostrada, D-10 koniec autostrady, D-11 początek pasa ruchu dla autobusów, D-13 początek pasa ruchu powolnego, D-13a początek pasa ruchu, D-14 koniec pasa ruchu.;"
+	>
+	<parameter ident="val" input="textfield" default="100" suffix="m" field_width="3"/>
+</sign>
+
+<sign ref="PL:T-1b[$val]" id="PL:T-1b" name="tabliczka wskazująca długość tunelu lub odcinek drogi do końca tunelu" pl.name="tabliczka wskazująca długość tunelu lub odcinek drogi do końca tunelu"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka stosowana ze znakiem D-37. Umieszczona przed wjazdem do tunelu o długości powyżej 500 m wskazuje jego długość. W tunelu o długości przekraczającej 3000 m umieszczana jest samodzielnie co 1000 m i wskazuje długość odcinka do końca tunelu. Należy tu dodać, że najdłuższy obecnie tunel drogowy w Polsce (Tunel Wisłostrady) ma długość 900 m.;"
+	>
+	<parameter ident="val" input="textfield" default="1000" suffix="m" field_width="3"/>
+</sign>
+
+<sign ref="PL:T-2[$val]" id="PL:T-2" name="tabliczka wskazująca długość odcinka drogi, na którym powtarza się lub występuje niebezpieczeństwo" pl.name="tabliczka wskazująca długość odcinka drogi, na którym powtarza się lub występuje niebezpieczeństwo"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje długość odcinka drogi, na którym występuje wyrażone znakiem ostrzegawczym niebezpieczeństwo. Stosowana do znaków ostrzegawczych wskazujących niebezpieczeństwo występujące na pewnej długości, gdy długość wskazanego odcinka jest większa niż 500 m.;"
+	>
+	<parameter ident="val" input="textfield" default="3.5" suffix="km" field_width="3"/>
+</sign>
+
+<sign ref="PL:T-3" name="tabliczka wskazująca koniec odcinka, na którym powtarza się lub występuje niebezpieczeństwo" pl.name="tabliczka wskazująca koniec odcinka, na którym powtarza się lub występuje niebezpieczeństwo"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka umieszczona pod znakiem ostrzegawczym wskazuje koniec odcinka, na którym występowało niebezpieczeństwo.;"
+	>
+	<tag tag_ref="haz" append_value=""/>
+</sign>
+
+<sign ref="PL:T-3a" name="tabliczka wskazująca koniec miejsca przeznaczonego na postój" pl.name="tabliczka wskazująca koniec miejsca przeznaczonego na postój"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka stosowana ze znakami D-18 parking i D-18b parking zadaszony. Wskazuje koniec parkingu, szczególnie w przypadku parkingów wyznaczonych wzdłuż krawędzi jezdni.;"
+	>
+	<tag tag_ref="info" append_value=""/>
+</sign>
+
+<sign ref="PL:T-4[$val]" id="PL:T-4" name="tabliczka wskazująca liczbę zakrętów" pl.name="tabliczka wskazująca liczbę zakrętów"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje ilość zakrętów. Stosowana ze znakami A-3 niebezpieczne zakręty - pierwszy w prawo i A-4 niebezpieczne zakręty - pierwszy w lewo, gdy liczba wymagających oznakowania zakrętów jest większa niż dwa, a odległość pomiędzy nimi jest mniejsza niż 300 m.;"
+	>
+	<parameter ident="val" input="textfield" default="3" suffix="" field_width="3"/>
+</sign>
+
+<sign ref="PL:T-5" name="tabliczka wskazująca początek drogi krętej" pl.name="tabliczka wskazująca początek drogi krętej"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje drogę o krętości przekraczającej 160°/km. Stosowana ze znakami A-3 niebezpieczne zakręty - pierwszy w prawo i A-4 niebezpieczne zakręty - pierwszy w lewo.;"
+	>
+</sign>
+
+<sign ref="PL:T-6a" name="tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie (umieszczana na drodze z pierwszeństwem)" pl.name="tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie (umieszczana na drodze z pierwszeństwem)"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka, umieszczana na drodze z pierwszeństwem przed skrzyżowaniem z drogą podporządkowaną, wskazuje przebieg drogi pierwszeństwem (oznaczonej grubszą linią). Stosowana ze znakiem D-1 droga z pierwszeństwem, gdy droga z pierwszeństwem nie przebiega na wprost przez skrzyżowanie.;"
+	>
+</sign>
+
+<sign ref="PL:T-6b" name="tabliczka wskazująca układ dróg podporządkowanych (umieszczana na drodze z pierwszeństwem)" pl.name="tabliczka wskazująca układ dróg podporządkowanych (umieszczana na drodze z pierwszeństwem)"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka, umieszczana na drodze z pierwszeństwem, wskazuje niesymetryczny układ dróg podporządkowanych po obu stronach drogi z pierwszeństwem. Stosowana ze znakami A-6a skrzyżowanie z drogą podporządkowaną występującą po obu stronach i D-1 droga z pierwszeństwem.;"
+	>
+</sign>
+
+<sign ref="PL:T-6c" name="tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie (umieszczana na drodze podporządkowanej)" pl.name="tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie (umieszczana na drodze podporządkowanej)"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka, umieszczana na drodze podporządkowanej przed skrzyżowaniem z drogą z pierwszeństwem, wskazuje przebieg drogi pierwszeństwem (oznaczonej grubszą linią). Stosowana ze znakami A-7 ustąp pierwszeństwa i B-20 stop, gdy droga z pierwszeństwem nie przebiega na wprost przez skrzyżowanie.;"
+	>
+</sign>
+
+<sign ref="PL:T-6d" name="tabliczka wskazująca prostopadły przebieg drogi z pierwszeństwem przez skrzyżowanie oraz układ dróg podporządkowanych (umieszczana na drodze podporządkowanej)" pl.name="tabliczka wskazująca prostopadły przebieg drogi z pierwszeństwem przez skrzyżowanie oraz układ dróg podporządkowanych (umieszczana na drodze podporządkowanej)"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka, umieszczana na drodze podporządkowanej przed skrzyżowaniem z drogą z pierwszeństwem, wskazuje niesymetryczny układ dróg podporządkowanych po obu stronach drogi z pierwszeństwem. Stosowana ze znakami A-7 ustąp pierwszeństwa i B-20 stop.;"
+	>
+</sign>
+
+<sign ref="PL:T-7" name="tabliczka wskazująca układ torów i drogi na przejeździe" pl.name="tabliczka wskazująca układ torów i drogi na przejeździe"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje układ torów na przejeździe tramwajowym lub kolejowym. Stosowana ze znakami: A-9 przejazd kolejowy z zaporami, A-10 przejazd kolejowy bez zapór i A-21 tramwaj, ze względu na ostry kąt przecięcia się drogi z linią kolejową lub przebieg torów po łuku.;"
+	>
+</sign>
+
+<sign ref="PL:T-8" name="tabliczka wskazująca miejsce, w którym ruch pojazdów został skierowany na tory tramwajowe" pl.name="tabliczka wskazująca miejsce, w którym ruch pojazdów został skierowany na tory tramwajowe"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje miejsce, w którym pas ruchu jest skierowany na torowisko tramwajowe. Stosowana ze znakami A-21 tramwaj lub A-30 inne niebezpieczeństwo.;"
+	>
+</sign>
+
+<sign ref="PL:T-9[$val]" id="PL:T-9" name="tabliczka wskazująca rzeczywistą wielkość spadku lub wzniesienia drogi" pl.name="tabliczka wskazująca rzeczywistą wielkość spadku lub wzniesienia drogi"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka, stosowana ze znakami A-22 niebezpieczny zjazd i A-23 stromy podjazd wskazuje rzeczywistą wartość spadku w procentach tangensa kąta nachylenia drogi do poziomu.;"
+	>
+	<tag tag_ref="incl" append_value="$val%"/>
+	<parameter input="textfield" name="max. incline" pl.name="maksymalne pochylenie" type="int" ident="val" default="10" suffix="%" field_width="3"/>
+</sign>
+
+<sign ref="PL:T-10" name="tabliczka wskazująca bocznicę kolejową lub tor o podobnym charakterze" pl.name="tabliczka wskazująca bocznicę kolejową lub tor o podobnym charakterze"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje miejsce przecięcia drogi przez bocznicę kolejową, tor manewrowy lub linię kolejową wykorzystywaną sporadycznie. W czasie przetaczania pociągu ruch na drodze jest zatrzymywany przez pracownika kolei. Stosowana ze znakiem A-30 inne niebezpieczeństwo.;"
+	>
+</sign>
+
+<sign ref="PL:T-11" name="tabliczka wskazująca przeprawę promową" pl.name="tabliczka wskazująca przeprawę promową"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka umieszczana jest wraz ze znakiem A-30 inne niebezpieczeństwo przed dojazdem do przeprawy promowej.;"
+	>
+</sign>
+
+<sign ref="PL:T-12" name="tabliczka wskazująca podłużny uskok nawierzchni" pl.name="tabliczka wskazująca podłużny uskok nawierzchni"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka umieszczana jest wraz ze znakiem A-30 inne niebezpieczeństwo w miejscu, gdzie występuje podłużny uskok nawierzchni powstały podczas kładzenia nawierzchni drogi.;"
+	>
+</sign>
+
+<sign ref="PL:T-13" name="tabliczka wskazująca odcinek drogi, na którym występują deformacje nawierzchni w postaci kolein" pl.name="tabliczka wskazująca odcinek drogi, na którym występują deformacje nawierzchni w postaci kolein"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka umieszczana jest wraz ze znakiem A-30 inne niebezpieczeństwo przed odcinkiem jezdni, na nawierzchni której występują koleiny.;"
+	>
+</sign>
+
+<sign ref="PL:T-14" name="tabliczka wskazująca miejsce częstych wypadków o charakterze wskazanym na tabliczce" pl.name="tabliczka wskazująca miejsce częstych wypadków o charakterze wskazanym na tabliczce"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje miejsce szczególnie niebezpieczne, w którym w ciągu roku zdarzyły się co najmniej cztery wypadki o wskazanym charakterze z ofiarami w ludziach na odcinku drogi 0,5 km w obszarze zabudowanym lub 1 km poza obszarem zabudowanym. W przypadku przejazdów kolejowych jako niebezpieczne oznaczone są te, na których miały miejsce dwa wypadki w ciągu roku. Tabliczka posiada pięć odmian, stosowana jest ze znakiem A-30 inne niebezpieczeństwo.;Odmiany T-14:;;;znak;Informacja;;"
+	>
+</sign>
+
+<sign ref="PL:T-14a" name="tabliczka wskazująca miejsce częstych zderzeń z poprzedzającymi pojazdami" pl.name="tabliczka wskazująca miejsce częstych zderzeń z poprzedzającymi pojazdami"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-14b" name="tabliczka wskazująca miejsce częstych zderzeń czołowych" pl.name="tabliczka wskazująca miejsce częstych zderzeń czołowych"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-15" name="tabliczka wskazująca miejsce częstych wypadków spowodowanych śliską nawierzchnią jezdni ze względu na opady deszczu" pl.name="tabliczka wskazująca miejsce częstych wypadków spowodowanych śliską nawierzchnią jezdni ze względu na opady deszczu"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka umieszczana jest wraz ze znakiem A-30 inne niebezpieczeństwo w miejscu, gdzie dochodzi do częstych wypadków lub kolizji spowodowanych śliską nawierzchnią drogi występującą w czasie lub po opadach deszczu.;"
+	>
+</sign>
+
+<sign ref="PL:T-16" name="tabliczka wskazująca miejsce wyjazdu pojazdów uprzywilejowanych wskazanych na tabliczce" pl.name="tabliczka wskazująca miejsce wyjazdu pojazdów uprzywilejowanych wskazanych na tabliczce"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka umieszczana przed miejscami, w których pojazdy uprzywilejowane wyjeżdżają na drogę. Tabliczkę stosuje samodzielnie bezpośrednio przed miejscem wyjazdu, a także wraz ze znakiem A-30 inne niebezpieczeństwo w odległości obowiązującej dla znaków ostrzegawczych, zwłaszcza gdy w momencie wyjazdu pojazdów uprzywilejowanych uruchamiana jest specjalna sygnalizacja świetlna.;Odmiany T-16:;;;znak;Informacja;;"
+	>
+</sign>
+
+<sign ref="PL:T-16a" name="tabliczka wskazująca miejsce wyjazdu karetek pogotowia" pl.name="tabliczka wskazująca miejsce wyjazdu karetek pogotowia"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-17" name="tabliczka wskazująca granicę państwa" pl.name="tabliczka wskazująca granicę państwa"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka umieszczana jest wraz ze znakiem A-30 inne niebezpieczeństwo przed miejscem w którym droga przecina granicę państwa, niezależnie od tego, czy ruch przez granicę jest otwarty czy zamknięty.;"
+	>
+</sign>
+
+<sign ref="PL:T-18" name="tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu o przebiegu wskazanym na tabliczce" pl.name="tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu o przebiegu wskazanym na tabliczce"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje nieoczekiwaną zmianę kierunku ruchu lub przebiegu drogi. Tabliczka stosowana wraz ze znakiem A-30 inne niebezpieczeństwo.;Odmiany T-18:;;;znak;Informacja;;"
+	>
+</sign>
+
+
+<sign ref="PL:T-19" name="tabliczka wskazująca na malowanie znaków poziomych" pl.name="tabliczka wskazująca na malowanie znaków poziomych"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka umieszczana jest wraz ze znakiem A-14 roboty na drodze w czasie, gdy na drodze prowadzone są prace związane z umieszczaniem lub odnową znaków poziomych.;"
+	>
+</sign>
+
+<sign ref="PL:T-20[$val]" id="PL:T-20" name="tabliczka wskazująca długość odcinka jezdni, na którym zakaz obowiązuje" pl.name="tabliczka wskazująca długość odcinka jezdni, na którym zakaz obowiązuje"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje długość odcinka drogi, na którym obowiązuje zakaz. Stosowana do znaków zakazu: B-33 ograniczenie prędkości, B-35 zakaz postoju, B-36 zakaz zatrzymywania się, B-37 zakaz postoju w dni nieparzyste, B-38 zakaz postoju w dni parzyste, B-41 zakaz ruchu pieszych, gdy długość wskazanego odcinka nie przekracza 500 m.;"
+	>
+	<parameter ident="val" input="textfield" default="500" suffix="m" field_width="3"/>
+</sign>
+
+<sign ref="PL:T-21[$val]" id="PL:T-21" name="tabliczka wskazująca odległość znaku od miejsca, od którego lub w którym zakaz obowiązuje" pl.name="tabliczka wskazująca odległość znaku od miejsca, od którego lub w którym zakaz obowiązuje"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje odległość od miejsca, od którego obowiązuje zakaz. Stosowana do znaków zakazu, gdy znak nie został ustawiony w miejscu początku obowiązywania zakazu.;"
+	>
+	<parameter ident="val" input="textfield" default="50" suffix="m" field_width="3"/>
+</sign>
+
+<sign ref="PL:T-22" name="tabliczka wskazująca, że znak nie dotyczy rowerów jednośladowych" pl.name="tabliczka wskazująca, że znak nie dotyczy rowerów jednośladowych"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak zakazu nie dotyczy rowerów jednośladowych. Stosowana do znaków zakazu: B-1 zakaz ruchu w obu kierunkach, a także B-2 zakaz wjazdu, B-21 zakaz skręcania w lewo, B-22 zakaz skręcania w prawo, D-3 droga jednokierunkowa, gdy na drodze jednokierunkowej zastosowano kontrapas rowerowy.;"
+	>
+	<tag key="bicycle" value="yes"/>
+</sign>
+
+<sign ref="PL:T-23a" name="tabliczka wskazująca motocykle" pl.name="tabliczka wskazująca motocykle"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko motocykli. Stosowana do:;;znaków zakazu: B-25 zakaz wyprzedzania, B-33 ograniczenie prędkości,;znaków nakazu: od C-1 do C-11 oraz C-14 prędkość minimalna i C-18 nakaz używania łańcuchów przeciwpoślizgowych,;znaków informacyjnych: D-18 parking, D-18a parking - miejsce zastrzeżone, D-18b parking zadaszony.;;;"
+	>
+	<tag tag_ref="restriction" condition="motorcycle"/>
+</sign>
+
+<sign ref="PL:T-23b" name="Heavy goods vehicles only" pl.name="tabliczka wskazująca samochody ciężarowe, pojazdy specjalne, pojazdy używane do celów specjalnych, o dopuszczalnej masie całkowitej przekraczającej 3,5 t, oraz ciągniki samochodowe"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko wymienionych rodzajów pojazdów. Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j.;"
+	>
+	<tag tag_ref="restriction" condition="hgv"/>
+</sign>
+
+<sign ref="PL:T-23c" name="tabliczka wskazująca ciągniki rolnicze i pojazdy wolnobieżne" pl.name="tabliczka wskazująca ciągniki rolnicze i pojazdy wolnobieżne"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko ciągników rolniczych i pojazdów wolnobieżnych. Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j.;"
+	>
+</sign>
+
+<sign ref="PL:T-23d" name="tabliczka wskazująca pojazdy silnikowe z przyczepą, z wyjątkiem pojazdów z przyczepą jednoosiową lub naczepą" pl.name="tabliczka wskazująca pojazdy silnikowe z przyczepą, z wyjątkiem pojazdów z przyczepą jednoosiową lub naczepą"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko pojazdy silnikowe z przyczepą wieloosiową. Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j.;"
+	>
+	<tag tag_ref="restriction" condition="articulated"/>
+</sign>
+
+<sign ref="PL:T-23e" name="tabliczka wskazująca pojazdy z przyczepą kempingową" pl.name="tabliczka wskazująca pojazdy z przyczepą kempingową"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko pojazdy z przyczepą kempingową. Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j.;"
+	wiki="Key:caravan"
+	>
+	<tag tag_ref="restriction" condition="caravan"/>
+</sign>
+
+<sign ref="PL:T-23f" name="tabliczka wskazująca autobusy" pl.name="tabliczka wskazująca autobusy"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko autobusów. Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j.;"
+	wiki="Key:psv"
+	>
+	<tag tag_ref="restriction" condition="psv"/>
+</sign>
+
+<sign ref="PL:T-23g" name="tabliczka wskazująca trolejbusy" pl.name="tabliczka wskazująca trolejbusy"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko trolejbusów. Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j.;"
+	>
+</sign>
+
+<sign ref="PL:T-23h" name="tabliczka wskazująca pojazdy z towarami niebezpiecznymi" pl.name="tabliczka wskazująca pojazdy z towarami niebezpiecznymi"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko pojazdy z towarami niebezpiecznymi (obejmuje ten sam zakres pojazdów, które znak B-13a). Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j. Nie jest stosowana ze znakami nakazu C-1 - C-11, zamiast tego używany jest znak C-17 nakazany kierunek jazdy dla pojazdów z towarami niebezpiecznymi.;"
+	>
+	<tag tag_ref="restriction" condition="hazmat"/>
+</sign>
+
+<sign ref="PL:T-23i" name="tabliczka wskazująca pojazdy z towarami wybuchowymi lub łatwozapalnymi" pl.name="tabliczka wskazująca pojazdy z towarami wybuchowymi lub łatwozapalnymi"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko pojazdów z towarami wybuchowymi lub łatwozapalnymi (obejmuje ten sam zakres pojazdów, które znak B-13). Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j.;"
+	>
+</sign>
+
+<sign ref="PL:T-23j" name="tabliczka wskazująca pojazdy z towarami, które mogą skazić wodę" pl.name="tabliczka wskazująca pojazdy z towarami, które mogą skazić wodę"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że znak dotyczy tylko pojazdów z towarami, które mogą skazić wodę (obejmuje ten sam zakres pojazdów, które znak B-14). Stosowana analogicznie, jak wszystkie tabliczki T-23a - T-23j.;"
+	>
+	<tag tag_ref="restriction" condition="hazmat:water"/>
+</sign>
+
+<sign ref="PL:T-24" name="tabliczka wskazująca, że pozostawiony pojazd zostanie usunięty na koszt właściciela" pl.name="tabliczka wskazująca, że pozostawiony pojazd zostanie usunięty na koszt właściciela"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że pojazd pozostawiony w miejscu, w którym obowiązuje zakaz wyrażony znakami B-35 zakaz postoju lub B-36 zakaz zatrzymywania się zostanie usunięty na koszt właściciela. Tabliczkę stosuje w pobliżu obiektów takich jak banki, sądy, obiekty wojskowe oraz w miejscach, gdzie pozostawienie pojazdu utrudnia lub zagraża bezpieczeństwu ruchu drogowego.;"
+	>
+</sign>
+
+<sign ref="PL:T-25a" name="tabliczka wskazująca początek zakazu postoju lub zatrzymywania" pl.name="tabliczka wskazująca początek zakazu postoju lub zatrzymywania"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje miejsce, w którym zaczyna obowiązywać zakaz wyrażony znakami B-35 zakaz postoju lub B-36 zakaz zatrzymywania się. Stosowana, gdy zakaz rozpoczyna się niebezpośrednio za skrzyżowaniem.;"
+	>
+</sign>
+
+<sign ref="PL:T-25b" name="tabliczka wskazująca kontynuację zakazu postoju lub zatrzymywania" pl.name="tabliczka wskazująca kontynuację zakazu postoju lub zatrzymywania"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje kontynuację zakazu wyrażonego znakami B-35 zakaz postoju lub B-36 zakaz zatrzymywania się. Stosowana za miejscem przeznaczonym do zawracania, za wyjazdami z dróg wewnętrznych, obiektów przydrożnych oraz na odcinkach obowiązywania zakazu między skrzyżowaniami o długości ponad 400 m.;"
+	>
+</sign>
+
+<sign ref="PL:T-25c" name="tabliczka wskazująca odwołanie zakazu postoju lub zatrzymywania" pl.name="tabliczka wskazująca odwołanie zakazu postoju lub zatrzymywania"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje miejsce, w którym przestaje obowiązywać zakaz wyrażony znakami B-35 zakaz postoju lub B-36 zakaz zatrzymywania się.;"
+	>
+</sign>
+
+<sign ref="PL:T-26" name="tabliczka wskazująca, że zakaz postoju lub zatrzymywania dotyczy strony placu" pl.name="tabliczka wskazująca, że zakaz postoju lub zatrzymywania dotyczy strony placu"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje stronę placu, przy której obowiązuje zakaz wyrażony znakami B-35 zakaz postoju lub B-36 zakaz zatrzymywania się. Znak umieszczany jest na środku objętego zakazem boku placu równolegle do jego krawędzi.;"
+	>
+</sign>
+
+<sign ref="PL:T-27" name="tabliczka wskazująca, że przejście dla pieszych jest szczególnie uczęszczane przez dzieci" pl.name="tabliczka wskazująca, że przejście dla pieszych jest szczególnie uczęszczane przez dzieci"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, przejście dla pieszych szczególnie uczęszczane przez dzieci w wieku od 7 do 15 lat, przede wszystkim w pobliżu szkół. Stosowana ze znakami D-6 przejście dla pieszych i D-6b przejście dla pieszych i przejazd dla rowerzystów.;"
+	>
+</sign>
+
+<sign ref="PL:T-28" name="tabliczka wskazująca, że za przejazd drogą pobierana jest opłata" pl.name="tabliczka wskazująca, że za przejazd drogą pobierana jest opłata"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że za przejazd drogę ekspresową, oznaczoną znakiem D-7, lub autostradą, oznaczoną znakiem D-9, pobierana jest opłata.;"
+	>
+</sign>
+
+<sign ref="PL:T-29" name="tabliczka informująca o miejscu przeznaczonym dla pojazdu samochodowego uprawnionej osoby niepełnosprawnej o obniżonej sprawności ruchowej" pl.name="tabliczka informująca o miejscu przeznaczonym dla pojazdu samochodowego uprawnionej osoby niepełnosprawnej o obniżonej sprawności ruchowej"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka wskazuje, że parking posiada miejsca przeznaczone dla pojazdów przewożących lub kierowanych przez osoby niepełnosprawne. Stosowana ze znakami D-18 parking, D-18a parking - miejsce zastrzeżone i D-18b parking zadaszony.;"
+	>
+</sign>
+
+<sign ref="PL:T-30" name="tabliczka wskazująca sposób ustawienia pojazdu względem krawędzi jezdni" pl.name="tabliczka wskazująca sposób ustawienia pojazdu względem krawędzi jezdni"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Tabliczka stosowana ze znakiem D-18 parking wskazuje właściwy sposób ustawienia pojazdu względem krawędzi jezdni (oznaczonej kolorem szarym). Jednocześnie oznacza, że miejsce przeznaczone jest dla pojazdów samochodowych o dopuszczalnej masie całkowitej nie przekraczającej 2,5 t.;Odmiany T-30:;;;znak;Informacja;;"
+	>
+</sign>
+
+<sign ref="PL:T-30a" name="tabliczka wskazująca postój całego pojazdu na chodniku równolegle do krawężnika" pl.name="tabliczka wskazująca postój całego pojazdu na chodniku równolegle do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-30b" name="tabliczka wskazująca postój całego pojazdu na chodniku prostopadle do krawężnika" pl.name="tabliczka wskazująca postój całego pojazdu na chodniku prostopadle do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-30c" name="tabliczka wskazująca postój całego pojazdu na chodniku skośnie do krawężnika" pl.name="tabliczka wskazująca postój całego pojazdu na chodniku skośnie do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-30d" name="tabliczka wskazująca postój na chodniku kołami przedniej osi pojazdu prostopadle do krawężnika" pl.name="tabliczka wskazująca postój na chodniku kołami przedniej osi pojazdu prostopadle do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-30e" name="tabliczka wskazująca postój na chodniku kołami przedniej osi pojazdu skośnie do krawężnika" pl.name="tabliczka wskazująca postój na chodniku kołami przedniej osi pojazdu skośnie do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-30f" name="tabliczka wskazująca postój całego pojazdu na jezdni prostopadle do krawężnika" pl.name="tabliczka wskazująca postój całego pojazdu na jezdni prostopadle do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-30g" name="tabliczka wskazująca postój całego pojazdu na jezdni skośnie do krawężnika" pl.name="tabliczka wskazująca postój całego pojazdu na jezdni skośnie do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-30h" name="tabliczka wskazująca postój na chodniku kołami jednego boku pojazdu równolegle do krawężnika" pl.name="tabliczka wskazująca postój na chodniku kołami jednego boku pojazdu równolegle do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-30i" name="tabliczka wskazująca postój całego pojazdu na jezdni równolegle do krawężnika" pl.name="tabliczka wskazująca postój całego pojazdu na jezdni równolegle do krawężnika"
+	supplementary="yes"
+	>
+</sign>
+
+<sign ref="PL:T-31" name="tabliczka wskazująca kategorię tunelu" pl.name="tabliczka wskazująca kategorię tunelu"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Wskazuje kategorię tunelu, tabliczkę stosuje się do znaku D-37.;Odmiany T-31:;;;znak;Informacja;Szczegóły;;"
+	>
+</sign>
+
+<sign ref="PL:T-32[$val]" id="PL:T-32" name="tabliczka wskazująca minimalny odstęp od poprzedzającego pojazdu" pl.name="tabliczka wskazująca minimalny odstęp od poprzedzającego pojazdu"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Wskazuje odległość od poprzedzających pojazdów, tabliczkę stosuje się do znaku D-37.;"
+	>
+	<parameter ident="val" input="textfield" default="20" suffix="m" field_width="3"/>
+</sign>
+
+<sign ref="PL:T-33" name="emergency phone" pl.name="tabliczka wskazująca umieszczenie w zatoce telefonu alarmowego i gaśnicy"
+	supplementary="yes"
+	long_name=""
+	pl.long_name="Wskazuje, że jest tu telefon alarmowy i gaśnica, tabliczkę stosuje się do znaku D-50.;"
+	wiki="Tag:emergency=phone"
+	>
+	<tag key="emergency" value="phone"/>
+</sign>
+
+</roadsignpreset>
Index: /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetSK.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetSK.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/data/roadsignpresetSK.xml	(revision 36424)
@@ -0,0 +1,888 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<roadsignpreset country="SK">
+<sign icon="A1a.png" id="A1a"  ref="SK:A1a" name="zákruta vpravo" sk.name="zákruta vpravo">
+</sign>
+<sign icon="A1b.png" id="A1b"  ref="SK:A1b" name="zákruta vľavo" sk.name="zákruta vľavo">
+</sign>
+<sign icon="A2a.png" id="A2a"  ref="SK:A2a" name="dvojitá zákruta, prvá vpravo" sk.name="dvojitá zákruta, prvá vpravo">
+</sign>
+<sign icon="A2b.png" id="A2b"  ref="SK:A2b" name="dvojitá zákruta, prvá vľavo" sk.name="dvojitá zákruta, prvá vľavo">
+</sign>
+<sign icon="A3a.png" id="A3a"  ref="SK:A3a" name="nebezpečné klesanie" sk.name="nebezpečné klesanie">
+</sign>
+<sign icon="A3b.png" id="A3b"  ref="SK:A3b" name="nebezpečné stúpanie" sk.name="nebezpečné stúpanie">
+</sign>
+<sign icon="A4a.png" id="A4a"  ref="SK:A4a" name="zúžená vozovka z oboch strán" sk.name="zúžená vozovka z oboch strán">
+</sign>
+<sign icon="A4a_alt.png" id="A4a_alt"  ref="SK:A4a" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A4b.png" id="A4b"  ref="SK:A4b" name="zúžená vozovka sprava" sk.name="zúžená vozovka sprava">
+</sign>
+<sign icon="A4b_alt.png" id="A4b_alt"  ref="SK:A4b" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A4c.png" id="A4c"  ref="SK:A4c" name="zúžená vozovka zľava" sk.name="zúžená vozovka zľava">
+</sign>
+<sign icon="A4c_alt.png" id="A4c_alt"  ref="SK:A4c" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A5.png" id="A5"  ref="SK:A5" name="nerovnosť vozovky" sk.name="nerovnosť vozovky">
+</sign>
+<sign icon="A5_alt.png" id="A5_alt"  ref="SK:A5" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A6.png" id="A6"  ref="SK:A6" name="spomaľovací prah" sk.name="spomaľovací prah">
+</sign>
+<sign icon="A7.png" id="A7"  ref="SK:A7" name="nebezpečná krajnica" sk.name="nebezpečná krajnica">
+</sign>
+<sign icon="A7_alt.png" id="A7_alt"  ref="SK:A7" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A8.png" id="A8"  ref="SK:A8" name="nebezpečenstvo šmyku" sk.name="nebezpečenstvo šmyku">
+</sign>
+<sign icon="A8_alt.png" id="A8_alt"  ref="SK:A8" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A9.png" id="A9"  ref="SK:A9" name="sneh alebo poľadovica" sk.name="sneh alebo poľadovica">
+</sign>
+<sign icon="A10.png" id="A10"  ref="SK:A10" name="hmla" sk.name="hmla">
+</sign>
+<sign icon="A11.png" id="A11"  ref="SK:A11" name="odletujúci štrk" sk.name="odletujúci štrk">
+</sign>
+<sign icon="A11_alt.png" id="A11_alt"  ref="SK:A11" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A12.png" id="A12"  ref="SK:A12" name="svetelné signály" sk.name="svetelné signály">
+</sign>
+<sign icon="A12_alt.png" id="A12_alt"  ref="SK:A12" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A13.png" id="A13"  ref="SK:A13" name="priechod pre chodcov" sk.name="priechod pre chodcov">
+</sign>
+<sign icon="A14.png" id="A14"  ref="SK:A14" name="pozor, chodci" sk.name="pozor, chodci">
+</sign>
+<sign icon="A15.png" id="A15"  ref="SK:A15" name="pozor, deti" sk.name="pozor, deti">
+</sign>
+<sign icon="A16.png" id="A16"  ref="SK:A16" name="pozor, cyklisti" sk.name="pozor, cyklisti">
+  	 <supplementary id="E16d"/> <!-- Priečna jazda cyklistov -->
+</sign>
+<sign icon="A17.png" id="A17"  ref="SK:A17" name="pozor, zvieratá" sk.name="pozor, zvieratá">
+</sign>
+<sign icon="A18.png" id="A18"  ref="SK:A18" name="pozor, zver" sk.name="pozor, zver">
+</sign>
+<sign icon="A18_alt.png" id="A18_alt"  ref="SK:A18" name="pozor, zver" sk.name="pozor, zver">
+</sign>
+<sign icon="A19.png" id="A19"  ref="SK:A19" name="práca na ceste" sk.name="práca na ceste">
+</sign>
+<sign icon="A19_alt.png" id="A19_alt"  ref="SK:A19" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A20.png" id="A20"  ref="SK:A20" name="padajúce kamene" sk.name="padajúce kamene">
+</sign>
+<sign icon="A21.png" id="A21"  ref="SK:A21" name="obojsmerná premávka" sk.name="obojsmerná premávka">
+  	 <supplementary id="E2"/> <!-- Vzdialenosť -->
+  	 <supplementary id="E1"/> <!-- Počet -->
+</sign>
+<sign icon="A21_alt.png" id="A21_alt"  ref="SK:A21" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+  	 <supplementary id="E2"/> <!-- Vzdialenosť -->
+  	 <supplementary id="E1"/> <!-- Počet -->
+</sign>
+<sign icon="A22.png" id="A22"  ref="SK:A22" name="pozor, električka" sk.name="pozor, električka">
+</sign>
+<sign icon="A23.png" id="A23"  ref="SK:A23" name="kolóny" sk.name="kolóny">
+</sign>
+<sign icon="A23_alt.png" id="A23_alt"  ref="SK:A23" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="A24.png" id="A24"  ref="SK:A24" name="tunel" sk.name="tunel">
+</sign>
+<sign icon="A25.png" id="A25"  ref="SK:A25" name="železničné priecestie so závorami" sk.name="železničné priecestie so závorami">
+  	 <supplementary id="E2"/> <!-- Vzdialenosť -->
+</sign>
+<sign icon="A26.png" id="A26"  ref="SK:A26" name="železničné priecestie bez závor" sk.name="železničné priecestie bez závor">
+  	 <supplementary id="E2"/> <!-- Vzdialenosť -->
+</sign>
+<sign icon="A27a.png" id="A27a"  ref="SK:A27a" name="návestná tabuľa ľavá (240 m)" sk.name="návestná tabuľa ľavá (240 m)">
+  	 <supplementary id="E7"/> <!-- Smerová šípka -->
+</sign>
+<sign icon="A27b.png" id="A27b"  ref="SK:A27b" name="návestná tabuľa pravá (240 m)" sk.name="návestná tabuľa pravá (240 m)">
+</sign>
+<sign icon="A28a.png" id="A28a"  ref="SK:A28a" name="návestná tabuľa ľavá (160 m)" sk.name="návestná tabuľa ľavá (160 m)">
+</sign>
+<sign icon="A28b.png" id="A28b"  ref="SK:A28b" name="návestná tabuľa pravá (160 m)" sk.name="návestná tabuľa pravá (160 m)">
+</sign>
+<sign icon="A29a.png" id="A29a"  ref="SK:A29a" name="návestná tabuľa ľavá (80 m)" sk.name="návestná tabuľa ľavá (80 m)">
+</sign>
+<sign icon="A29b.png" id="A29b"  ref="SK:A29b" name="návestná tabuľa pravá (80 m)" sk.name="návestná tabuľa pravá (80 m)">
+  	 <supplementary id="E7"/> <!-- Smerová šípka -->
+</sign>
+<sign icon="A30a.png" id="A30a"  ref="SK:A30a" name="výstražný kríž pre železničné priecestie jednokoľajové" sk.name="výstražný kríž pre železničné priecestie jednokoľajové">
+</sign>
+<sign icon="A30b.png" id="A30b"  ref="SK:A30b" name="výstražný kríž pre železničné priecestie viackoľajové" sk.name="výstražný kríž pre železničné priecestie viackoľajové">
+</sign>
+<sign icon="A31.png" id="A31"  ref="SK:A31" name="pozor, lietadlá" sk.name="pozor, lietadlá">
+</sign>
+<sign icon="A32.png" id="A32"  ref="SK:A32" name="bočný vietor" sk.name="bočný vietor">
+</sign>
+<sign icon="A33.png" id="A33"  ref="SK:A33" name="nehoda" sk.name="nehoda">
+  	 <supplementary id="E4"/> <!-- Dĺžka úseku alebo platnosti -->
+</sign>
+<sign icon="A34.png" id="A34"  ref="SK:A34" name="iné nebezpečenstvo" sk.name="iné nebezpečenstvo">
+</sign>
+<sign icon="A34_alt.png" id="A34_alt"  ref="SK:A34" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="P1.png" id="P1"  ref="SK:P1" name="daj prednosť v jazde" sk.name="daj prednosť v jazde">
+  	 <supplementary id="P13"/> <!-- tvar križovatky (vzor) -->
+  	 <supplementary id="P14"/> <!-- tvar križovatky (vzor) -->
+  	 <supplementary id="P15"/> <!-- tvar križovatky (vzor) -->
+  	 <supplementary id="E2"/> <!-- Vzdialenosť -->
+  	 <supplementary id="E16d"/> <!-- Priečna jazda cyklistov -->
+</sign>
+<sign icon="P2.png" id="P2"  ref="SK:P2" name="stoj, daj prednosť v jazde" sk.name="stoj, daj prednosť v jazde">
+  	 <supplementary id="P13"/> <!-- tvar križovatky (vzor) -->
+  	 <supplementary id="P14"/> <!-- tvar križovatky (vzor) -->
+  	 <supplementary id="P15"/> <!-- tvar križovatky (vzor) -->
+  	 <supplementary id="E16d"/> <!-- Priečna jazda cyklistov -->
+</sign>
+<sign icon="P3.png" id="P3"  ref="SK:P3" name="daj prednosť v jazde električke" sk.name="daj prednosť v jazde električke">
+</sign>
+<sign icon="P4.png" id="P4"  ref="SK:P4" name="križovatka" sk.name="križovatka">
+</sign>
+<sign icon="P5.png" id="P5"  ref="SK:P5" name="križovatka s vedľajšou cestou" sk.name="križovatka s vedľajšou cestou">
+</sign>
+<sign icon="P6.png" id="P6"  ref="SK:P6" name="križovatka s vedľajšou cestou (vzor)" sk.name="križovatka s vedľajšou cestou (vzor)">
+</sign>
+<sign icon="P6_alt.png" id="P6_alt"  ref="SK:P6" name="križovatka s vedľajšou cestou (vzor)" sk.name="križovatka s vedľajšou cestou (vzor)">
+</sign>
+<sign icon="P7.png" id="P7"  ref="SK:P7" name="okružná križovatka" sk.name="okružná križovatka">
+</sign>
+<sign icon="P8.png" id="P8"  ref="SK:P8" name="hlavná cesta" sk.name="hlavná cesta">
+  	 <supplementary id="P13"/> <!-- tvar križovatky (vzor) -->
+  	 <supplementary id="P14"/> <!-- tvar križovatky (vzor) -->
+  	 <supplementary id="P15"/> <!-- tvar križovatky (vzor) -->
+</sign>
+<sign icon="P9.png" id="P9"  ref="SK:P9" name="koniec hlavnej cesty" sk.name="koniec hlavnej cesty">
+</sign>
+<sign icon="P10.png" id="P10"  ref="SK:P10" name="prednosť protiidúcich vozidiel" sk.name="prednosť protiidúcich vozidiel">
+</sign>
+<sign icon="P11.png" id="P11"  ref="SK:P11" name="prednosť pred protiidúcimi vozidlami" sk.name="prednosť pred protiidúcimi vozidlami">
+</sign>
+<sign icon="P12.png" id="P12"  ref="SK:P12" supplementary="yes" name="tvar križovatky (vzor)" sk.name="tvar križovatky (vzor)">
+</sign>
+<sign icon="P13.png" id="P13"  ref="SK:P13" supplementary="yes" name="tvar križovatky (vzor)" sk.name="tvar križovatky (vzor)">
+</sign>
+<sign icon="P14.png" id="P14"  ref="SK:P14" supplementary="yes" name="tvar križovatky (vzor)" sk.name="tvar križovatky (vzor)">
+</sign>
+<sign icon="P15.png" id="P15"  ref="SK:P15" supplementary="yes" name="tvar križovatky (vzor)" sk.name="tvar križovatky (vzor)">
+</sign>
+<sign icon="B1.png" id="B1"  ref="SK:B1" name="zákaz vjazdu všetkých vozidiel (v oboch smeroch)" sk.name="zákaz vjazdu všetkých vozidiel (v oboch smeroch)">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B2.png" id="B2"  ref="SK:B2" name="zákaz vjazdu všetkých vozidiel" sk.name="zákaz vjazdu všetkých vozidiel">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+  	 <supplementary id="E16b"/> <!-- Jazda cyklistov v protismere povolená -->
+</sign>
+<sign icon="B3.png" id="B3"  ref="SK:B3" name="zákaz vjazdu všetkých motorových vozidiel" sk.name="zákaz vjazdu všetkých motorových vozidiel">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B4.png" id="B4"  ref="SK:B4" name="zákaz vjazdu všetkých motorových vozidiel s výnimkou motocyklov bez postranného vozíka" sk.name="zákaz vjazdu všetkých motorových vozidiel s výnimkou motocyklov bez postranného vozíka">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B5.png" id="B5"  ref="SK:B5" name="zákaz vjazdu osobných automobilov" sk.name="zákaz vjazdu osobných automobilov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B6.png" id="B6"  ref="SK:B6" name="zákaz vjazdu nákladných automobilov" sk.name="zákaz vjazdu nákladných automobilov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B7.png" id="B7"  ref="SK:B7" name="zákaz vjazdu autobusov" sk.name="zákaz vjazdu autobusov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B8.png" id="B8"  ref="SK:B8" name="zákaz vjazdu motocyklov" sk.name="zákaz vjazdu motocyklov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B9.png" id="B9"  ref="SK:B9" name="zákaz vjazdu traktorov" sk.name="zákaz vjazdu traktorov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B10.png" id="B10"  ref="SK:B10" name="zákaz vjazdu mopedov" sk.name="zákaz vjazdu mopedov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B11.png" id="B11"  ref="SK:B11" name="zákaz vjazdu bicyklov" sk.name="zákaz vjazdu bicyklov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B12.png" id="B12"  ref="SK:B12" name="zákaz vjazdu jazdcov na koňoch" sk.name="zákaz vjazdu jazdcov na koňoch">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B13.png" id="B13"  ref="SK:B13" name="zákaz vstupu chodcov" sk.name="zákaz vstupu chodcov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B14.png" id="B14"  ref="SK:B14" name="zákaz vstupu korčuliarov" sk.name="zákaz vstupu korčuliarov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B15.png" id="B15"  ref="SK:B15" name="zákaz vjazdu záprahových vozidiel" sk.name="zákaz vjazdu záprahových vozidiel">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B16.png" id="B16"  ref="SK:B16" name="zákaz vjazdu ručných vozíkov" sk.name="zákaz vjazdu ručných vozíkov">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B17.png" id="B17"  ref="SK:B17" name="zákaz vjazdu motorových vozidiel s prívesmi" sk.name="zákaz vjazdu motorových vozidiel s prívesmi">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B18.png" id="B18"  ref="SK:B18" name="zákaz vjazdu vyznačených vozidiel" sk.name="zákaz vjazdu vyznačených vozidiel">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B19.png" id="B19"  ref="SK:B19" name="zákaz jazdy motorových vozidiel vo vzdialenosti kratšej" sk.name="zákaz jazdy motorových vozidiel vo vzdialenosti kratšej">
+</sign>
+<sign icon="B20.png" id="B20"  ref="SK:B20" name="zákaz vjazdu vozidiel alebo súprav vozidiel, ktorých dĺžka presahuje vyznačenú hranicu" sk.name="zákaz vjazdu vozidiel alebo súprav vozidiel, ktorých dĺžka presahuje vyznačenú hranicu">
+       <tag key="maxlength" value="$val"/>
+				       <parameter ident="val" input="textfield" suffix="m" default="10" field_width="2"/>
+</sign>
+<sign icon="B21.png" id="B21"  ref="SK:B21" name="zákaz vjazdu vozidiel prepravujúcich nebezpečné veci" sk.name="zákaz vjazdu vozidiel prepravujúcich nebezpečné veci">
+  	 <supplementary id="E14"/> <!-- Kategória tunela -->
+  	 <supplementary id="E14"/> <!-- Kategória tunela -->
+</sign>
+<sign icon="B22.png" id="B22"  ref="SK:B22" name="zákaz vjazdu vozidiel prepravujúcich náklad, ktorý môže spôsobiť znečistenie vody" sk.name="zákaz vjazdu vozidiel prepravujúcich náklad, ktorý môže spôsobiť znečistenie vody">
+</sign>
+<sign icon="B23.png" id="B23"  ref="SK:B23" name="zákaz vjazdu vozidiel, ktorých šírka presahuje vyznačenú hranicu" sk.name="zákaz vjazdu vozidiel, ktorých šírka presahuje vyznačenú hranicu">
+       <tag key="maxwidth" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="2"/>
+</sign>
+<sign icon="B24.png" id="B24"  ref="SK:B24" name="zákaz vjazdu vozidiel, ktorých výška presahuje vyznačenú hranicu" sk.name="zákaz vjazdu vozidiel, ktorých výška presahuje vyznačenú hranicu">
+       <tag key="maxheight" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="2"/>
+</sign>
+<sign icon="B25.png" id="B25"  ref="SK:B25" name="zákaz vjazdu vozidiel, ktorých okamžitá hmotnosť presahuje vyznačenú hranicu" sk.name="zákaz vjazdu vozidiel, ktorých okamžitá hmotnosť presahuje vyznačenú hranicu">
+       <tag key="maxweight" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="2"/>
+</sign>
+<sign icon="B26.png" id="B26"  ref="SK:B26" name="zákaz vjazdu vozidiel, ktorých okamžitá hmotnosť pripadajúca na nápravu presahuje vyznačenú hranicu" sk.name="zákaz vjazdu vozidiel, ktorých okamžitá hmotnosť pripadajúca na nápravu presahuje vyznačenú hranicu">
+       <tag key="maxaxleload" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="2"/>
+</sign>
+<sign icon="B27a.png" id="B27a"  ref="SK:B27a" name="zákaz odbočovania vpravo" sk.name="zákaz odbočovania vpravo">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B27b.png" id="B27b"  ref="SK:B27b" name="zákaz odbočovania vľavo" sk.name="zákaz odbočovania vľavo">
+</sign>
+<sign icon="B28.png" id="B28"  ref="SK:B28" name="zákaz otáčania" sk.name="zákaz otáčania">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B29a.png" id="B29a"  ref="SK:B29a" name="zákaz predchádzania" sk.name="zákaz predchádzania">
+</sign>
+<sign icon="B29b.png" id="B29b"  ref="SK:B29b" name="koniec zákazu predchádzania" sk.name="koniec zákazu predchádzania">
+</sign>
+<sign icon="B30a.png" id="B30a"  ref="SK:B30a" name="zákaz predchádzania pre nákladné automobily" sk.name="zákaz predchádzania pre nákladné automobily">
+</sign>
+<sign icon="B30b.png" id="B30b"  ref="SK:B30b" name="koniec zákazu predchádzania pre nákladné automobily" sk.name="koniec zákazu predchádzania pre nákladné automobily">
+</sign>
+<sign icon="B31a.png" id="B31a"  ref="SK:B31a" name="najvyššia dovolená rýchlosť" sk.name="najvyššia dovolená rýchlosť">
+</sign>
+<sign icon="B31b.png" id="B31b"  ref="SK:B31b" name="koniec najvyššej dovolenej rýchlosti" sk.name="koniec najvyššej dovolenej rýchlosti">
+</sign>
+<sign icon="B32a.png" id="B32a"  ref="SK:B32a" name="zákaz zvukových výstražných zariadení" sk.name="zákaz zvukových výstražných zariadení">
+</sign>
+<sign icon="B32b.png" id="B32b"  ref="SK:B32b" name="koniec zákazu zvukových výstražných zariadení" sk.name="koniec zákazu zvukových výstražných zariadení">
+</sign>
+<sign icon="B33.png" id="B33"  ref="SK:B33" name="zákaz státia" sk.name="zákaz státia">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B34.png" id="B34"  ref="SK:B34" name="zákaz zastavenia" sk.name="zákaz zastavenia">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B35.png" id="B35"  ref="SK:B35" name="zákaz státia v nepárnych dňoch" sk.name="zákaz státia v nepárnych dňoch">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B36.png" id="B36"  ref="SK:B36" name="zákaz státia v párnych dňoch" sk.name="zákaz státia v párnych dňoch">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B37.png" id="B37"  ref="SK:B37" name="iný zákaz" sk.name="iný zákaz">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B37_alt.png" id="B37_alt"  ref="SK:B37" name="iný zákaz" sk.name="iný zákaz">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B37_alt2.png" id="B37_alt2"  ref="SK:B37" name="iný zákaz" sk.name="iný zákaz">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B37_alt3.png" id="B37_alt3"  ref="SK:B37" name="iný zákaz" sk.name="iný zákaz">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+</sign>
+<sign icon="B38.png" id="B38"  ref="SK:B38" name="povinnosť zastaviť vozidlo" sk.name="povinnosť zastaviť vozidlo">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+</sign>
+<sign icon="B38_alt.png" id="B38_alt"  ref="SK:B38" name="povinnosť zastaviť vozidlo" sk.name="povinnosť zastaviť vozidlo">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+</sign>
+<sign icon="B38_alt2.png" id="B38_alt2"  ref="SK:B38" name="povinnosť zastaviť vozidlo" sk.name="povinnosť zastaviť vozidlo">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+</sign>
+<sign icon="B39.png" id="B39"  ref="SK:B39" name="koniec viacerých zákazov" sk.name="koniec viacerých zákazov">
+</sign>
+<sign icon="C1.png" id="C1"  ref="SK:C1" name="prikázaný smer jazdy priamo" sk.name="prikázaný smer jazdy priamo">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+  	 <supplementary id="E16a"/> <!-- Povolený smer jazdy cyklistov -->
+  	 <supplementary id="E7"/> <!-- Smerová šípka -->
+  	 <supplementary id="E14"/> <!-- Kategória tunela -->
+</sign>
+<sign icon="C2.png" id="C2"  ref="SK:C2" name="prikázaný smer jazdy vpravo" sk.name="prikázaný smer jazdy vpravo">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+  	 <supplementary id="E16a"/> <!-- Povolený smer jazdy cyklistov -->
+  	 <supplementary id="E7"/> <!-- Smerová šípka -->
+  	 <supplementary id="E14"/> <!-- Kategória tunela -->
+</sign>
+<sign icon="C3.png" id="C3"  ref="SK:C3" name="prikázaný smer jazdy vľavo" sk.name="prikázaný smer jazdy vľavo">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+  	 <supplementary id="E16a"/> <!-- Povolený smer jazdy cyklistov -->
+  	 <supplementary id="E7"/> <!-- Smerová šípka -->
+  	 <supplementary id="E14"/> <!-- Kategória tunela -->
+</sign>
+<sign icon="C4a.png" id="C4a"  ref="SK:C4a" name="prikázaný smer jazdy vpravo a vľavo" sk.name="prikázaný smer jazdy vpravo a vľavo">
+</sign>
+<sign icon="C4b.png" id="C4b"  ref="SK:C4b" name="prikázaný smer jazdy priamo a vpravo" sk.name="prikázaný smer jazdy priamo a vpravo">
+</sign>
+<sign icon="C4c.png" id="C4c"  ref="SK:C4c" name="prikázaný smer jazdy priamo a vľavo" sk.name="prikázaný smer jazdy priamo a vľavo">
+</sign>
+<sign icon="C5.png" id="C5"  ref="SK:C5" name="prikázaný smer otáčania" sk.name="prikázaný smer otáčania">
+  	 <supplementary id="E12"/> <!-- Dodatková tabuľka s textom  -->
+  	 <supplementary id="E16a"/> <!-- Povolený smer jazdy cyklistov -->
+  	 <supplementary id="E7"/> <!-- Smerová šípka -->
+  	 <supplementary id="E14"/> <!-- Kategória tunela -->
+</sign>
+<sign icon="C6a.png" id="C6a"  ref="SK:C6a" name="prikázaný smer obchádzania vpravo" sk.name="prikázaný smer obchádzania vpravo">
+</sign>
+<sign icon="C6b.png" id="C6b"  ref="SK:C6b" name="prikázaný smer obchádzania vľavo" sk.name="prikázaný smer obchádzania vľavo">
+</sign>
+<sign icon="C6c.png" id="C6c"  ref="SK:C6c" name="prikázaný smer obchádzania vpravo a vľavo" sk.name="prikázaný smer obchádzania vpravo a vľavo">
+</sign>
+<sign icon="C7.png" id="C7"  ref="SK:C7" name="kruhový objazd" sk.name="kruhový objazd">
+</sign>
+<sign icon="C8.png" id="C8"  ref="SK:C8" name="cestička pre cyklistov" sk.name="cestička pre cyklistov">
+</sign>
+<sign icon="C9.png" id="C9"  ref="SK:C9" name="cestička pre chodcov" sk.name="cestička pre chodcov">
+</sign>
+<sign icon="C10.png" id="C10"  ref="SK:C10" name="cestička pre korčuliarov" sk.name="cestička pre korčuliarov">
+</sign>
+<sign icon="C11.png" id="C11"  ref="SK:C11" name="cestička pre jazdcov na koňoch" sk.name="cestička pre jazdcov na koňoch">
+</sign>
+<sign icon="C12.png" id="C12"  ref="SK:C12" name="cestička pre vyznačených užívateľov" sk.name="cestička pre vyznačených užívateľov">
+</sign>
+<sign icon="C13.png" id="C13"  ref="SK:C13" name="cestička pre vyznačených užívateľov" sk.name="cestička pre vyznačených užívateľov">
+</sign>
+<sign icon="C14.png" id="C14"  ref="SK:C14" name="použiť protisklzové reťaze" sk.name="použiť protisklzové reťaze">
+</sign>
+<sign icon="C15.png" id="C15"  ref="SK:C15" name="najnižšia dovolená rýchlosť" sk.name="najnižšia dovolená rýchlosť">
+</sign>
+<sign icon="C16.png" id="C16"  ref="SK:C16" name="iný príkaz" sk.name="iný príkaz">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+</sign>
+<sign icon="C16_alt.png" id="C16_alt"  ref="SK:C16" name="iný príkaz" sk.name="iný príkaz">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+</sign>
+<sign icon="C16_alt2.png" id="C16_alt2"  ref="SK:C16" name="iný príkaz" sk.name="iný príkaz">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+</sign>
+<sign icon="C16_alt3.png" id="C16_alt3"  ref="SK:C16" name="iný príkaz" sk.name="iný príkaz">
+<!-- !!FIX ME!! treba lepsi tag ako note -->
+       <tag key="note" value="$val"/>
+				       <parameter ident="val" input="textfield" default="" field_width="5"/>
+</sign>
+<sign icon="C17.png" id="C17"  ref="SK:C17" name="rozsvieť svetlá" sk.name="rozsvieť svetlá">
+</sign>
+<sign icon="C18.png" id="C18"  ref="SK:C18" name="koniec príkazu" sk.name="koniec príkazu">
+</sign>
+<sign icon="C19.png" id="C19"  ref="SK:C19" name="prikázaný smer prepravy vyznačených vozidiel a vecí" sk.name="prikázaný smer prepravy vyznačených vozidiel a vecí">
+  	 <supplementary id="E14"/> <!-- Kategória tunela -->
+  	 <supplementary id="E14"/> <!-- Kategória tunela -->
+</sign>
+<sign icon="C20.png" id="C20"  ref="SK:C20" name="usporiadanie jazdných pruhov" sk.name="usporiadanie jazdných pruhov">
+</sign>
+<sign icon="C20_alt.png" id="C20_alt"  ref="SK:C20" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="C21.png" id="C21"  ref="SK:C21" name="usporiadanie jazdných pruhov" sk.name="usporiadanie jazdných pruhov">
+</sign>
+<sign icon="C21_alt.png" id="C21_alt"  ref="SK:C21" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="C22a.png" id="C22a"  ref="SK:C22a" name="zvýšenie počtu jazdných pruhov" sk.name="zvýšenie počtu jazdných pruhov">
+</sign>
+<sign icon="C22a_alt.png" id="C22a_alt"  ref="SK:C22a" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="C22b.png" id="C22b"  ref="SK:C22b" name="zníženie počtu jazdných pruhov" sk.name="zníženie počtu jazdných pruhov">
+</sign>
+<sign icon="C22b_alt.png" id="C22b_alt"  ref="SK:C22b" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="C22c.png" id="C22c"  ref="SK:C22c" name="zvýšenie počtu jazdných pruhov pre pomalé vozidlá" sk.name="zvýšenie počtu jazdných pruhov pre pomalé vozidlá">
+</sign>
+<sign icon="C22c_alt.png" id="C22c_alt"  ref="SK:C22c" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="C23a.png" id="C23a"  ref="SK:C23a" name="obmedzenie v jazdných pruhoch" sk.name="obmedzenie v jazdných pruhoch">
+</sign>
+<sign icon="C23a_alt.png" id="C23a_alt"  ref="SK:C23a" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="C23b.png" id="C23b"  ref="SK:C23b" name="obmedzenie v jazdných pruhoch" sk.name="obmedzenie v jazdných pruhoch">
+</sign>
+<sign icon="C23b_alt.png" id="C23b_alt"  ref="SK:C23b" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="C24a.png" id="C24a"  ref="SK:C24a" name="vyhradený jazdný pruh" sk.name="vyhradený jazdný pruh">
+</sign>
+<sign icon="C24b.png" id="C24b"  ref="SK:C24b" name="koniec vyhradeného jazdného pruhu" sk.name="koniec vyhradeného jazdného pruhu">
+</sign>
+<sign icon="C25.png" id="C25"  ref="SK:C25" name="radenie jazdných pruhov pred križovatkou" sk.name="radenie jazdných pruhov pred križovatkou">
+</sign>
+<sign icon="C25_alt.png" id="C25_alt"  ref="SK:C25" name="ako dočasná dopravná značka" sk.name="ako dočasná dopravná značka">
+</sign>
+<sign icon="C26.png" id="C26"  ref="SK:C26" name="zmena smeru jazdy" sk.name="zmena smeru jazdy">
+</sign>
+<sign icon="C27.png" id="C27"  ref="SK:C27" name="obchádzanie električky" sk.name="obchádzanie električky">
+</sign>
+<sign icon="C28.png" id="C28"  ref="SK:C28" name="zmena smeru jazdy" sk.name="zmena smeru jazdy">
+</sign>
+<sign icon="C29.png" id="C29"  ref="SK:C29" name="zmena smeru jazdy" sk.name="zmena smeru jazdy">
+</sign>
+<sign icon="C30.png" id="C30"  ref="SK:C30" name="striedavé radenie" sk.name="striedavé radenie">
+</sign>
+<sign icon="IP1.png" id="IP1"  ref="SK:IP1" name="okruh" sk.name="okruh">
+</sign>
+<sign icon="IP2.png" id="IP2"  ref="SK:IP2" name="zmena smeru okruhu" sk.name="zmena smeru okruhu">
+</sign>
+<sign icon="IP3a.png" id="IP3a"  ref="SK:IP3a" name="jednosmerná premávka" sk.name="jednosmerná premávka">
+  	 <supplementary id="E16c"/> <!-- Jazda cyklistov v oboch smeroch povolená -->
+</sign>
+<sign icon="IP3a_alt.png" id="IP3a_alt"  ref="SK:IP3a" name="jednosmerná premávka" sk.name="jednosmerná premávka">
+  	 <supplementary id="E16c"/> <!-- Jazda cyklistov v oboch smeroch povolená -->
+</sign>
+<sign icon="IP3b.png" id="IP3b"  ref="SK:IP3b" name="jednosmerná premávka" sk.name="jednosmerná premávka">
+  	 <supplementary id="E16c"/> <!-- Jazda cyklistov v oboch smeroch povolená -->
+</sign>
+<sign icon="IP4.png" id="IP4"  ref="SK:IP4" name="slepá pozemná komunikácia" sk.name="slepá pozemná komunikácia">
+</sign>
+<sign icon="IP5.png" id="IP5"  ref="SK:IP5" name="návesť pred slepou pozemnou komunikáciou" sk.name="návesť pred slepou pozemnou komunikáciou">
+</sign>
+<sign icon="IP5_alt.png" id="IP5_alt"  ref="SK:IP5" name="návesť pred slepou pozemnou komunikáciou" sk.name="návesť pred slepou pozemnou komunikáciou">
+</sign>
+<sign icon="IP6.png" id="IP6"  ref="SK:IP6" name="priechod pre chodcov" sk.name="priechod pre chodcov">
+</sign>
+<sign icon="IP6_alt.png" id="IP6_alt"  ref="SK:IP6" name="priechod pre chodcov" sk.name="priechod pre chodcov">
+</sign>
+<sign icon="IP7.png" id="IP7"  ref="SK:IP7" name="priechod pre cyklistov" sk.name="priechod pre cyklistov">
+</sign>
+<sign icon="IP7_alt.png" id="IP7_alt"  ref="SK:IP7" name="priechod pre cyklistov" sk.name="priechod pre cyklistov">
+</sign>
+<sign icon="IP8.png" id="IP8"  ref="SK:IP8" name="spomaľovací prah" sk.name="spomaľovací prah">
+</sign>
+<sign icon="IP9.png" id="IP9"  ref="SK:IP9" name="podchod alebo nadchod" sk.name="podchod alebo nadchod">
+</sign>
+<sign icon="IP10.png" id="IP10"  ref="SK:IP10" name="odporúčaná rýchlosť" sk.name="odporúčaná rýchlosť">
+</sign>
+<sign icon="IP11.png" id="IP11"  ref="SK:IP11" name="núdzová odstavná plocha" sk.name="núdzová odstavná plocha">
+</sign>
+<sign icon="IP12.png" id="IP12"  ref="SK:IP12" name="parkovisko" sk.name="parkovisko">
+</sign>
+<sign icon="IP13a.png" id="IP13a"  ref="SK:IP13a" name="parkovisko (kolmé státie)" sk.name="parkovisko (kolmé státie)">
+</sign>
+<sign icon="IP13b.png" id="IP13b"  ref="SK:IP13b" name="parkovisko (šikmé státie)" sk.name="parkovisko (šikmé státie)">
+</sign>
+<sign icon="IP13c.png" id="IP13c"  ref="SK:IP13c" name="parkovisko (pozdĺžne státie)" sk.name="parkovisko (pozdĺžne státie)">
+</sign>
+<sign icon="IP14a.png" id="IP14a"  ref="SK:IP14a" name="parkovisko (státie na chodníku kolmé alebo šikmé)" sk.name="parkovisko (státie na chodníku kolmé alebo šikmé)">
+</sign>
+<sign icon="IP14b.png" id="IP14b"  ref="SK:IP14b" name="parkovisko (státie na chodníku pozdĺžne)" sk.name="parkovisko (státie na chodníku pozdĺžne)">
+</sign>
+<sign icon="IP15a.png" id="IP15a"  ref="SK:IP15a" name="parkovisko (čiastočné státie na chodníku kolmé alebo šikmé)" sk.name="parkovisko (čiastočné státie na chodníku kolmé alebo šikmé)">
+</sign>
+<sign icon="IP15b.png" id="IP15b"  ref="SK:IP15b" name="parkovisko (čiastočné státie na chodníku pozdĺžne)" sk.name="parkovisko (čiastočné státie na chodníku pozdĺžne)">
+</sign>
+<sign icon="IP16.png" id="IP16"  ref="SK:IP16" name="vyhradené parkovisko" sk.name="vyhradené parkovisko">
+  	 <supplementary id="E13"/> <!-- Dodatková tabuľka pre vyhradené parkovanie -->
+</sign>
+<sign icon="IP17a.png" id="IP17a"  ref="SK:IP17a" name="platené parkovisko (parkovacie miesta s plateným státím)" sk.name="platené parkovisko (parkovacie miesta s plateným státím)">
+</sign>
+<sign icon="IP17b.png" id="IP17b"  ref="SK:IP17b" name="platené parkovisko (parkovacie miesta s regulovaným státím)" sk.name="platené parkovisko (parkovacie miesta s regulovaným státím)">
+</sign>
+<sign icon="IP18.png" id="IP18"  ref="SK:IP18" name="kryté parkovisko" sk.name="kryté parkovisko">
+</sign>
+<sign icon="IP19.png" id="IP19"  ref="SK:IP19" name="parkovisko P+R" sk.name="parkovisko P+R">
+</sign>
+<sign icon="IP20a.png" id="IP20a"  ref="SK:IP20a" name="stanovište polície" sk.name="stanovište polície">
+</sign>
+<sign icon="IP20b.png" id="IP20b"  ref="SK:IP20b" name="stanovište taxi" sk.name="stanovište taxi">
+</sign>
+<sign icon="IP21a.png" id="IP21a"  ref="SK:IP21a" name="tunel" sk.name="tunel">
+</sign>
+<sign icon="IP21a_alt.png" id="IP21a_alt"  ref="SK:IP21a" name="tunel (s jedným tubusom)" sk.name="tunel (s jedným tubusom)">
+</sign>
+<sign icon="IP21a_alt2.png" id="IP21a_alt2"  ref="SK:IP21a" name="tunel (s názvom)" sk.name="tunel (s názvom)">
+</sign>
+<sign icon="IP21b.png" id="IP21b"  ref="SK:IP21b" name="koniec tunela" sk.name="koniec tunela">
+</sign>
+<sign icon="IP21b_alt.png" id="IP21b_alt"  ref="SK:IP21b" name="koniec tunela (s jedným tubusom)" sk.name="koniec tunela (s jedným tubusom)">
+</sign>
+<sign icon="IP21b_alt2.png" id="IP21b_alt2"  ref="SK:IP21b" name="koniec tunela (s názvom)" sk.name="koniec tunela (s názvom)">
+</sign>
+<sign icon="IP22a.png" id="IP22a"  ref="SK:IP22a" name="Rýchlostná cesta" sk.name="Rýchlostná cesta">
+</sign>
+<sign icon="IP22b.png" id="IP22b"  ref="SK:IP22b" name="Koniec rýchlostnej cesty" sk.name="Koniec rýchlostnej cesty">
+</sign>
+<sign icon="IP23a.png" id="IP23a"  ref="SK:IP23a" name="Diaľnica" sk.name="Diaľnica">
+</sign>
+<sign icon="IP23b.png" id="IP23b"  ref="SK:IP23b" name="Koniec diaľnice" sk.name="Koniec diaľnice">
+</sign>
+<sign icon="IP24a.png" id="IP24a"  ref="SK:IP24a" name="zóna s dopravným obmedzením" sk.name="zóna s dopravným obmedzením">
+</sign>
+<sign icon="IP24b.png" id="IP24b"  ref="SK:IP24b" name="koniec zóny s dopravným obmedzením" sk.name="koniec zóny s dopravným obmedzením">
+</sign>
+<sign icon="IP25a.png" id="IP25a"  ref="SK:IP25a" name="pešia zóna" sk.name="pešia zóna">
+</sign>
+<sign icon="IP25b.png" id="IP25b"  ref="SK:IP25b" name="koniec pešej zóny" sk.name="koniec pešej zóny">
+</sign>
+<sign icon="IP26a.png" id="IP26a"  ref="SK:IP26a" name="školská zóna" sk.name="školská zóna">
+</sign>
+<sign icon="IP26b.png" id="IP26b"  ref="SK:IP26b" name="koniec školskej zóny" sk.name="koniec školskej zóny">
+</sign>
+<sign icon="IP27a.png" id="IP27a"  ref="SK:IP27a" name="zóna s plateným parkovaním" sk.name="zóna s plateným parkovaním">
+</sign>
+<sign icon="IP27b.png" id="IP27b"  ref="SK:IP27b" name="koniec zóny s plateným parkovaním" sk.name="koniec zóny s plateným parkovaním">
+</sign>
+<sign icon="IP28a.png" id="IP28a"  ref="SK:IP28a" name="obytná zóna" sk.name="obytná zóna">
+</sign>
+<sign icon="IP28b.png" id="IP28b"  ref="SK:IP28b" name="koniec obytnej zóny" sk.name="koniec obytnej zóny">
+</sign>
+<sign icon="IP29.png" id="IP29"  ref="SK:IP29" name="úniková zóna" sk.name="úniková zóna">
+</sign>
+<sign icon="IP30.png" id="IP30"  ref="SK:IP30" name="zmena miestnej úpravy" sk.name="zmena miestnej úpravy">
+</sign>
+<sign icon="IP31a.png" id="IP31a"  ref="SK:IP31a" name="hmlové body" sk.name="hmlové body">
+</sign>
+<sign icon="IP31b.png" id="IP31b"  ref="SK:IP31b" name="hmlové body" sk.name="hmlové body">
+</sign>
+<sign icon="IP31c.png" id="IP31c"  ref="SK:IP31c" name="hmlové body" sk.name="hmlové body">
+</sign>
+<sign icon="IP32.png" id="IP32"  ref="SK:IP32" name="bezpečná vzdialenosť" sk.name="bezpečná vzdialenosť">
+</sign>
+<sign icon="IP33a.png" id="IP33a"  ref="SK:IP33a" name="všeobecne najvyššie dovolené rýchlosti" sk.name="všeobecne najvyššie dovolené rýchlosti">
+</sign>
+<sign icon="IP33b.png" id="IP33b"  ref="SK:IP33b" name="všeobecné informácie o povinnosti úhrady" sk.name="všeobecné informácie o povinnosti úhrady">
+</sign>
+<sign icon="IP34a.png" id="IP34a"  ref="SK:IP34a" name="všeobecné informácie o dopravných obmedzeniach" sk.name="všeobecné informácie o dopravných obmedzeniach">
+</sign>
+<sign icon="IP34b.png" id="IP34b"  ref="SK:IP34b" name="všeobecné informácie o dopravných obmedzeniach" sk.name="všeobecné informácie o dopravných obmedzeniach">
+</sign>
+<sign icon="IP34c.png" id="IP34c"  ref="SK:IP34c" name="všeobecné informácie o dopravných obmedzeniach" sk.name="všeobecné informácie o dopravných obmedzeniach">
+</sign>
+<sign icon="IS1a.png" id="IS1a"  ref="SK:IS1a" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS1b.png" id="IS1b"  ref="SK:IS1b" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS2.png" id="IS2"  ref="SK:IS2" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS3.png" id="IS3"  ref="SK:IS3" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS4.png" id="IS4"  ref="SK:IS4" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS5a.png" id="IS5a"  ref="SK:IS5a" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS5b.png" id="IS5b"  ref="SK:IS5b" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS6.png" id="IS6"  ref="SK:IS6" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS7a.png" id="IS7a"  ref="SK:IS7a" name="smerová tabuľa" sk.name="smerová tabuľa">
+</sign>
+<sign icon="IS7b.png" id="IS7b"  ref="SK:IS7b" name="výjazd" sk.name="výjazd">
+</sign>
+<sign icon="IS8.png" id="IS8"  ref="SK:IS8" name="diaľková návesť" sk.name="diaľková návesť">
+</sign>
+<sign icon="IS9.png" id="IS9"  ref="SK:IS9" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS10.png" id="IS10"  ref="SK:IS10" name="návesť pred križovatkou" sk.name="návesť pred križovatkou">
+</sign>
+<sign icon="IS11.png" id="IS11"  ref="SK:IS11" name="návesť pred kultúrnym alebo turistickým cieľom" sk.name="návesť pred kultúrnym alebo turistickým cieľom">
+</sign>
+<sign icon="IS12.png" id="IS12"  ref="SK:IS12" name="návesť pred križovatkou s obmedzením" sk.name="návesť pred križovatkou s obmedzením">
+</sign>
+<sign icon="IS13.png" id="IS13"  ref="SK:IS13" name="návesť pred križovatkou s obmedzením" sk.name="návesť pred križovatkou s obmedzením">
+</sign>
+<sign icon="IS14.png" id="IS14"  ref="SK:IS14" name="návesť pred križovatkou s obmedzením" sk.name="návesť pred križovatkou s obmedzením">
+</sign>
+<sign icon="IS15.png" id="IS15"  ref="SK:IS15" name="návesť pred obchádzkou" sk.name="návesť pred obchádzkou">
+</sign>
+<sign icon="IS16.png" id="IS16"  ref="SK:IS16" name="návesť pred obchádzkou (odklonom)" sk.name="návesť pred obchádzkou (odklonom)">
+</sign>
+<sign icon="IS17a.png" id="IS17a"  ref="SK:IS17a" name="smerová tabuľa (s jedným cieľom)" sk.name="smerová tabuľa (s jedným cieľom)">
+</sign>
+<sign icon="IS17b.png" id="IS17b"  ref="SK:IS17b" name="smerová tabuľa (s jedným cieľom)" sk.name="smerová tabuľa (s jedným cieľom)">
+</sign>
+<sign icon="IS18a.png" id="IS18a"  ref="SK:IS18a" name="smerová tabuľa (s dvomi cieľmi)" sk.name="smerová tabuľa (s dvomi cieľmi)">
+</sign>
+<sign icon="IS18b.png" id="IS18b"  ref="SK:IS18b" name="smerová tabuľa (s dvomi cieľmi)" sk.name="smerová tabuľa (s dvomi cieľmi)">
+</sign>
+<sign icon="IS19a.png" id="IS19a"  ref="SK:IS19a" name="smerová tabuľa pre príjazd k diaľnici" sk.name="smerová tabuľa pre príjazd k diaľnici">
+</sign>
+<sign icon="IS19b.png" id="IS19b"  ref="SK:IS19b" name="smerová tabuľa pre príjazd k diaľnici" sk.name="smerová tabuľa pre príjazd k diaľnici">
+</sign>
+<sign icon="IS20a.png" id="IS20a"  ref="SK:IS20a" name="smerová tabuľa pre príjazd k rýchlostnej ceste" sk.name="smerová tabuľa pre príjazd k rýchlostnej ceste">
+</sign>
+<sign icon="IS20b.png" id="IS20b"  ref="SK:IS20b" name="smerová tabuľa pre príjazd k rýchlostnej ceste" sk.name="smerová tabuľa pre príjazd k rýchlostnej ceste">
+</sign>
+<sign icon="IS21.png" id="IS21"  ref="SK:IS21" name="smerová tabuľa k miestnemu cieľu" sk.name="smerová tabuľa k miestnemu cieľu">
+</sign>
+<sign icon="IS22a.png" id="IS22a"  ref="SK:IS22a" name="smerová tabuľa k inému cieľu" sk.name="smerová tabuľa k inému cieľu">
+</sign>
+<sign icon="IS22b.png" id="IS22b"  ref="SK:IS22b" name="smerová tabuľa k inému cieľu" sk.name="smerová tabuľa k inému cieľu">
+</sign>
+<sign icon="IS23a.png" id="IS23a"  ref="SK:IS23a" name="smerová tabuľa ku kultúrnemu alebo turistickému cieľu" sk.name="smerová tabuľa ku kultúrnemu alebo turistickému cieľu">
+</sign>
+<sign icon="IS23b.png" id="IS23b"  ref="SK:IS23b" name="smerová tabuľa ku komunálnemu cieľu" sk.name="smerová tabuľa ku komunálnemu cieľu">
+</sign>
+<sign icon="IS24.png" id="IS24"  ref="SK:IS24" name="smerová tabuľa ku komunálnemu cieľu" sk.name="smerová tabuľa ku komunálnemu cieľu">
+</sign>
+<sign icon="IS25.png" id="IS25"  ref="SK:IS25" name="smerová tabuľa na vyznačenie obchádzky" sk.name="smerová tabuľa na vyznačenie obchádzky">
+</sign>
+<sign icon="IS26.png" id="IS26"  ref="SK:IS26" name="smerová tabuľa na vyznačenie obchádzky" sk.name="smerová tabuľa na vyznačenie obchádzky">
+</sign>
+<sign icon="IS27.png" id="IS27"  ref="SK:IS27" name="diaľnica" sk.name="diaľnica">
+</sign>
+<sign icon="IS28.png" id="IS28"  ref="SK:IS28" name="rýchlostná cesta" sk.name="rýchlostná cesta">
+</sign>
+<sign icon="IS29.png" id="IS29"  ref="SK:IS29" name="cesta I. triedy" sk.name="cesta I. triedy">
+</sign>
+<sign icon="IS30.png" id="IS30"  ref="SK:IS30" name="cesta II. triedy" sk.name="cesta II. triedy">
+</sign>
+<sign icon="IS31.png" id="IS31"  ref="SK:IS31" name="medzinárodná trasa" sk.name="medzinárodná trasa">
+</sign>
+<sign icon="IS32a.png" id="IS32a"  ref="SK:IS32a" name="kilometrovník" sk.name="kilometrovník">
+</sign>
+<sign icon="IS32b.png" id="IS32b"  ref="SK:IS32b" name="kilometrovník" sk.name="kilometrovník">
+</sign>
+<sign icon="IS32c.png" id="IS32c"  ref="SK:IS32c" name="kilometrovník" sk.name="kilometrovník">
+</sign>
+<sign icon="IS33.png" id="IS33"  ref="SK:IS33" name="hranica kraja" sk.name="hranica kraja">
+</sign>
+<sign icon="IS34.png" id="IS34"  ref="SK:IS34" name="hranica okresu" sk.name="hranica okresu">
+</sign>
+<sign icon="IS35.png" id="IS35"  ref="SK:IS35" name="iný názov" sk.name="iný názov">
+</sign>
+<sign icon="IS36a.png" id="IS36a"  ref="SK:IS36a" name="obec" sk.name="obec">
+</sign>
+<sign icon="IS36b.png" id="IS36b"  ref="SK:IS36b" name="koniec obce" sk.name="koniec obce">
+</sign>
+<sign icon="IS36c.png" id="IS36c"  ref="SK:IS36c" name="miestna časť obce" sk.name="miestna časť obce">
+</sign>
+<sign icon="IS36d.png" id="IS36d"  ref="SK:IS36d" name="koniec miestnej časti obce" sk.name="koniec miestnej časti obce">
+</sign>
+<sign icon="IS37a.png" id="IS37a"  ref="SK:IS37a" name="označenie začiatku obce v jazyku maďarskej menšiny" sk.name="označenie začiatku obce v jazyku maďarskej menšiny">
+</sign>
+<sign icon="IS37b.png" id="IS37b"  ref="SK:IS37b" name="označenie koniec obce v jazyku maďarskej menšiny" sk.name="označenie koniec obce v jazyku maďarskej menšiny">
+</sign>
+<sign icon="IS38.png" id="IS38"  ref="SK:IS38" name="hraničný priechod" sk.name="hraničný priechod">
+</sign>
+<sign icon="IS39.png" id="IS39"  ref="SK:IS39" name="hranica štátu" sk.name="hranica štátu">
+</sign>
+<sign icon="IS40a.png" id="IS40a"  ref="SK:IS40a" name="Smerová tabuľa pre cyklistov (s jedným cieľom)" sk.name="Smerová tabuľa pre cyklistov (s jedným cieľom)">
+</sign>
+<sign icon="IS40b.png" id="IS40b"  ref="SK:IS40b" name="Smerová tabuľa pre cyklistov (s dvoma cieľmi)" sk.name="Smerová tabuľa pre cyklistov (s dvoma cieľmi)">
+</sign>
+<sign icon="IS40c.png" id="IS40c"  ref="SK:IS40c" name="Smerová tabuľa pre cyklistov (s jedným cieľom)" sk.name="Smerová tabuľa pre cyklistov (s jedným cieľom)">
+</sign>
+<sign icon="IS40d.png" id="IS40d"  ref="SK:IS40d" name="Smerová tabuľa pre cyklistov (s dvoma cieľmi)" sk.name="Smerová tabuľa pre cyklistov (s dvoma cieľmi)">
+</sign>
+<sign icon="IS40e.png" id="IS40e"  ref="SK:IS40e" name="Návesť pred križovatkou pre cyklistov" sk.name="Návesť pred križovatkou pre cyklistov">
+</sign>
+<sign icon="IS40f.png" id="IS40f"  ref="SK:IS40f" name="Smerová tabuľa pre cyklistov" sk.name="Smerová tabuľa pre cyklistov">
+</sign>
+<sign icon="IS40g.png" id="IS40g"  ref="SK:IS40g" name="Smerová tabuľa pre cyklistov" sk.name="Smerová tabuľa pre cyklistov">
+</sign>
+<sign icon="IS40h.png" id="IS40h"  ref="SK:IS40h" name="Smerová tabuľa pre cyklistov" sk.name="Smerová tabuľa pre cyklistov">
+</sign>
+<sign icon="IS40i.png" id="IS40i"  ref="SK:IS40i" name="Koniec cyklistickej trasy" sk.name="Koniec cyklistickej trasy">
+</sign>
+<sign icon="E1.png" id="E1"  ref="SK:E1" supplementary="yes" name="Počet" sk.name="Počet">
+</sign>
+<sign icon="E2.png" id="E2"  ref="SK:E2" supplementary="yes" name="Vzdialenosť" sk.name="Vzdialenosť">
+</sign>
+<sign icon="E3.png" id="E3"  ref="SK:E3" supplementary="yes" name="Vzdialenosť" sk.name="Vzdialenosť">
+</sign>
+<sign icon="E4.png" id="E4"  ref="SK:E4" supplementary="yes" name="Dĺžka úseku alebo platnosti" sk.name="Dĺžka úseku alebo platnosti">
+</sign>
+<sign icon="E5a.png" id="E5a"  ref="SK:E5a" supplementary="yes" name="Úsek platnosti" sk.name="Úsek platnosti">
+</sign>
+<sign icon="E5b.png" id="E5b"  ref="SK:E5b" supplementary="yes" name="Úsek platnosti" sk.name="Úsek platnosti">
+</sign>
+<sign icon="E6.png" id="E6"  ref="SK:E6" supplementary="yes" name="Celková hmotnosť" sk.name="Celková hmotnosť">
+</sign>
+<sign icon="E7.png" id="E7"  ref="SK:E7" supplementary="yes" name="Smerová šípka" sk.name="Smerová šípka">
+</sign>
+<sign icon="E8a.png" id="E8a"  ref="SK:E8a" supplementary="yes" name="Začiatok úseku platnosti" sk.name="Začiatok úseku platnosti">
+</sign>
+<sign icon="E8b.png" id="E8b"  ref="SK:E8b" supplementary="yes" name="Priebeh úseku platnosti" sk.name="Priebeh úseku platnosti">
+</sign>
+<sign icon="E8c.png" id="E8c"  ref="SK:E8c" supplementary="yes" name="Koniec úseku platnosti" sk.name="Koniec úseku platnosti">
+</sign>
+<sign icon="E9.png" id="E9"  ref="SK:E9" supplementary="yes" name="Nepriaznivé poveternostné podmienky" sk.name="Nepriaznivé poveternostné podmienky">
+</sign>
+<sign icon="E10.png" id="E10"  ref="SK:E10" supplementary="yes" name="Druh vozidla" sk.name="Druh vozidla">
+</sign>
+<sign icon="E11.png" id="E11"  ref="SK:E11" supplementary="yes" name="Tvar kríženia cesty so železničnou dráhou" sk.name="Tvar kríženia cesty so železničnou dráhou">
+</sign>
+<sign icon="E12.png" id="E12"  ref="SK:E12" supplementary="yes" name="Dodatková tabuľka s textom" sk.name="Dodatková tabuľka s textom">
+</sign>
+<sign icon="E13.png" id="E13"  ref="SK:E13" supplementary="yes" name="Dodatková tabuľka pre vyhradené parkovanie" sk.name="Dodatková tabuľka pre vyhradené parkovanie">
+</sign>
+<sign icon="E14.png" id="E14"  ref="SK:E14" supplementary="yes" name="Kategória tunela" sk.name="Kategória tunela">
+</sign>
+<sign icon="E15.png" id="E15"  ref="SK:E15" name="Dodatková tabuľka na označenie vyhradeného parkovacieho miesta pre osobu so zdravotným postihnutím" sk.name="Dodatková tabuľka na označenie vyhradeného parkovacieho miesta pre osobu so zdravotným postihnutím">
+</sign>
+<sign icon="E16a.png" id="E16a"  ref="SK:E16a" name="Povolený smer jazdy cyklistov" sk.name="Povolený smer jazdy cyklistov">
+</sign>
+<sign icon="E16b.png" id="E16b"  ref="SK:E16b" name="Jazda cyklistov v protismere povolená" sk.name="Jazda cyklistov v protismere povolená">
+</sign>
+<sign icon="E16c.png" id="E16c"  ref="SK:E16c" name="Jazda cyklistov v oboch smeroch povolená" sk.name="Jazda cyklistov v oboch smeroch povolená">
+</sign>
+<sign icon="E16d.png" id="E16d"  ref="SK:E16d" name="Priečna jazda cyklistov" sk.name="Priečna jazda cyklistov">
+</sign>
+<sign icon="II1a.png" id="II1a"  ref="SK:II1a" name="Telefón núdzového volania" sk.name="Telefón núdzového volania">
+</sign>
+<sign icon="II1b.png" id="II1b"  ref="SK:II1b" name="Núdzové volanie" sk.name="Núdzové volanie">
+</sign>
+<sign icon="II2.png" id="II2"  ref="SK:II2" name="Telefón" sk.name="Telefón">
+</sign>
+<sign icon="II3.png" id="II3"  ref="SK:II3" name="Hasiaci prístroj" sk.name="Hasiaci prístroj">
+</sign>
+<sign icon="II4.png" id="II4"  ref="SK:II4" name="Prvá pomoc" sk.name="Prvá pomoc">
+</sign>
+<sign icon="II5.png" id="II5"  ref="SK:II5" name="Nemocnica" sk.name="Nemocnica">
+</sign>
+<sign icon="II6a.png" id="II6a"  ref="SK:II6a" name="Informácie" sk.name="Informácie">
+</sign>
+<sign icon="II6b.png" id="II6b"  ref="SK:II6b" name="Rádio (vzor)" sk.name="Rádio (vzor)">
+</sign>
+<sign icon="II7a.png" id="II7a"  ref="SK:II7a" name="Zastávka autobusu" sk.name="Zastávka autobusu">
+</sign>
+<sign icon="II7b.png" id="II7b"  ref="SK:II7b" name="Zastávka trolejbusu" sk.name="Zastávka trolejbusu">
+</sign>
+<sign icon="II7c.png" id="II7c"  ref="SK:II7c" name="Zastávka električky" sk.name="Zastávka električky">
+</sign>
+<sign icon="II8a.png" id="II8a"  ref="SK:II8a" name="Čerpacia stanica" sk.name="Čerpacia stanica">
+</sign>
+<sign icon="II8b.png" id="II8b"  ref="SK:II8b" name="Čerpacia stanica skvapalneného ropného plynu (LPG)" sk.name="Čerpacia stanica skvapalneného ropného plynu (LPG)">
+</sign>
+<sign icon="II8c.png" id="II8c"  ref="SK:II8c" name="Čerpacia stanica stlačeného prírodného plynu (CNG)" sk.name="Čerpacia stanica stlačeného prírodného plynu (CNG)">
+</sign>
+<sign icon="II9.png" id="II9"  ref="SK:II9" name="Opraváreň" sk.name="Opraváreň">
+</sign>
+<sign icon="II10.png" id="II10"  ref="SK:II10" name="Hotel alebo motel" sk.name="Hotel alebo motel">
+</sign>
+<sign icon="II11.png" id="II11"  ref="SK:II11" name="Reštaurácia" sk.name="Reštaurácia">
+</sign>
+<sign icon="II12.png" id="II12"  ref="SK:II12" name="Občerstvenie" sk.name="Občerstvenie">
+</sign>
+<sign icon="II13.png" id="II13"  ref="SK:II13" name="WC" sk.name="WC">
+</sign>
+<sign icon="II14.png" id="II14"  ref="SK:II14" name="Odpočívadlo" sk.name="Odpočívadlo">
+</sign>
+<sign icon="II15a.png" id="II15a"  ref="SK:II15a" name="Táborisko pre stany" sk.name="Táborisko pre stany">
+</sign>
+<sign icon="II15b.png" id="II15b"  ref="SK:II15b" name="Táborisko pre obytné prívesy" sk.name="Táborisko pre obytné prívesy">
+</sign>
+<sign icon="II15c.png" id="II15c"  ref="SK:II15c" name="Táborisko pre stany a obytné prívesy" sk.name="Táborisko pre stany a obytné prívesy">
+</sign>
+<sign icon="II16.png" id="II16"  ref="SK:II16" name="Pláž alebo kúpalisko" sk.name="Pláž alebo kúpalisko">
+</sign>
+<sign icon="II17a.png" id="II17a"  ref="SK:II17a" name="Lyžiarsky vlek" sk.name="Lyžiarsky vlek">
+</sign>
+<sign icon="II17b.png" id="II17b"  ref="SK:II17b" name="Sedačková lanovka" sk.name="Sedačková lanovka">
+</sign>
+<sign icon="II17c.png" id="II17c"  ref="SK:II17c" name="Kabínková lanovka" sk.name="Kabínková lanovka">
+</sign>
+<sign icon="II18a.png" id="II18a"  ref="SK:II18a" name="Odpočívadlo s objektmi služieb (vzor)" sk.name="Odpočívadlo s objektmi služieb (vzor)">
+</sign>
+<sign icon="II18b.png" id="II18b"  ref="SK:II18b" name="Odpočívadlo s objektmi služieb (vzor)" sk.name="Odpočívadlo s objektmi služieb (vzor)">
+</sign>
+<sign icon="II18c.png" id="II18c"  ref="SK:II18c" name="Odpočívadlo s objektmi služieb (vzor)" sk.name="Odpočívadlo s objektmi služieb (vzor)">
+</sign>
+<sign icon="II19a.png" id="II19a"  ref="SK:II19a" name="Núdzový východ" sk.name="Núdzový východ">
+</sign>
+<sign icon="II19b.png" id="II19b"  ref="SK:II19b" name="Núdzový východ" sk.name="Núdzový východ">
+</sign>
+<sign icon="II20a.png" id="II20a"  ref="SK:II20a" name="Úniková cesta (vzor)" sk.name="Úniková cesta (vzor)">
+</sign>
+<sign icon="II20b.png" id="II20b"  ref="SK:II20b" name="Úniková cesta (vzor)" sk.name="Úniková cesta (vzor)">
+</sign>
+<sign icon="II20c.png" id="II20c"  ref="SK:II20c" name="Úniková cesta (vzor)" sk.name="Úniková cesta (vzor)">
+</sign>
+<sign icon="Z9.png" id="Z9"  ref="SK:Z9" name="Ukazovateľ smeru a sily bočného vetra" sk.name="Ukazovateľ smeru a sily bočného vetra">
+</sign>
+<sign icon="Z10.png" id="Z10"  ref="SK:Z10" name="Varovná tabuľa" sk.name="Varovná tabuľa">
+</sign>
+<sign icon="Z11a.png" id="Z11a"  ref="SK:Z11a" name="Elektronické panely na premenné značky" sk.name="Elektronické panely na premenné značky">
+</sign>
+<sign icon="Z11a_alt.png" id="Z11a_alt"  ref="SK:Z11a_alt" name="Elektronické panely na premenné značky" sk.name="Elektronické panely na premenné značky">
+</sign>
+<sign icon="Z11a_alt2.png" id="Z11a_alt2"  ref="SK:Z11a_alt2" name="Elektronické panely na premenné značky" sk.name="Elektronické panely na premenné značky">
+</sign>
+<sign icon="Z11a_alt3.png" id="Z11a_alt3"  ref="SK:Z11a_alt3" name="Elektronické panely na premenné značky" sk.name="Elektronické panely na premenné značky">
+</sign>
+<sign icon="Z11b.png" id="Z11b"  ref="SK:Z11b" name="Elektromechanické panely na premenné značky" sk.name="Elektromechanické panely na premenné značky">
+</sign>
+<sign icon="Z11b_alt.png" id="Z11b_alt"  ref="SK:Z11b_alt" name="Elektromechanické panely na premenné značky" sk.name="Elektromechanické panely na premenné značky">
+</sign>
+<sign icon="Z11b_alt2.png" id="Z11b_alt2"  ref="SK:Z11b_alt2" name="Elektromechanické panely na premenné značky" sk.name="Elektromechanické panely na premenné značky">
+</sign>
+<sign icon="Z11b_alt3.png" id="Z11b_alt3"  ref="SK:Z11b_alt3" name="Elektromechanické panely na premenné značky" sk.name="Elektromechanické panely na premenné značky">
+</sign>
+<sign icon="Z12.png" id="Z12"  ref="SK:Z12" name="Elektronické panely na premenné prevádzkové informácie" sk.name="Elektronické panely na premenné prevádzkové informácie">
+</sign>
+<sign icon="Z12_alt.png" id="Z12_alt"  ref="SK:Z12_alt" name="Elektronické panely na premenné prevádzkové informácie" sk.name="Elektronické panely na premenné prevádzkové informácie">
+</sign>
+<sign icon="Z12_alt2.png" id="Z12_alt2"  ref="SK:Z12_alt2" name="Elektronické panely na premenné prevádzkové informácie" sk.name="Elektronické panely na premenné prevádzkové informácie">
+</sign>
+<sign icon="V5b.png" id="V5b"  ref="SK:V5b" name="Priečna súvislá čiara so symbolom “Daj prednos v jazde!“" sk.name="Priečna súvislá čiara so symbolom “Daj prednos v jazde!“">
+       <tag key="highway" value="give_way"/>
+</sign>
+<sign icon="V5c.png" id="V5c"  ref="SK:V5c" name="Priečna súvislá čiara s nápisom “STOP“" sk.name="Priečna súvislá čiara s nápisom “STOP“">
+       <tag key="highway" value="stop"/>
+</sign>
+<sign icon="V6a.png" id="V6a"  ref="SK:V6a" name="Priechod pre chodcov" sk.name="Priechod pre chodcov">
+       <tag key="highway" value="crossing"/>
+</sign>
+<sign icon="V6b.png" id="V6b"  ref="SK:V6b" name="Priechod pre chodcov s vodiacim pásom pre nevidiacich" sk.name="Priechod pre chodcov s vodiacim pásom pre nevidiacich">
+       <tag key="highway" value="corssing"/>
+       <tag key="tactile_paving" value="yes"/>
+</sign>
+<sign icon="V7.png" id="V7"  ref="SK:V7" name="Priechod pre cyklistov" sk.name="Priechod pre cyklistov">
+</sign>
+<sign icon="V10a.png" id="V10a"  ref="SK:V10a" name="Parkovacie miesta s kolmým státím" sk.name="Parkovacie miesta s kolmým státím">
+</sign>
+<sign icon="V10b.png" id="V10b"  ref="SK:V10b" name="Parkovacie miesta so šikmým státím" sk.name="Parkovacie miesta so šikmým státím">
+</sign>
+<sign icon="V10c.png" id="V10c"  ref="SK:V10c" name="Parkovacie miesta s pozdĺžným státím" sk.name="Parkovacie miesta s pozdĺžným státím">
+</sign>
+<sign icon="V10d.png" id="V10d"  ref="SK:V10d" name="Parkovacie miesta s vyhradeným státím" sk.name="Parkovacie miesta s vyhradeným státím">
+</sign>
+<sign icon="V10e.png" id="V10e"  ref="SK:V10e" name="Stanovište TAXI" sk.name="Stanovište TAXI">
+</sign>
+<sign icon="V11a.png" id="V11a"  ref="SK:V11a" name="Zastávka autobusu, trolejbusu a električky" sk.name="Zastávka autobusu, trolejbusu a električky">
+</sign>
+<sign icon="V12a.png" id="V12a"  ref="SK:V12a" name="Žltá kľukatá čiara" sk.name="Žltá kľukatá čiara">
+</sign>
+<sign icon="V12b.png" id="V12b"  ref="SK:V12b" name="Žltá súvislá čiara" sk.name="Žltá súvislá čiara">
+</sign>
+<sign icon="V12c.png" id="V12c"  ref="SK:V12c" name="Žltá prerušovaná čiara" sk.name="Žltá prerušovaná čiara">
+</sign>
+<sign icon="V15.png" id="V15"  ref="SK:V15" name="Bezpečná vzdialenosť" sk.name="Bezpečná vzdialenosť">
+</sign>
+<sign icon="V16.png" id="V16"  ref="SK:V16" name="Optická psychologická brzda" sk.name="Optická psychologická brzda">
+</sign>
+</roadsignpreset>
Index: /applications/editors/josm/plugins/RoadSigns/gpl-2.0.txt
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/gpl-2.0.txt	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/gpl-2.0.txt	(revision 36424)
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/RoadSigns/gpl-3.0.txt
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/gpl-3.0.txt	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/gpl-3.0.txt	(revision 36424)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_50_7a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_50_7a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_50_7a.svg	(revision 36424)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="57px" height="50px" viewBox="0 0 57 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(88.627452%,2.352941%,7.450981%);fill-opacity:1;" d="M 1.90625 49.996094 C 1.222656 49.996094 0.582031 49.851562 0.261719 49.261719 C 0.0078125 48.789062 0.0429688 48.230469 0.300781 47.769531 L 27.066406 1.019531 C 27.382812 0.464844 27.890625 0.0117188 28.546875 0.0195312 C 29.128906 0.0273438 29.636719 0.382812 29.925781 0.882812 L 56.699219 47.664062 C 56.945312 48.09375 57.148438 48.769531 56.851562 49.296875 C 56.578125 49.773438 56.039062 50 55.503906 50 Z M 1.90625 49.996094 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 9.4375 43.933594 L 47.734375 43.945312 L 28.570312 10.578125 Z M 9.4375 43.933594 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(11.372549%,11.372549%,10.588235%);fill-opacity:1;" d="M 47.640625 43.894531 L 9.390625 43.90625 L 38.097656 27.257812 Z M 47.640625 43.894531 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(11.372549%,11.372549%,10.588235%);fill-opacity:1;" d="M 35.457031 25.050781 C 35.210938 24.621094 34.945312 24.359375 34.660156 24.261719 C 34.375 24.160156 34.0625 24.214844 33.734375 24.40625 C 33.40625 24.59375 33.203125 24.84375 33.148438 25.140625 C 33.09375 25.433594 33.183594 25.796875 33.429688 26.226562 C 33.671875 26.652344 33.941406 26.910156 34.222656 27.011719 C 34.507812 27.113281 34.820312 27.058594 35.148438 26.867188 C 35.480469 26.675781 35.683594 26.429688 35.738281 26.132812 C 35.792969 25.835938 35.699219 25.476562 35.457031 25.050781 M 32.941406 28.050781 L 32.664062 21.328125 L 32.015625 21.703125 L 32.296875 28.425781 Z M 34.082031 25.847656 C 33.949219 25.617188 33.871094 25.425781 33.839844 25.269531 C 33.804688 25.121094 33.867188 24.996094 34.019531 24.90625 C 34.175781 24.816406 34.316406 24.824219 34.433594 24.921875 C 34.546875 25.035156 34.671875 25.199219 34.804688 25.425781 C 34.933594 25.65625 35.015625 25.847656 35.050781 25.992188 C 35.082031 26.152344 35.015625 26.277344 34.859375 26.367188 C 34.707031 26.457031 34.570312 26.449219 34.453125 26.335938 C 34.339844 26.238281 34.214844 26.074219 34.082031 25.847656 Z M 31.527344 23.53125 C 31.28125 23.101562 31.015625 22.84375 30.734375 22.742188 C 30.449219 22.644531 30.140625 22.695312 29.808594 22.886719 C 29.476562 23.078125 29.277344 23.324219 29.222656 23.621094 C 29.167969 23.917969 29.257812 24.277344 29.503906 24.707031 C 29.75 25.132812 30.015625 25.394531 30.296875 25.496094 C 30.582031 25.59375 30.894531 25.542969 31.226562 25.351562 C 31.554688 25.160156 31.753906 24.914062 31.8125 24.617188 C 31.863281 24.320312 31.777344 23.957031 31.527344 23.53125 Z M 30.15625 24.328125 C 30.023438 24.097656 29.945312 23.90625 29.914062 23.75 C 29.878906 23.601562 29.945312 23.476562 30.097656 23.386719 C 30.25 23.300781 30.394531 23.304688 30.507812 23.40625 C 30.621094 23.515625 30.742188 23.679688 30.875 23.910156 C 31.007812 24.136719 31.085938 24.328125 31.121094 24.476562 C 31.152344 24.632812 31.089844 24.761719 30.9375 24.851562 C 30.785156 24.9375 30.640625 24.929688 30.527344 24.820312 C 30.410156 24.71875 30.289062 24.554688 30.15625 24.328125 Z M 29.601562 26.558594 C 29.324219 26.078125 29.066406 25.679688 28.820312 25.371094 C 28.574219 25.058594 28.34375 24.828125 28.117188 24.671875 C 27.886719 24.523438 27.664062 24.445312 27.441406 24.449219 C 27.214844 24.449219 26.992188 24.519531 26.761719 24.65625 C 26.515625 24.796875 26.34375 24.957031 26.226562 25.152344 C 26.117188 25.34375 26.070312 25.574219 26.09375 25.847656 C 26.105469 26.128906 26.1875 26.441406 26.332031 26.8125 C 26.476562 27.179688 26.691406 27.605469 26.964844 28.085938 C 27.242188 28.566406 27.503906 28.964844 27.742188 29.269531 C 27.988281 29.578125 28.21875 29.808594 28.453125 29.957031 C 28.679688 30.109375 28.894531 30.179688 29.117188 30.179688 C 29.339844 30.175781 29.566406 30.105469 29.808594 29.964844 C 30.042969 29.828125 30.214844 29.667969 30.332031 29.476562 C 30.445312 29.28125 30.492188 29.058594 30.480469 28.78125 C 30.460938 28.507812 30.375 28.191406 30.230469 27.824219 C 30.089844 27.460938 29.875 27.035156 29.601562 26.558594 Z M 28.84375 26.996094 C 29.097656 27.429688 29.289062 27.777344 29.417969 28.058594 C 29.550781 28.34375 29.644531 28.566406 29.683594 28.742188 C 29.726562 28.925781 29.722656 29.050781 29.6875 29.140625 C 29.644531 29.234375 29.570312 29.316406 29.472656 29.375 C 29.367188 29.4375 29.261719 29.457031 29.160156 29.429688 C 29.050781 29.414062 28.929688 29.339844 28.796875 29.207031 C 28.660156 29.078125 28.511719 28.882812 28.335938 28.625 C 28.164062 28.382812 27.964844 28.050781 27.730469 27.644531 C 27.492188 27.230469 27.304688 26.886719 27.167969 26.597656 C 27.039062 26.320312 26.945312 26.089844 26.898438 25.910156 C 26.855469 25.730469 26.855469 25.589844 26.890625 25.484375 C 26.921875 25.386719 26.992188 25.304688 27.097656 25.246094 C 27.191406 25.191406 27.296875 25.171875 27.398438 25.175781 C 27.496094 25.191406 27.613281 25.261719 27.746094 25.390625 C 27.878906 25.519531 28.035156 25.707031 28.210938 25.957031 C 28.386719 26.21875 28.59375 26.558594 28.84375 26.996094 Z M 24.375 27.273438 L 26.851562 31.582031 L 27.597656 31.148438 L 24.632812 25.988281 L 23.855469 26.4375 L 23.265625 28 L 24.003906 28.265625 Z M 24.375 27.273438 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_1.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_1.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_1.svg	(revision 36424)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.191406 0 25 0 C 38.808594 0 50 11.195312 50 25 C 50 38.808594 38.808594 50 25 50 C 11.191406 50 0 38.808594 0 25 Z M 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 24.953125 43.539062 C 35.164062 43.539062 43.441406 35.257812 43.441406 25.046875 C 43.441406 14.835938 35.164062 6.558594 24.953125 6.558594 C 14.742188 6.558594 6.460938 14.835938 6.460938 25.046875 C 6.460938 35.257812 14.742188 43.539062 24.953125 43.539062 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_10a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_10a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_10a.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(88.627452%,2.352941%,7.450981%);fill-opacity:1;" d="M 25.003906 0 C 38.808594 0 50.003906 11.195312 50.003906 25.003906 C 50.003906 38.808594 38.808594 50.003906 25.003906 50.003906 C 11.195312 50.003906 0 38.808594 0 25.003906 C 0 11.195312 11.195312 0 25.003906 0 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25.003906 6.382812 C 14.722656 6.382812 6.382812 14.722656 6.382812 25.003906 C 6.382812 35.28125 14.722656 43.621094 25.003906 43.621094 C 35.28125 43.621094 43.621094 35.28125 43.621094 25.003906 C 43.621094 14.722656 35.28125 6.382812 25.003906 6.382812 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(11.372549%,11.372549%,10.588235%);fill-opacity:1;" d="M 37.03125 25.027344 C 37.03125 23.054688 36.941406 21.355469 36.730469 19.960938 C 36.515625 18.5625 36.210938 17.441406 35.789062 16.558594 C 35.332031 15.679688 34.785156 15.042969 34.089844 14.648438 C 33.390625 14.253906 32.570312 14.070312 31.601562 14.070312 C 30.597656 14.070312 29.777344 14.253906 29.078125 14.648438 C 28.382812 15.042969 27.835938 15.679688 27.410156 16.558594 C 26.953125 17.441406 26.652344 18.5625 26.4375 19.960938 C 26.226562 21.355469 26.136719 23.054688 26.136719 25.027344 C 26.136719 27 26.226562 28.699219 26.4375 30.066406 C 26.652344 31.464844 26.953125 32.585938 27.410156 33.46875 C 27.835938 34.347656 28.382812 34.953125 29.078125 35.347656 C 29.777344 35.738281 30.597656 35.921875 31.601562 35.921875 C 32.570312 35.921875 33.390625 35.738281 34.089844 35.347656 C 34.785156 34.953125 35.332031 34.347656 35.789062 33.46875 C 36.210938 32.585938 36.515625 31.464844 36.730469 30.066406 C 36.941406 28.699219 37.03125 27 37.03125 25.027344 M 33.90625 25.027344 C 33.90625 26.820312 33.875 28.246094 33.785156 29.335938 C 33.695312 30.460938 33.574219 31.3125 33.390625 31.917969 C 33.207031 32.554688 32.964844 32.949219 32.691406 33.164062 C 32.390625 33.375 32.023438 33.496094 31.601562 33.496094 C 31.171875 33.496094 30.8125 33.375 30.539062 33.101562 C 30.230469 32.859375 29.988281 32.40625 29.808594 31.765625 C 29.628906 31.128906 29.503906 30.25 29.414062 29.15625 C 29.320312 28.09375 29.292969 26.699219 29.292969 25.027344 C 29.292969 23.328125 29.320312 21.933594 29.414062 20.808594 C 29.503906 19.71875 29.628906 18.835938 29.808594 18.199219 C 29.988281 17.5625 30.230469 17.136719 30.539062 16.863281 C 30.8125 16.621094 31.171875 16.5 31.601562 16.5 C 31.996094 16.5 32.355469 16.621094 32.660156 16.832031 C 32.933594 17.046875 33.179688 17.46875 33.359375 18.105469 C 33.542969 18.746094 33.695312 19.59375 33.785156 20.6875 C 33.875 21.8125 33.90625 23.238281 33.90625 25.027344 Z M 23.648438 29.25 C 23.648438 28.304688 23.527344 27.546875 23.3125 26.910156 C 23.074219 26.273438 22.769531 25.757812 22.402344 25.363281 C 22.042969 24.96875 21.648438 24.632812 21.191406 24.421875 C 20.738281 24.207031 20.308594 24.058594 19.886719 23.964844 C 20.28125 23.84375 20.703125 23.664062 21.097656 23.390625 C 21.492188 23.144531 21.828125 22.84375 22.164062 22.449219 C 22.464844 22.085938 22.710938 21.660156 22.917969 21.144531 C 23.105469 20.628906 23.195312 20.078125 23.195312 19.445312 C 23.195312 18.378906 23.042969 17.5 22.769531 16.800781 C 22.464844 16.105469 22.070312 15.558594 21.613281 15.164062 C 21.132812 14.769531 20.585938 14.464844 19.976562 14.3125 C 19.371094 14.160156 18.761719 14.070312 18.125 14.070312 C 17.214844 14.070312 16.363281 14.222656 15.574219 14.554688 C 14.785156 14.890625 14.027344 15.316406 13.328125 15.890625 L 14.632812 17.925781 C 15.242188 17.46875 15.820312 17.136719 16.363281 16.953125 C 16.878906 16.773438 17.394531 16.679688 17.851562 16.679688 C 18.0625 16.679688 18.308594 16.710938 18.582031 16.742188 C 18.851562 16.773438 19.097656 16.894531 19.339844 17.074219 C 19.550781 17.289062 19.765625 17.558594 19.914062 17.957031 C 20.070312 18.351562 20.15625 18.894531 20.15625 19.59375 C 20.15625 20.75 19.914062 21.597656 19.460938 22.113281 C 18.976562 22.628906 18.371094 22.902344 17.609375 22.902344 L 16.789062 22.902344 L 16.789062 25.363281 L 17.761719 25.363281 C 18.125 25.363281 18.488281 25.390625 18.824219 25.484375 C 19.15625 25.574219 19.429688 25.757812 19.703125 26.03125 C 19.949219 26.300781 20.15625 26.699219 20.308594 27.214844 C 20.464844 27.730469 20.523438 28.398438 20.523438 29.25 C 20.523438 30.003906 20.429688 30.613281 20.28125 31.128906 C 20.097656 31.644531 19.855469 32.039062 19.582031 32.34375 C 19.28125 32.675781 18.945312 32.890625 18.550781 33.011719 C 18.15625 33.164062 17.761719 33.222656 17.367188 33.222656 C 16.757812 33.222656 16.183594 33.132812 15.667969 32.921875 C 15.152344 32.707031 14.695312 32.464844 14.332031 32.191406 L 12.996094 34.347656 C 13.449219 34.710938 14.089844 35.042969 14.878906 35.347656 C 15.636719 35.679688 16.578125 35.832031 17.667969 35.832031 C 18.488281 35.832031 19.246094 35.710938 19.976562 35.4375 C 20.675781 35.167969 21.3125 34.773438 21.859375 34.226562 C 22.402344 33.679688 22.832031 32.980469 23.164062 32.160156 C 23.5 31.34375 23.648438 30.371094 23.648438 29.25 Z M 23.648438 29.25 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_11a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_11a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_11a.svg	(revision 36424)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="40px" height="50px" viewBox="0 0 40 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 37.9375 50 C 38.488281 50 39.003906 49.800781 39.394531 49.433594 C 39.785156 49.070312 40 48.585938 40 48.070312 L 40 1.929688 C 40 1.414062 39.785156 0.929688 39.394531 0.566406 C 39.003906 0.199219 38.488281 0 37.9375 0 L 2.0625 0 C 0.925781 0 0 0.867188 0 1.929688 L 0 48.070312 C 0 48.585938 0.214844 49.070312 0.605469 49.433594 C 0.996094 49.800781 1.511719 50 2.0625 50 Z M 37.9375 50 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 2.0625 49.570312 C 1.636719 49.570312 1.234375 49.414062 0.929688 49.132812 C 0.628906 48.847656 0.460938 48.472656 0.460938 48.070312 L 0.460938 1.929688 C 0.460938 1.527344 0.628906 1.152344 0.929688 0.867188 C 1.234375 0.585938 1.636719 0.429688 2.0625 0.429688 L 37.9375 0.429688 C 38.363281 0.429688 38.765625 0.585938 39.070312 0.867188 C 39.371094 1.152344 39.539062 1.527344 39.539062 1.929688 L 39.539062 48.070312 C 39.539062 48.898438 38.820312 49.570312 37.9375 49.570312 L 2.0625 49.570312 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 4.222656 17.777344 C 4.222656 9.636719 11.285156 3.035156 20 3.035156 C 28.714844 3.035156 35.777344 9.636719 35.777344 17.777344 C 35.777344 25.917969 28.714844 32.515625 20 32.515625 C 11.285156 32.515625 4.222656 25.917969 4.222656 17.777344 Z M 20 28.707031 C 26.460938 28.707031 31.699219 23.8125 31.699219 17.777344 C 31.699219 11.742188 26.460938 6.847656 20 6.847656 C 13.539062 6.847656 8.300781 11.742188 8.300781 17.777344 C 8.300781 23.8125 13.539062 28.707031 20 28.707031 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 20.746094 21.664062 C 20.746094 23.160156 22.042969 24.371094 23.644531 24.371094 C 25.242188 24.371094 26.539062 23.160156 26.539062 21.664062 L 26.539062 13.839844 C 26.539062 12.347656 25.242188 11.132812 23.644531 11.132812 C 22.042969 11.132812 20.746094 12.347656 20.746094 13.839844 Z M 24.609375 21.664062 C 24.609375 22.164062 24.175781 22.566406 23.644531 22.566406 C 23.109375 22.566406 22.675781 22.164062 22.675781 21.664062 L 22.675781 13.839844 C 22.675781 13.34375 23.109375 12.9375 23.644531 12.9375 C 24.175781 12.9375 24.609375 13.34375 24.609375 13.839844 L 24.609375 21.664062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 18.691406 17.9375 C 18.578125 17.761719 18.265625 17.648438 18.265625 17.648438 C 18.265625 17.648438 18.484375 17.554688 18.632812 17.40625 C 18.867188 17.171875 18.835938 16.90625 18.835938 16.90625 L 18.835938 13.839844 C 18.835938 12.347656 17.539062 11.132812 15.9375 11.132812 C 14.335938 11.132812 13.039062 12.347656 13.039062 13.839844 L 14.972656 13.839844 C 14.972656 13.34375 15.402344 12.9375 15.9375 12.9375 C 16.472656 12.9375 16.902344 13.34375 16.902344 13.839844 L 16.902344 16.527344 L 16.898438 16.527344 C 16.898438 16.691406 16.753906 16.828125 16.578125 16.828125 L 14.960938 16.828125 L 14.960938 18.515625 L 16.589844 18.515625 C 16.761719 18.519531 16.898438 18.652344 16.898438 18.8125 L 16.902344 18.8125 L 16.902344 21.664062 C 16.902344 22.164062 16.472656 22.566406 15.9375 22.566406 C 15.402344 22.566406 14.972656 22.164062 14.972656 21.664062 L 13.039062 21.664062 C 13.039062 23.160156 14.335938 24.371094 15.9375 24.371094 C 17.539062 24.371094 18.835938 23.160156 18.835938 21.664062 L 18.835938 18.53125 C 18.835938 18.53125 18.863281 18.203125 18.691406 17.9375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 29.417969 43.539062 L 29.417969 44.496094 C 29.417969 44.992188 29.730469 45.265625 30.242188 45.265625 C 30.882812 45.265625 31.03125 44.925781 31.066406 44.589844 L 32.746094 44.589844 C 32.746094 45.234375 32.5 45.730469 32.070312 46.144531 C 31.625 46.578125 31.015625 46.839844 30.242188 46.839844 C 29.21875 46.839844 28.445312 46.390625 28.046875 45.714844 C 27.816406 45.3125 27.734375 44.757812 27.734375 44.128906 L 27.734375 41.554688 C 27.734375 40.921875 27.816406 40.367188 28.046875 39.96875 C 28.445312 39.289062 29.21875 38.84375 30.242188 38.84375 C 31.789062 38.84375 32.746094 39.90625 32.746094 41.277344 L 32.746094 43.539062 Z M 29.417969 42.203125 L 31.066406 42.203125 L 31.066406 41.308594 C 31.066406 40.722656 30.75 40.414062 30.242188 40.414062 C 29.730469 40.414062 29.417969 40.722656 29.417969 41.308594 L 29.417969 42.203125 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 20.917969 38.972656 L 22.601562 38.972656 L 22.597656 39.355469 L 22.632812 39.355469 C 23.214844 38.8125 23.210938 38.8125 23.984375 38.8125 C 24.828125 38.8125 25.945312 39.386719 25.945312 40.789062 L 25.945312 46.78125 L 24.265625 46.78125 L 24.265625 41.375 C 24.265625 40.804688 23.96875 40.453125 23.441406 40.453125 C 22.8125 40.453125 22.601562 40.835938 22.601562 41.527344 L 22.601562 46.78125 L 20.917969 46.78125 L 20.917969 38.972656 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 14.15625 41.550781 C 14.15625 40.917969 14.238281 40.363281 14.472656 39.964844 C 14.867188 39.285156 15.699219 38.839844 16.71875 38.839844 C 17.742188 38.839844 18.574219 39.285156 18.972656 39.964844 C 19.203125 40.363281 19.285156 40.917969 19.285156 41.550781 L 19.285156 44.125 C 19.285156 44.753906 19.203125 45.308594 18.972656 45.710938 C 18.574219 46.386719 17.742188 46.835938 16.71875 46.835938 C 15.699219 46.835938 14.867188 46.386719 14.472656 45.710938 C 14.238281 45.308594 14.15625 44.753906 14.15625 44.125 Z M 15.839844 44.371094 C 15.839844 44.957031 16.210938 45.265625 16.71875 45.265625 C 17.230469 45.265625 17.601562 44.957031 17.601562 44.371094 L 17.601562 41.304688 C 17.601562 40.71875 17.230469 40.410156 16.71875 40.410156 C 16.210938 40.410156 15.839844 40.71875 15.839844 41.304688 L 15.839844 44.371094 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 7.261719 45.40625 L 11.054688 37.304688 L 7.769531 37.304688 L 7.769531 35.824219 L 12.886719 35.824219 L 12.886719 37.074219 L 9.027344 45.316406 L 13.054688 45.316406 L 13.054688 46.792969 L 7.261719 46.792969 L 7.261719 45.40625 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_14a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_14a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_14a.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.191406 0 25 0 C 38.808594 0 50 11.195312 50 25 C 50 38.804688 38.808594 50 25 50 C 11.191406 50 0 38.804688 0 25 Z M 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 43.535156 C 35.238281 43.535156 43.539062 35.238281 43.539062 25 C 43.539062 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.535156 25 43.535156 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 36.625 28.597656 C 36.984375 28.820312 37.523438 29.539062 37.523438 29.539062 C 37.429688 28.773438 36.894531 28.148438 36.894531 28.148438 C 36.175781 27.609375 36.445312 27.472656 35.863281 25.859375 C 35.277344 24.246094 36.175781 23.660156 34.335938 22.496094 C 33.578125 22.015625 32.78125 21.933594 32.332031 21.933594 C 32.3125 21.910156 32.292969 21.890625 32.273438 21.867188 C 31.160156 20.617188 28.625 20.84375 26.808594 20.96875 C 26.574219 20.46875 26.121094 19.503906 25.925781 19.0625 C 25.65625 18.457031 25.925781 17.671875 26.015625 17.292969 C 26.105469 16.910156 26.21875 16.84375 26.261719 15.585938 C 26.304688 14.394531 25.171875 13.910156 25.0625 13.863281 L 25.140625 13.839844 L 24.917969 13.480469 L 24.640625 13.605469 C 24.769531 13.269531 24.792969 12.863281 24.738281 12.625 C 24.570312 11.910156 24.199219 11.394531 23.472656 11.558594 C 23.101562 11.640625 22.839844 11.957031 22.742188 12.359375 L 22.742188 12.289062 C 22.742188 12.289062 22.695312 12.804688 22.359375 12.960938 C 22.359375 12.960938 22.179688 13.230469 22.359375 13.253906 L 22.734375 13.042969 C 22.738281 13.066406 22.742188 13.089844 22.75 13.113281 C 22.863281 13.578125 23.164062 13.933594 23.519531 14.089844 L 23.257812 14.195312 L 23.355469 14.394531 C 23.339844 14.394531 23.304688 14.417969 23.234375 14.488281 C 23.078125 14.644531 22.425781 15.742188 22.246094 16.082031 C 22.066406 16.417969 22.179688 16.347656 21.867188 16.6875 C 21.605469 16.964844 20.214844 18.1875 19.75 18.59375 C 17.589844 16.578125 17.226562 16.65625 16.347656 16.347656 C 15.601562 16.089844 15.039062 16.324219 14.875 16.410156 C 14.367188 16.1875 14.195312 15.945312 14.195312 15.945312 C 14.195312 15.945312 14.109375 16.246094 14.101562 16.5 C 14.03125 16.460938 13.960938 16.417969 13.902344 16.371094 C 13.566406 16.101562 13.230469 16.125 13.230469 16.125 C 13.230469 16.125 13.074219 16.125 13.207031 16.28125 C 13.34375 16.4375 13.398438 16.621094 13.679688 16.753906 C 14 16.90625 14.019531 17.046875 14 17.242188 C 13.734375 17.550781 13.5 17.902344 13.453125 18.210938 C 13.453125 18.210938 13.410156 20.074219 13.34375 20.566406 C 13.34375 20.566406 13.140625 21.777344 13.027344 22.046875 C 13.027344 22.046875 12.804688 22.25 13.097656 22.472656 C 13.097656 22.472656 13.386719 22.628906 13.703125 22.964844 C 13.703125 22.964844 13.8125 23.035156 14.039062 22.875 C 14.039062 22.875 13.925781 23.035156 14.261719 23.011719 C 14.597656 22.988281 14.847656 22.921875 14.890625 22.539062 C 14.902344 22.453125 14.925781 22.34375 14.957031 22.226562 C 15.402344 21.945312 15.921875 21.777344 16.4375 21.621094 C 16.492188 21.601562 16.546875 21.589844 16.601562 21.574219 C 16.742188 22.023438 16.933594 22.476562 17.15625 22.898438 C 17.648438 23.839844 17.605469 24.378906 17.695312 25.140625 C 17.773438 25.816406 17.75 27.296875 18.734375 27.847656 C 18.4375 28.464844 17.722656 29.886719 17.082031 30.6875 C 17.082031 30.6875 16.75 30.839844 16.902344 31.46875 C 16.902344 31.46875 16.902344 31.46875 16.8125 31.765625 C 16.628906 32.371094 15.867188 34.0625 15.597656 34.390625 C 15.597656 34.390625 15.367188 34.617188 15.609375 34.765625 L 15.527344 35.027344 C 15.527344 35.027344 15.089844 35.484375 15.394531 36.269531 L 16.300781 35.871094 L 16.378906 35.828125 C 16.378906 35.828125 16.296875 35.429688 16.265625 35.214844 C 16.234375 35.027344 16.453125 35.113281 16.183594 34.964844 C 16.054688 34.894531 16.183594 34.726562 16.183594 34.726562 C 16.445312 34.625 16.332031 34.335938 16.332031 34.335938 C 16.78125 33.140625 17.171875 31.824219 17.53125 31.617188 C 17.886719 31.40625 17.890625 31.167969 17.890625 31.167969 C 17.890625 31.167969 17.832031 31.148438 17.917969 31.015625 C 18.003906 30.882812 18.984375 29.921875 19.289062 29.644531 C 19.289062 29.652344 19.507812 29.4375 19.664062 29.164062 C 19.820312 28.878906 19.917969 28.53125 19.917969 28.539062 C 19.921875 28.550781 20.042969 28.644531 20.042969 28.644531 C 19.976562 28.753906 19.953125 29.042969 19.8125 29.25 C 19.621094 29.539062 19.3125 29.75 19.3125 29.757812 C 19.421875 30.257812 19.65625 30.933594 20.09375 31.847656 C 20.09375 31.847656 20.027344 32.140625 20.222656 32.273438 C 20.222656 32.273438 21.476562 34.007812 21.714844 34.488281 C 21.957031 34.964844 21.804688 34.90625 22.046875 34.9375 L 22.402344 35.292969 L 22.484375 35.398438 L 22.683594 35.492188 C 22.683594 35.492188 22.75 36.125 23.542969 36.40625 L 23.832031 35.460938 L 23.851562 35.371094 C 23.851562 35.371094 23.496094 35.175781 23.3125 35.058594 C 23.148438 34.960938 23.359375 34.851562 23.070312 34.957031 C 22.929688 35.007812 22.824219 35.054688 22.824219 35.054688 L 22.628906 34.898438 C 22.628906 34.898438 23.121094 34.726562 22.136719 33.890625 C 21.148438 33.050781 21.117188 32.214844 21.117188 32.214844 C 21.296875 31.886719 20.96875 31.707031 20.96875 31.707031 C 21.09375 31.144531 20.910156 29.761719 20.820312 29.582031 C 20.730469 29.402344 20.820312 29.34375 20.878906 29.195312 C 21.039062 28.792969 21.035156 28.40625 20.972656 28.089844 C 21.988281 28.121094 22.921875 28.089844 23.714844 28 C 23.90625 28.113281 24.136719 28.234375 24.378906 28.328125 C 24.960938 28.550781 24.691406 27.96875 24.691406 27.96875 C 24.691406 27.96875 25.363281 28.101562 25.8125 28.148438 C 26.070312 28.171875 26.046875 27.800781 25.980469 27.476562 C 26.566406 27.339844 26.710938 27.429688 26.710938 27.429688 C 26.667969 27.703125 26.90625 27.949219 26.886719 28.179688 C 26.757812 29.835938 27.234375 30.402344 27.339844 30.71875 C 27.457031 31.078125 27.429688 31.976562 27.429688 31.976562 C 27.039062 32.902344 26.203125 34.335938 26.082031 34.695312 C 25.960938 35.054688 26.113281 35.144531 26.113281 35.144531 L 25.933594 35.355469 C 25.425781 35.5625 25.125 36.519531 25.125 36.519531 L 26.441406 36.339844 C 26.890625 35.355469 26.382812 35.445312 26.382812 35.445312 L 26.5625 35.234375 C 27.039062 35.203125 27.070312 34.875 27.070312 34.875 C 27.277344 33.140625 28.683594 31.527344 28.773438 31.226562 C 28.863281 30.929688 28.714844 30.929688 28.652344 30.777344 C 28.59375 30.628906 28.59375 30.152344 28.59375 30.152344 C 28.355469 28.238281 29.550781 27.667969 29.789062 27.460938 C 30.03125 27.25 29.851562 27.039062 29.851562 27.039062 C 29.550781 26.59375 29.460938 25.816406 29.460938 25.816406 L 29.671875 25.589844 C 29.671875 25.589844 30.164062 28.011719 31.691406 29.089844 C 31.691406 29.089844 33.304688 30.929688 33.886719 32.003906 C 34.46875 33.082031 34.113281 32.5 34.246094 33.082031 C 34.382812 33.664062 34.730469 34.890625 35.007812 35.503906 C 35.292969 36.132812 36.191406 36.847656 36.191406 36.847656 L 36.699219 35.804688 C 36.699219 35.804688 36.578125 35.472656 36.039062 35.59375 L 36.101562 35.324219 C 36.101562 35.324219 35.953125 35.472656 35.652344 35.113281 C 35.652344 35.113281 35.53125 35.414062 35.609375 35 C 35.6875 34.585938 35.382812 34.398438 35.382812 34.398438 C 34.8125 33.441406 34.726562 32.304688 34.726562 32.304688 C 34.785156 32.214844 34.785156 32.003906 34.785156 32.003906 C 34.71875 31.542969 34.664062 30.957031 34.246094 30.269531 C 33.667969 29.328125 33.347656 28.28125 33.347656 28.28125 C 33.429688 27.242188 33.652344 24.242188 32.683594 22.457031 C 34.109375 22.566406 34.410156 23.683594 34.203125 23.976562 C 33.976562 24.289062 33.933594 25.050781 34.203125 25.320312 C 34.46875 25.589844 34.246094 25.90625 34.5625 26.667969 C 34.875 27.429688 35.71875 28.417969 35.71875 28.417969 C 35.636719 28.367188 36.015625 28.730469 35.863281 28.460938 C 35.324219 27.519531 34.738281 25.992188 34.738281 25.992188 C 35.277344 26.667969 35.675781 27.8125 35.90625 28.304688 C 36.199219 28.933594 36.332031 29.113281 36.691406 29.425781 C 37.050781 29.738281 37.339844 30.164062 37.339844 30.164062 C 37.386719 29.808594 37.164062 29.449219 36.9375 29.222656 C 36.714844 29 36.625 28.597656 36.625 28.597656 Z M 14.546875 16.679688 C 14.539062 16.675781 14.53125 16.671875 14.523438 16.671875 L 14.570312 16.660156 C 14.5625 16.664062 14.554688 16.671875 14.546875 16.679688 Z M 16.011719 21.328125 C 15.699219 21.441406 15.382812 21.574219 15.136719 21.800781 C 15.121094 21.808594 15.105469 21.820312 15.089844 21.828125 C 15.257812 21.363281 15.472656 20.902344 15.472656 20.902344 C 15.472656 20.902344 16.117188 20.609375 16.34375 19.929688 C 16.421875 19.683594 16.484375 19.152344 16.394531 20.003906 C 16.355469 20.363281 16.398438 20.765625 16.496094 21.179688 C 16.332031 21.21875 16.171875 21.269531 16.011719 21.328125 Z M 22.148438 20.328125 C 21.921875 20.222656 21.6875 20.09375 21.449219 19.945312 C 22.410156 19.460938 23.03125 18.839844 23.03125 18.839844 C 22.835938 19.28125 22.484375 19.839844 22.148438 20.328125 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_14b.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_14b.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_14b.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(92.54902%,10.980392%,14.117648%);fill-opacity:1;" d="M 25.082031 0.164062 C 38.839844 0.164062 50 11.320312 50 25.082031 C 50 38.84375 38.839844 50 25.082031 50 C 11.320312 50 0.164062 38.84375 0.164062 25.082031 C 0.164062 11.320312 11.320312 0.164062 25.082031 0.164062 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25.082031 6.523438 C 14.835938 6.523438 6.523438 14.835938 6.523438 25.082031 C 6.523438 35.328125 14.835938 43.636719 25.082031 43.636719 C 35.328125 43.636719 43.636719 35.328125 43.636719 25.082031 C 43.636719 14.835938 35.328125 6.523438 25.082031 6.523438 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(13.725491%,12.156863%,12.54902%);fill-opacity:1;" d="M 19.988281 37.355469 L 19.710938 37.945312 C 19.628906 38.113281 19.542969 38.277344 19.453125 38.441406 C 19.390625 38.550781 19.328125 38.65625 19.265625 38.761719 C 19.066406 38.726562 18.871094 38.683594 18.679688 38.632812 C 18.449219 38.578125 18.21875 38.511719 17.992188 38.433594 L 18.089844 38.046875 L 17.035156 38.15625 C 16.628906 37.992188 16.234375 37.796875 15.859375 37.574219 C 15.527344 37.382812 15.210938 37.167969 14.910156 36.9375 L 15.21875 36.507812 C 15.34375 36.566406 15.472656 36.613281 15.609375 36.644531 C 15.726562 36.675781 15.851562 36.695312 15.976562 36.699219 C 16.117188 36.707031 16.257812 36.683594 16.398438 36.667969 C 16.613281 36.644531 16.828125 36.609375 17.046875 36.578125 C 17.21875 36.5625 17.390625 36.539062 17.566406 36.511719 C 17.734375 36.488281 17.902344 36.460938 18.070312 36.425781 L 17.769531 36.148438 C 17.886719 35.878906 18.003906 35.609375 18.128906 35.34375 C 18.351562 34.925781 18.566406 34.5 18.773438 34.070312 C 18.878906 33.847656 18.980469 33.625 19.085938 33.398438 C 19.300781 32.921875 19.484375 32.425781 19.660156 31.933594 C 19.765625 31.636719 19.90625 31.347656 20.03125 31.054688 C 20.152344 30.769531 20.285156 30.492188 20.394531 30.199219 C 20.453125 30.039062 20.5 29.875 20.558594 29.714844 C 20.667969 29.394531 20.773438 29.078125 20.902344 28.765625 C 21.046875 28.414062 21.21875 28.070312 21.386719 27.730469 C 21.667969 27.167969 21.96875 26.617188 22.285156 26.070312 C 22.484375 25.726562 22.691406 25.390625 22.90625 25.050781 L 22.910156 25.035156 L 22.59375 22.925781 C 22.441406 22.0625 22.324219 21.191406 22.246094 20.316406 C 22.214844 19.984375 22.1875 19.652344 22.167969 19.320312 L 22.175781 19.3125 C 22.109375 19.390625 22.039062 19.464844 21.972656 19.539062 C 21.839844 19.671875 21.703125 19.800781 21.566406 19.925781 C 21.433594 20.054688 21.300781 20.175781 21.164062 20.296875 C 20.972656 20.46875 20.777344 20.625 20.585938 20.789062 L 20.074219 21.226562 C 19.953125 21.328125 19.832031 21.433594 19.710938 21.53125 C 19.527344 21.675781 19.339844 21.8125 19.15625 21.953125 C 19.023438 22.050781 18.890625 22.148438 18.765625 22.253906 C 18.664062 22.332031 18.566406 22.410156 18.46875 22.492188 L 18.101562 22.335938 L 17.199219 22.871094 L 17.367188 23.222656 C 17.246094 23.355469 17.105469 23.464844 16.953125 23.546875 C 16.769531 23.644531 16.578125 23.71875 16.371094 23.722656 C 16.21875 23.730469 16.066406 23.71875 15.925781 23.65625 C 15.828125 23.613281 15.742188 23.542969 15.660156 23.472656 C 15.550781 23.382812 15.433594 23.292969 15.378906 23.160156 C 15.339844 23.066406 15.332031 22.964844 15.335938 22.867188 C 15.339844 22.722656 15.375 22.578125 15.457031 22.453125 C 15.542969 22.324219 15.691406 22.261719 15.820312 22.175781 C 16.039062 22.035156 16.28125 21.929688 16.527344 21.832031 C 16.695312 21.761719 16.882812 21.742188 17.046875 21.652344 C 17.078125 21.632812 17.113281 21.625 17.140625 21.59375 C 17.175781 21.558594 17.191406 21.507812 17.195312 21.457031 L 17.207031 21.273438 L 19.757812 19.21875 L 20.007812 18.707031 C 20.167969 18.375 20.320312 18.039062 20.492188 17.714844 C 20.671875 17.371094 20.871094 17.03125 21.066406 16.695312 C 21.269531 16.355469 21.4375 15.992188 21.691406 15.6875 C 21.851562 15.488281 22.035156 15.304688 22.230469 15.140625 C 22.429688 14.996094 22.628906 14.855469 22.839844 14.726562 C 22.9375 14.664062 23.035156 14.605469 23.136719 14.546875 L 23.074219 14.277344 C 23.03125 14.285156 22.988281 14.289062 22.945312 14.292969 C 22.898438 14.296875 22.851562 14.300781 22.808594 14.289062 C 22.777344 14.28125 22.746094 14.269531 22.71875 14.25 C 22.691406 14.226562 22.675781 14.195312 22.65625 14.167969 C 22.617188 14.082031 22.582031 13.996094 22.546875 13.910156 C 22.5 13.789062 22.457031 13.667969 22.421875 13.539062 L 22.007812 13.585938 L 22.082031 12.789062 L 21.894531 12.703125 L 21.90625 12.265625 L 21.113281 12.269531 L 21.867188 11.492188 C 21.886719 11.292969 21.914062 11.09375 21.953125 10.898438 C 21.980469 10.78125 22.007812 10.667969 22.03125 10.550781 C 22.070312 10.367188 22.101562 10.179688 22.132812 9.988281 C 22.480469 9.921875 22.835938 9.882812 23.1875 9.863281 C 23.402344 9.855469 23.613281 9.851562 23.832031 9.855469 C 24.117188 9.859375 24.402344 9.875 24.6875 9.898438 L 24.785156 10.242188 L 24.855469 10.542969 L 24.980469 10.914062 L 25.503906 10.925781 C 25.53125 11.042969 25.550781 11.15625 25.566406 11.277344 C 25.578125 11.371094 25.585938 11.464844 25.59375 11.558594 L 25.125 11.730469 C 25.128906 11.875 25.128906 12.019531 25.121094 12.167969 C 25.117188 12.222656 25.128906 12.28125 25.105469 12.332031 C 25.082031 12.367188 25.054688 12.402344 25.027344 12.433594 C 25 12.464844 24.96875 12.488281 24.941406 12.511719 L 25.109375 13.652344 C 25.414062 13.785156 25.722656 13.894531 26.035156 13.992188 C 26.300781 14.074219 26.570312 14.132812 26.835938 14.203125 C 26.992188 14.246094 27.148438 14.273438 27.296875 14.335938 C 27.390625 14.375 27.484375 14.417969 27.574219 14.476562 C 27.675781 14.542969 27.765625 14.628906 27.859375 14.710938 C 27.988281 14.824219 28.101562 14.960938 28.238281 15.070312 C 28.324219 15.144531 28.414062 15.207031 28.503906 15.277344 C 28.625 15.367188 28.75 15.453125 28.867188 15.542969 C 29.308594 15.976562 29.738281 16.421875 30.164062 16.875 C 30.542969 17.289062 30.914062 17.710938 31.28125 18.140625 C 31.289062 18.214844 31.296875 18.289062 31.300781 18.363281 C 31.316406 18.582031 31.289062 18.800781 31.289062 19.015625 C 31.285156 19.277344 31.300781 19.539062 31.308594 19.800781 C 31.3125 20.0625 31.324219 20.320312 31.328125 20.582031 C 31.328125 20.75 31.320312 20.921875 31.328125 21.089844 L 31.4375 21.929688 L 31.519531 22.5 L 31.160156 22.621094 C 31.230469 22.835938 31.289062 23.054688 31.328125 23.273438 C 31.363281 23.46875 31.417969 23.664062 31.398438 23.863281 C 31.382812 24.015625 31.324219 24.160156 31.273438 24.300781 C 31.1875 24.535156 31.101562 24.769531 30.945312 24.964844 C 30.8125 25.128906 30.660156 25.277344 30.472656 25.371094 C 30.378906 25.421875 30.292969 25.507812 30.183594 25.480469 C 30.113281 25.464844 30.054688 25.425781 30.019531 25.363281 C 29.972656 25.296875 29.980469 25.210938 29.988281 25.132812 C 29.992188 25.046875 30.039062 24.96875 30.0625 24.882812 C 30.089844 24.792969 30.125 24.703125 30.140625 24.609375 C 30.164062 24.507812 30.167969 24.402344 30.148438 24.300781 C 30.128906 24.21875 30.097656 24.136719 30.046875 24.066406 C 30.066406 24.214844 30.015625 24.355469 29.910156 24.453125 C 29.871094 24.488281 29.835938 24.550781 29.78125 24.535156 C 29.742188 24.523438 29.722656 24.488281 29.707031 24.457031 C 29.65625 24.378906 29.691406 24.28125 29.691406 24.191406 C 29.6875 24.046875 29.691406 23.902344 29.714844 23.757812 C 29.738281 23.605469 29.792969 23.460938 29.832031 23.3125 C 29.886719 23.175781 29.921875 23.027344 29.945312 22.878906 C 29.964844 22.738281 29.972656 22.59375 29.96875 22.449219 L 29.53125 22.371094 C 29.550781 22.089844 29.566406 21.804688 29.570312 21.519531 C 29.578125 21.082031 29.570312 20.644531 29.539062 20.207031 C 29.5 19.6875 29.433594 19.171875 29.335938 18.65625 C 29.085938 18.484375 28.832031 18.320312 28.570312 18.167969 C 28.269531 17.996094 27.964844 17.835938 27.652344 17.691406 L 27.5625 20.785156 L 29.082031 25.222656 L 28.703125 25.4375 C 28.761719 25.820312 28.832031 26.199219 28.910156 26.578125 C 28.996094 27 29.097656 27.414062 29.203125 27.824219 C 29.292969 28.175781 29.386719 28.523438 29.492188 28.867188 C 29.554688 29.066406 29.609375 29.269531 29.6875 29.46875 C 29.746094 29.621094 29.808594 29.769531 29.878906 29.917969 C 29.988281 30.167969 30.117188 30.410156 30.25 30.648438 C 30.4375 30.992188 30.640625 31.332031 30.855469 31.660156 C 31.109375 32.050781 31.386719 32.429688 31.679688 32.792969 L 32.152344 33.449219 C 32.339844 33.742188 32.53125 34.035156 32.726562 34.324219 C 32.9375 34.640625 33.152344 34.953125 33.375 35.261719 L 33.0625 35.601562 L 32.714844 35.972656 C 32.789062 36.089844 32.855469 36.214844 32.914062 36.34375 L 33.0625 36.765625 L 33.285156 37.382812 L 32.886719 38.003906 L 32.488281 37.902344 C 32.433594 38.125 32.363281 38.339844 32.28125 38.550781 C 32.1875 38.777344 32.082031 38.992188 31.964844 39.199219 C 31.839844 39.222656 31.71875 39.238281 31.597656 39.25 C 31.324219 39.28125 31.050781 39.300781 30.777344 39.300781 L 29.710938 39.308594 L 29.714844 38.859375 C 29.773438 38.851562 29.832031 38.839844 29.890625 38.828125 C 30.015625 38.808594 30.136719 38.777344 30.257812 38.734375 C 30.351562 38.699219 30.445312 38.660156 30.535156 38.609375 L 31.257812 36.78125 L 30.730469 36.796875 C 30.664062 36.671875 30.59375 36.542969 30.523438 36.417969 C 30.390625 36.1875 30.238281 35.972656 30.101562 35.742188 C 30.023438 35.613281 29.953125 35.480469 29.875 35.347656 C 29.777344 35.195312 29.664062 35.050781 29.566406 34.894531 C 29.441406 34.664062 29.3125 34.429688 29.179688 34.203125 C 29.027344 33.933594 28.871094 33.671875 28.707031 33.410156 L 28.292969 32.789062 L 28.191406 32.605469 L 27.9375 32.164062 C 27.835938 31.988281 27.734375 31.8125 27.636719 31.632812 C 27.46875 31.324219 27.3125 31.007812 27.148438 30.699219 C 26.855469 30.164062 26.527344 29.644531 26.238281 29.105469 L 25.660156 27.960938 L 25.386719 27.410156 C 25.15625 27.734375 24.929688 28.054688 24.707031 28.378906 C 24.382812 28.855469 24.050781 29.324219 23.761719 29.824219 C 23.539062 30.203125 23.332031 30.59375 23.144531 30.992188 C 22.980469 31.351562 22.832031 31.710938 22.691406 32.078125 C 22.601562 32.300781 22.519531 32.523438 22.445312 32.746094 L 22.15625 33.394531 C 22.109375 33.523438 22.058594 33.648438 22.007812 33.773438 C 21.90625 34.023438 21.773438 34.261719 21.675781 34.511719 C 21.582031 34.746094 21.511719 34.988281 21.429688 35.230469 L 21.207031 35.90625 C 21.074219 36.257812 20.957031 36.617188 20.859375 36.980469 C 20.804688 37.167969 20.757812 37.355469 20.714844 37.542969 C 20.585938 37.523438 20.464844 37.5 20.34375 37.46875 C 20.21875 37.4375 20.101562 37.398438 19.988281 37.355469 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_16.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_16.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_16.svg	(revision 36424)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.191406 0 25 0 C 38.808594 0 50 11.195312 50 25 C 50 38.804688 38.808594 50 25 50 C 11.191406 50 0 38.804688 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 43.695312 23.410156 C 42.132812 21.847656 40.054688 20.984375 37.84375 20.984375 C 36.785156 20.984375 35.773438 21.1875 34.84375 21.550781 L 32.925781 17.289062 L 33.699219 16.0625 C 35.058594 16.339844 36.394531 16.605469 36.46875 16.605469 C 37.226562 16.605469 37.84375 15.992188 37.84375 15.234375 C 37.84375 14.476562 37.226562 13.859375 36.46875 13.859375 C 36.429688 13.859375 30.808594 13.867188 30.808594 13.867188 C 30.367188 13.867188 30.007812 14.226562 30.007812 14.667969 C 30.007812 15.109375 30.367188 15.46875 30.808594 15.46875 L 30.808594 15.476562 C 30.808594 15.476562 31.648438 15.648438 32.683594 15.859375 L 32.0625 16.84375 L 17.488281 16.84375 C 17.867188 15.710938 18.113281 14.960938 18.113281 14.960938 C 18.117188 14.949219 18.121094 14.9375 18.121094 14.921875 C 18.125 14.910156 18.128906 14.894531 18.132812 14.882812 C 18.132812 14.867188 18.132812 14.855469 18.132812 14.839844 C 18.132812 14.824219 18.136719 14.8125 18.136719 14.796875 C 18.132812 14.785156 18.128906 14.769531 18.128906 14.757812 C 18.125 14.742188 18.125 14.730469 18.121094 14.71875 C 18.117188 14.703125 18.113281 14.691406 18.105469 14.679688 C 18.101562 14.667969 18.097656 14.652344 18.09375 14.640625 C 18.085938 14.628906 18.078125 14.617188 18.070312 14.605469 C 18.0625 14.59375 18.058594 14.582031 18.050781 14.570312 C 18.042969 14.5625 18.03125 14.550781 18.023438 14.542969 C 18.011719 14.53125 18.003906 14.519531 17.992188 14.511719 C 17.984375 14.503906 17.972656 14.496094 17.960938 14.488281 C 17.949219 14.480469 17.9375 14.46875 17.925781 14.460938 C 17.914062 14.457031 17.902344 14.449219 17.886719 14.445312 C 17.875 14.4375 17.863281 14.433594 17.851562 14.425781 L 15.472656 13.601562 L 16.1875 11.734375 L 21.917969 11.667969 L 23.613281 13.203125 C 23.785156 13.359375 24.054688 13.347656 24.210938 13.171875 C 24.367188 13 24.355469 12.730469 24.179688 12.574219 L 22.363281 10.925781 L 22.238281 10.816406 L 22.074219 10.820312 L 15.886719 10.886719 L 15.597656 10.890625 L 14.371094 14.117188 L 14.78125 14.257812 L 17.175781 15.09375 L 15.023438 21.550781 C 14.074219 21.183594 13.058594 20.984375 12.011719 20.984375 C 7.449219 20.984375 3.738281 24.699219 3.738281 29.261719 C 3.738281 31.472656 4.597656 33.546875 6.160156 35.113281 C 7.722656 36.675781 9.800781 37.535156 12.011719 37.535156 C 14.222656 37.535156 16.300781 36.675781 17.863281 35.113281 C 19.425781 33.546875 20.285156 31.472656 20.285156 29.261719 C 20.285156 27.050781 19.425781 24.972656 17.863281 23.410156 C 17.246094 22.796875 16.550781 22.289062 15.800781 21.902344 C 16 21.300781 16.203125 20.695312 16.402344 20.101562 L 22.695312 26.820312 C 22.261719 27.355469 22 28.035156 22 28.777344 C 22 29.605469 22.324219 30.386719 22.910156 30.972656 C 23.5 31.5625 24.28125 31.882812 25.109375 31.882812 C 25.234375 31.882812 25.355469 31.875 25.476562 31.859375 L 25.632812 32.550781 L 24.625 32.550781 L 24.625 33.523438 L 27.414062 33.523438 L 27.414062 32.550781 L 26.128906 32.550781 L 25.953125 31.765625 C 26.460938 31.625 26.925781 31.355469 27.308594 30.972656 C 27.765625 30.515625 28.058594 29.941406 28.167969 29.316406 L 29.574219 29.371094 C 29.601562 31.539062 30.457031 33.574219 31.992188 35.113281 C 33.554688 36.675781 35.632812 37.535156 37.84375 37.535156 C 40.054688 37.535156 42.132812 36.675781 43.695312 35.113281 C 45.257812 33.546875 46.117188 31.472656 46.117188 29.261719 C 46.117188 27.050781 45.257812 24.972656 43.695312 23.410156 Z M 16.832031 24.4375 C 18.121094 25.726562 18.832031 27.441406 18.832031 29.261719 C 18.832031 33.019531 15.769531 36.078125 12.011719 36.078125 C 10.191406 36.078125 8.476562 35.371094 7.191406 34.082031 C 5.902344 32.792969 5.191406 31.082031 5.191406 29.261719 C 5.191406 27.441406 5.902344 25.726562 7.191406 24.4375 C 8.476562 23.152344 10.191406 22.441406 12.011719 22.441406 C 12.898438 22.441406 13.761719 22.613281 14.5625 22.933594 L 13.0625 27.429688 C 12.949219 27.738281 12.503906 28.621094 11.863281 28.863281 C 11.644531 28.945312 11.53125 29.191406 11.613281 29.410156 C 11.695312 29.628906 11.941406 29.742188 12.160156 29.65625 C 13.300781 29.230469 13.84375 27.769531 13.867188 27.707031 C 13.867188 27.703125 14.53125 25.710938 15.332031 23.304688 C 15.875 23.609375 16.382812 23.988281 16.832031 24.4375 Z M 34.070312 21.902344 C 31.605469 23.167969 29.859375 25.632812 29.605469 28.523438 L 28.203125 28.46875 C 28.132812 27.753906 27.820312 27.09375 27.308594 26.578125 C 27.257812 26.53125 27.207031 26.484375 27.15625 26.441406 L 32.382812 18.152344 Z M 34.664062 23.226562 L 37.175781 28.8125 L 31.058594 28.578125 C 31.214844 27.015625 31.898438 25.566406 33.023438 24.4375 C 33.515625 23.949219 34.066406 23.542969 34.664062 23.226562 Z M 24.503906 27.507812 L 23.820312 26.777344 C 23.964844 26.679688 24.125 26.601562 24.289062 26.542969 Z M 24.757812 26.421875 C 24.875 26.40625 24.992188 26.394531 25.109375 26.394531 C 25.398438 26.394531 25.679688 26.449219 25.941406 26.546875 L 25.089844 27.898438 Z M 26.761719 27.066406 C 26.773438 27.074219 26.78125 27.082031 26.792969 27.09375 C 27.164062 27.460938 27.394531 27.933594 27.464844 28.441406 L 25.929688 28.382812 Z M 17.164062 17.8125 L 31.449219 17.8125 L 26.335938 25.917969 C 25.953125 25.757812 25.539062 25.667969 25.109375 25.667969 C 24.9375 25.667969 24.765625 25.6875 24.601562 25.714844 L 24.253906 24.167969 L 25.351562 24.167969 L 25.351562 23.195312 L 22.5625 23.195312 L 22.5625 24.167969 L 23.757812 24.167969 L 24.128906 25.828125 C 23.835938 25.925781 23.5625 26.066406 23.316406 26.242188 L 16.707031 19.183594 C 16.867188 18.703125 17.019531 18.242188 17.164062 17.8125 Z M 25.109375 31.15625 C 24.472656 31.15625 23.875 30.910156 23.425781 30.460938 C 22.976562 30.007812 22.730469 29.410156 22.730469 28.777344 C 22.730469 28.257812 22.894531 27.765625 23.199219 27.359375 L 24.871094 29.140625 L 25.316406 31.144531 C 25.25 31.152344 25.179688 31.15625 25.109375 31.15625 Z M 25.792969 31.054688 L 25.382812 29.210938 L 27.433594 29.289062 C 27.246094 30.132812 26.613281 30.808594 25.792969 31.054688 Z M 37.84375 36.078125 C 36.023438 36.078125 34.308594 35.371094 33.023438 34.082031 C 31.773438 32.832031 31.070312 31.183594 31.027344 29.425781 L 37.828125 29.683594 L 38.246094 29.625 L 38.230469 29.085938 L 35.4375 22.878906 C 36.199219 22.59375 37.007812 22.441406 37.84375 22.441406 C 39.664062 22.441406 41.378906 23.152344 42.667969 24.4375 C 43.953125 25.726562 44.664062 27.441406 44.664062 29.261719 C 44.664062 33.019531 41.605469 36.078125 37.84375 36.078125 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17.svg	(revision 36424)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.191406 0 25 0 C 38.808594 0 50 11.195312 50 25 C 50 38.804688 38.808594 50 25 50 C 11.191406 50 0 38.804688 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 38.417969 34.050781 C 38.417969 34.050781 38.417969 32.535156 38.039062 30.957031 C 37.757812 29.777344 37.089844 28.636719 36.765625 28.132812 C 36.730469 28.039062 36.671875 27.945312 36.585938 27.863281 L 36 27.746094 C 36.828125 27.351562 37.402344 26.503906 37.402344 25.527344 C 37.402344 24.167969 36.300781 23.070312 34.945312 23.070312 C 33.589844 23.070312 32.492188 24.167969 32.492188 25.527344 C 32.492188 26.375 32.652344 27.230469 33.304688 27.671875 C 33.515625 27.816406 33.828125 27.894531 34.152344 27.9375 L 33.683594 27.988281 C 33.683594 27.988281 33.71875 27.988281 33.65625 28.132812 C 33.332031 28.222656 32.613281 28.328125 31.285156 28.113281 C 29.984375 27.90625 29.519531 27.027344 29.355469 26.460938 C 29.460938 26.363281 29.558594 26.253906 29.640625 26.136719 C 30.0625 25.546875 29.8125 24.703125 29.265625 24.328125 C 29.074219 24.195312 28.929688 24.042969 28.824219 23.898438 C 29.039062 23.507812 29.136719 23.191406 29.136719 23.191406 C 28.675781 21.886719 27.539062 18.558594 27.539062 18.558594 C 27.242188 15.738281 27.242188 12.203125 27.242188 12.203125 C 27.242188 12.203125 27.320312 11.597656 26.484375 11.066406 C 24.484375 9.800781 22.9375 9.285156 22.339844 9.117188 L 22.273438 8.316406 C 22.804688 7.882812 23.210938 7.183594 23.433594 6.433594 C 23.445312 6.394531 23.453125 6.355469 23.460938 6.316406 C 24.023438 6.40625 24.441406 6.460938 24.589844 6.460938 C 25.222656 6.460938 25.160156 5.953125 24.339844 5.511719 C 24.097656 5.382812 23.890625 5.285156 23.671875 5.207031 C 23.734375 4.855469 23.890625 3.960938 23.992188 3.460938 C 24.117188 2.828125 23.359375 2.671875 22.730469 2.828125 C 22.097656 2.988281 21.277344 2.609375 20.929688 2.386719 C 20.582031 2.164062 20.394531 2.261719 20.109375 2.574219 C 19.875 2.835938 19.453125 4.066406 19.308594 4.503906 L 17.835938 4.4375 C 17.835938 4.4375 16.511719 4.882812 17.582031 5.195312 C 17.855469 5.277344 18.398438 5.398438 19.066406 5.53125 C 19.042969 5.628906 19.023438 5.734375 19.007812 5.835938 C 18.875 6.824219 19.222656 7.746094 19.847656 8.28125 L 19.703125 8.851562 C 19.332031 9.019531 18.503906 9.410156 16.699219 10.308594 C 15.113281 11.101562 14.546875 11.652344 14.355469 11.984375 L 14.320312 11.910156 C 14.320312 11.910156 13.101562 17.210938 13.058594 20.117188 C 13.015625 23.023438 13.015625 25.757812 13.015625 25.757812 L 13.714844 25.757812 C 13.578125 26.457031 13.5 27.160156 13.648438 27.863281 C 13.691406 28.15625 13.941406 28.492188 14.238281 28.578125 C 14.617188 28.660156 14.617188 28.535156 14.996094 28.535156 C 14.996094 28.449219 15.609375 28.195312 15.625 28.15625 C 15.753906 27.863281 15.878906 27.398438 15.457031 26.808594 C 15.226562 26.484375 15.164062 26.390625 15.035156 26.011719 C 15.015625 25.933594 14.953125 25.84375 14.882812 25.757812 L 15.332031 25.757812 C 15.332031 25.757812 15.332031 25.546875 15.542969 22.304688 C 15.746094 19.1875 15.753906 19.382812 16.429688 17.1875 L 16.550781 17.464844 C 17.855469 22.222656 16.804688 23.148438 16.34375 24.578125 C 16.253906 24.851562 16.089844 26.558594 16.46875 26.683594 C 16.601562 26.726562 16.753906 26.761719 16.921875 26.792969 C 16.875 27.828125 16.875 29.695312 17.140625 32.746094 C 17.605469 38.046875 18.445312 40.636719 18.277344 41.941406 C 18.277344 41.941406 15.921875 41.878906 16.511719 43.351562 C 17.097656 44.824219 18.445312 45.496094 18.445312 45.496094 L 18.785156 45.457031 L 18.953125 45.875 L 19.667969 46.296875 C 19.667969 46.296875 20.257812 46.507812 20.59375 46.042969 C 20.929688 45.582031 20.847656 45.246094 20.847656 45.246094 L 21.097656 44.152344 C 21.097656 44.152344 21.097656 39.351562 20.550781 36.574219 C 20.003906 33.796875 20.257812 32.28125 20.46875 31.101562 C 20.546875 30.664062 20.710938 30.335938 20.886719 30.097656 C 21.261719 30.941406 21.710938 31.867188 22.238281 32.824219 C 22.339844 34.742188 22.570312 39.617188 22.402344 41.625 C 22.390625 41.769531 22.382812 41.902344 22.375 42.023438 L 21.8125 42.445312 C 21.8125 42.445312 21.75 43.140625 21.941406 43.265625 C 22.128906 43.394531 22.191406 43.898438 22.191406 43.898438 C 22.191406 43.898438 22.824219 44.53125 23.328125 45.351562 C 23.835938 46.171875 24.84375 46.109375 25.222656 45.980469 C 25.601562 45.855469 25.539062 46.359375 25.476562 45.097656 C 25.429688 44.164062 24.898438 43.230469 24.625 42.808594 C 25.113281 42.75 25.535156 42.667969 25.601562 42.550781 C 25.75 42.292969 25.734375 35.285156 25.730469 33.496094 C 25.753906 33.46875 25.769531 33.460938 25.769531 33.460938 C 25.769531 33.460938 26.078125 29.058594 24.109375 26.320312 C 24.558594 26.238281 24.921875 26.191406 25.097656 26.011719 C 25.480469 25.613281 25.265625 25 25.265625 25 C 25.265625 25 25.144531 24.84375 24.675781 23.398438 C 23.707031 20.410156 24.800781 17.128906 24.800781 17.128906 C 24.800781 17.128906 25.179688 19.90625 25.519531 20.957031 C 25.855469 22.011719 27.496094 25.210938 27.496094 25.210938 C 27.601562 25.164062 27.703125 25.109375 27.796875 25.050781 C 27.792969 25.261719 27.78125 25.488281 27.75 25.671875 C 27.664062 26.179688 27.664062 26.304688 28.085938 26.683594 C 28.15625 26.75 28.238281 26.792969 28.324219 26.816406 C 28.277344 27.417969 28.300781 28.585938 29.011719 29.691406 C 29.367188 30.25 30.648438 30.691406 31.664062 30.964844 C 29.726562 33.414062 27.8125 34.808594 27.8125 34.808594 C 27.8125 34.808594 28.195312 35.578125 29.105469 36.304688 C 28.957031 37.679688 28.699219 40.449219 28.886719 41.75 C 29.136719 43.519531 29.328125 42.195312 29.453125 43.078125 C 29.457031 43.097656 29.460938 43.117188 29.464844 43.140625 C 29.242188 43.109375 29.035156 43.152344 28.878906 43.28125 C 28.5 43.59375 28.5625 44.296875 29.019531 44.847656 C 29.472656 45.398438 30.152344 45.589844 30.53125 45.273438 C 30.632812 45.191406 30.703125 45.074219 30.742188 44.945312 L 30.78125 44.972656 C 30.78125 44.972656 30.96875 44.277344 30.84375 43.394531 C 30.722656 42.558594 30.546875 41.382812 31.597656 37.945312 C 31.625 38.839844 31.714844 39.898438 31.980469 40.425781 C 32.484375 41.4375 32.800781 41.4375 33.179688 42.003906 C 33.445312 42.402344 33.398438 43.113281 33.347656 43.5 C 32.800781 43.929688 32.558594 44.421875 32.671875 44.65625 C 33.074219 45.457031 33.707031 45.023438 34.355469 44.570312 C 34.777344 44.277344 35.050781 43.875 35.109375 43.523438 L 35.136719 43.519531 C 35.136719 43.519531 36.082031 43.773438 34.691406 41.625 C 33.878906 40.367188 33.9375 39.792969 34.25 38.65625 C 34.402344 38.121094 34.535156 37.714844 34.636719 37.429688 C 34.9375 37.371094 35.25 37.300781 35.578125 37.207031 C 35.578125 37.207031 35.007812 35.753906 35.199219 34.113281 C 35.273438 33.46875 35.492188 32.59375 35.734375 31.765625 C 36.6875 32.246094 36.886719 33.40625 36.714844 33.984375 C 36.558594 34.5 36.40625 34.929688 36.351562 35.074219 C 35.949219 35.203125 35.648438 35.65625 35.648438 36.195312 C 35.648438 36.835938 36.070312 37.355469 36.585938 37.355469 C 37.105469 37.355469 37.523438 36.835938 37.523438 36.195312 C 37.523438 36.015625 37.492188 35.84375 37.429688 35.6875 C 38.300781 35 38.417969 34.050781 38.417969 34.050781 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17a-a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17a-a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17a-a.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.195312 0 25 0 C 38.804688 0 50 11.195312 50 25 C 50 38.804688 38.804688 50 25 50 C 11.195312 50 0 38.804688 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 36.476562 10.464844 C 35.496094 9.480469 34.1875 8.941406 32.796875 8.941406 C 32.132812 8.941406 31.496094 9.066406 30.910156 9.296875 L 29.707031 6.617188 L 30.191406 5.84375 C 31.046875 6.019531 31.886719 6.183594 31.933594 6.183594 C 32.410156 6.183594 32.796875 5.800781 32.796875 5.324219 C 32.796875 4.847656 32.410156 4.460938 31.933594 4.460938 C 31.910156 4.460938 28.375 4.464844 28.375 4.464844 C 28.097656 4.464844 27.871094 4.6875 27.871094 4.96875 C 27.871094 5.246094 28.097656 5.46875 28.375 5.46875 L 28.375 5.476562 C 28.375 5.476562 28.902344 5.582031 29.550781 5.714844 L 29.160156 6.335938 L 19.996094 6.335938 C 20.234375 5.625 20.390625 5.152344 20.390625 5.152344 C 20.394531 5.144531 20.394531 5.136719 20.398438 5.128906 C 20.398438 5.121094 20.402344 5.109375 20.402344 5.101562 C 20.402344 5.09375 20.402344 5.082031 20.402344 5.074219 C 20.402344 5.066406 20.40625 5.058594 20.402344 5.050781 C 20.402344 5.039062 20.402344 5.03125 20.398438 5.023438 C 20.398438 5.015625 20.398438 5.007812 20.394531 5 C 20.394531 4.988281 20.390625 4.984375 20.386719 4.972656 C 20.382812 4.964844 20.382812 4.957031 20.378906 4.949219 C 20.375 4.941406 20.367188 4.9375 20.363281 4.929688 C 20.359375 4.921875 20.355469 4.914062 20.351562 4.90625 C 20.34375 4.902344 20.339844 4.894531 20.332031 4.886719 C 20.328125 4.882812 20.324219 4.875 20.316406 4.867188 C 20.308594 4.863281 20.300781 4.859375 20.292969 4.855469 C 20.289062 4.847656 20.28125 4.84375 20.273438 4.839844 C 20.265625 4.832031 20.257812 4.832031 20.25 4.828125 C 20.242188 4.824219 20.234375 4.820312 20.226562 4.816406 L 18.730469 4.296875 L 19.179688 3.121094 L 22.78125 3.082031 L 23.847656 4.046875 C 23.957031 4.144531 24.125 4.136719 24.226562 4.027344 C 24.324219 3.917969 24.316406 3.75 24.207031 3.652344 L 23.0625 2.617188 L 22.984375 2.546875 L 22.878906 2.546875 L 18.992188 2.589844 L 18.808594 2.589844 L 18.035156 4.621094 L 19.800781 5.234375 L 18.449219 9.296875 C 17.851562 9.0625 17.210938 8.941406 16.554688 8.941406 C 13.683594 8.941406 11.351562 11.273438 11.351562 14.144531 C 11.351562 15.535156 11.890625 16.839844 12.875 17.824219 C 13.855469 18.804688 15.164062 19.347656 16.554688 19.347656 C 17.945312 19.347656 19.25 18.804688 20.234375 17.824219 C 21.214844 16.839844 21.757812 15.535156 21.757812 14.144531 C 21.757812 12.753906 21.214844 11.449219 20.234375 10.464844 C 19.847656 10.078125 19.410156 9.761719 18.9375 9.515625 C 19.0625 9.140625 19.191406 8.757812 19.316406 8.382812 L 23.273438 12.609375 C 23 12.945312 22.835938 13.375 22.835938 13.839844 C 22.835938 14.359375 23.039062 14.851562 23.410156 15.21875 C 23.777344 15.589844 24.269531 15.792969 24.789062 15.792969 C 24.867188 15.792969 24.945312 15.785156 25.019531 15.777344 L 25.117188 16.214844 L 24.484375 16.214844 L 24.484375 16.824219 L 26.238281 16.824219 L 26.238281 16.214844 L 25.433594 16.214844 L 25.320312 15.71875 C 25.640625 15.628906 25.929688 15.460938 26.171875 15.21875 C 26.460938 14.933594 26.644531 14.570312 26.714844 14.179688 L 27.597656 14.214844 C 27.613281 15.578125 28.152344 16.855469 29.117188 17.824219 C 30.101562 18.804688 31.40625 19.347656 32.796875 19.347656 C 34.1875 19.347656 35.496094 18.804688 36.476562 17.824219 C 37.460938 16.839844 38 15.535156 38 14.144531 C 38 12.753906 37.460938 11.449219 36.476562 10.464844 Z M 19.585938 11.113281 C 20.394531 11.921875 20.84375 13 20.84375 14.144531 C 20.84375 16.507812 18.917969 18.433594 16.554688 18.433594 C 15.40625 18.433594 14.332031 17.984375 13.523438 17.175781 C 12.710938 16.367188 12.265625 15.289062 12.265625 14.144531 C 12.265625 13 12.710938 11.921875 13.523438 11.113281 C 14.332031 10.300781 15.40625 9.855469 16.554688 9.855469 C 17.113281 9.855469 17.65625 9.964844 18.15625 10.164062 L 17.214844 12.992188 C 17.144531 13.1875 16.863281 13.742188 16.460938 13.894531 C 16.320312 13.945312 16.253906 14.101562 16.304688 14.238281 C 16.355469 14.375 16.507812 14.445312 16.648438 14.394531 C 17.363281 14.125 17.707031 13.207031 17.71875 13.167969 C 17.722656 13.164062 18.136719 11.910156 18.644531 10.398438 C 18.984375 10.589844 19.300781 10.828125 19.585938 11.113281 Z M 30.425781 9.515625 C 28.875 10.3125 27.777344 11.863281 27.617188 13.679688 L 26.734375 13.644531 C 26.691406 13.195312 26.496094 12.78125 26.171875 12.457031 C 26.140625 12.425781 26.109375 12.398438 26.078125 12.371094 L 29.363281 7.160156 Z M 30.796875 10.347656 L 32.378906 13.859375 L 28.53125 13.714844 C 28.628906 12.730469 29.058594 11.820312 29.765625 11.113281 C 30.074219 10.800781 30.421875 10.546875 30.796875 10.347656 Z M 24.410156 13.042969 L 23.976562 12.582031 C 24.070312 12.519531 24.171875 12.472656 24.273438 12.433594 Z M 24.570312 12.359375 C 24.640625 12.347656 24.714844 12.34375 24.789062 12.34375 C 24.972656 12.34375 25.148438 12.375 25.3125 12.4375 L 24.777344 13.289062 Z M 25.828125 12.761719 C 25.835938 12.769531 25.84375 12.773438 25.847656 12.78125 C 26.082031 13.011719 26.226562 13.308594 26.269531 13.628906 L 25.308594 13.589844 Z M 19.792969 6.945312 L 28.777344 6.945312 L 25.5625 12.042969 C 25.320312 11.9375 25.058594 11.882812 24.789062 11.882812 C 24.679688 11.882812 24.574219 11.894531 24.46875 11.914062 L 24.253906 10.941406 L 24.941406 10.941406 L 24.941406 10.332031 L 23.1875 10.941406 L 23.9375 10.941406 L 24.171875 11.984375 C 23.988281 12.046875 23.816406 12.136719 23.664062 12.246094 L 19.507812 7.808594 C 19.605469 7.503906 19.703125 7.214844 19.792969 6.945312 Z M 24.789062 15.335938 C 24.390625 15.335938 24.015625 15.179688 23.730469 14.898438 C 23.449219 14.613281 23.292969 14.238281 23.292969 13.839844 C 23.292969 13.511719 23.398438 13.203125 23.589844 12.945312 L 24.59375 14.019531 L 24.640625 14.066406 L 24.921875 15.328125 C 24.878906 15.332031 24.835938 15.335938 24.789062 15.335938 Z M 25.222656 15.273438 L 24.960938 14.113281 L 26.25 14.160156 C 26.132812 14.691406 25.734375 15.117188 25.222656 15.273438 Z M 32.796875 18.433594 C 31.652344 18.433594 30.574219 17.984375 29.765625 17.175781 C 28.980469 16.390625 28.539062 15.355469 28.511719 14.246094 L 32.789062 14.410156 L 33.050781 14.371094 L 33.039062 14.035156 L 31.285156 10.128906 C 31.761719 9.949219 32.273438 9.855469 32.796875 9.855469 C 33.941406 9.855469 35.019531 10.300781 35.828125 11.113281 C 36.640625 11.921875 37.085938 13 37.085938 14.144531 C 37.085938 16.507812 35.164062 18.433594 32.796875 18.433594 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 35.425781 40.027344 C 35.425781 40.027344 35.425781 38.992188 35.167969 37.914062 C 34.976562 37.109375 34.515625 36.332031 34.296875 35.984375 C 34.273438 35.921875 34.234375 35.859375 34.175781 35.800781 L 33.773438 35.71875 C 34.339844 35.449219 34.730469 34.871094 34.730469 34.203125 C 34.730469 33.277344 33.980469 32.523438 33.054688 32.523438 C 32.125 32.523438 31.375 33.277344 31.375 34.203125 C 31.375 34.78125 31.484375 35.367188 31.929688 35.671875 C 32.074219 35.769531 32.289062 35.820312 32.511719 35.851562 L 32.191406 35.886719 C 32.191406 35.886719 32.214844 35.886719 32.171875 35.984375 C 31.949219 36.046875 31.460938 36.117188 30.550781 35.972656 C 29.660156 35.828125 29.34375 35.230469 29.230469 34.839844 C 29.304688 34.777344 29.371094 34.703125 29.429688 34.621094 C 29.714844 34.21875 29.542969 33.640625 29.167969 33.382812 C 29.039062 33.292969 28.941406 33.191406 28.867188 33.09375 C 29.015625 32.824219 29.082031 32.605469 29.082031 32.605469 C 28.765625 31.714844 27.988281 29.441406 27.988281 29.441406 C 27.789062 27.515625 27.789062 25.097656 27.789062 25.097656 C 27.789062 25.097656 27.839844 24.683594 27.269531 24.320312 C 25.902344 23.453125 24.847656 23.101562 24.4375 22.988281 L 24.390625 22.441406 C 24.753906 22.144531 25.03125 21.667969 25.183594 21.15625 C 25.191406 21.128906 25.199219 21.101562 25.203125 21.074219 C 25.589844 21.132812 25.875 21.171875 25.976562 21.171875 C 26.40625 21.171875 26.363281 20.824219 25.804688 20.523438 C 25.640625 20.433594 25.496094 20.367188 25.347656 20.316406 C 25.390625 20.074219 25.5 19.460938 25.566406 19.121094 C 25.652344 18.691406 25.132812 18.582031 24.703125 18.691406 C 24.273438 18.796875 23.710938 18.539062 23.472656 18.386719 C 23.234375 18.238281 23.105469 18.300781 22.914062 18.515625 C 22.753906 18.695312 22.464844 19.535156 22.363281 19.835938 L 21.359375 19.789062 C 21.359375 19.789062 20.453125 20.09375 21.1875 20.308594 C 21.371094 20.363281 21.742188 20.445312 22.199219 20.535156 C 22.183594 20.605469 22.167969 20.675781 22.160156 20.746094 C 22.066406 21.421875 22.304688 22.050781 22.734375 22.417969 L 22.632812 22.808594 C 22.382812 22.921875 21.8125 23.1875 20.582031 23.804688 C 19.5 24.34375 19.109375 24.71875 18.980469 24.949219 L 18.957031 24.898438 C 18.957031 24.898438 18.121094 28.523438 18.09375 30.507812 C 18.066406 32.492188 18.066406 34.363281 18.066406 34.363281 L 18.542969 34.363281 C 18.449219 34.839844 18.394531 35.320312 18.496094 35.800781 C 18.523438 36 18.699219 36.230469 18.898438 36.289062 C 19.15625 36.347656 19.15625 36.261719 19.417969 36.261719 C 19.417969 36.203125 19.835938 36.027344 19.847656 36 C 19.933594 35.800781 20.019531 35.484375 19.734375 35.082031 C 19.574219 34.859375 19.53125 34.792969 19.445312 34.535156 C 19.433594 34.480469 19.386719 34.421875 19.339844 34.363281 L 19.648438 34.363281 C 19.648438 34.363281 19.648438 34.21875 19.789062 32.003906 C 19.929688 29.871094 19.933594 30.003906 20.394531 28.503906 L 20.480469 28.695312 C 21.371094 31.945312 20.652344 32.578125 20.335938 33.554688 C 20.277344 33.742188 20.164062 34.910156 20.421875 34.996094 C 20.515625 35.023438 20.617188 35.050781 20.730469 35.070312 C 20.699219 35.777344 20.703125 37.054688 20.882812 39.136719 C 21.199219 42.761719 21.777344 44.53125 21.660156 45.421875 C 21.660156 45.421875 20.050781 45.378906 20.453125 46.386719 C 20.855469 47.394531 21.777344 47.855469 21.777344 47.855469 L 22.007812 47.824219 L 22.121094 48.113281 L 22.609375 48.402344 C 22.609375 48.402344 23.011719 48.542969 23.242188 48.226562 C 23.472656 47.910156 23.414062 47.683594 23.414062 47.683594 L 23.589844 46.933594 C 23.589844 46.933594 23.589844 43.652344 23.214844 41.753906 C 22.839844 39.855469 23.011719 38.820312 23.15625 38.015625 C 23.210938 37.714844 23.324219 37.492188 23.445312 37.328125 C 23.699219 37.902344 24.007812 38.535156 24.367188 39.191406 C 24.4375 40.503906 24.59375 43.835938 24.480469 45.207031 C 24.472656 45.308594 24.464844 45.398438 24.460938 45.480469 L 24.078125 45.769531 C 24.078125 45.769531 24.035156 46.242188 24.164062 46.328125 C 24.292969 46.414062 24.335938 46.761719 24.335938 46.761719 C 24.335938 46.761719 24.769531 47.191406 25.113281 47.753906 C 25.457031 48.3125 26.148438 48.269531 26.40625 48.183594 C 26.667969 48.097656 26.625 48.445312 26.578125 47.582031 C 26.546875 46.941406 26.1875 46.304688 26 46.015625 C 26.332031 45.976562 26.621094 45.917969 26.667969 45.839844 C 26.765625 45.664062 26.757812 40.875 26.753906 39.648438 C 26.769531 39.632812 26.78125 39.625 26.78125 39.625 C 26.78125 39.625 26.992188 36.617188 25.644531 34.746094 C 25.953125 34.691406 26.203125 34.65625 26.320312 34.535156 C 26.582031 34.261719 26.4375 33.84375 26.4375 33.84375 C 26.4375 33.84375 26.355469 33.738281 26.035156 32.75 C 25.371094 30.707031 26.121094 28.464844 26.121094 28.464844 C 26.121094 28.464844 26.378906 30.363281 26.609375 31.082031 C 26.839844 31.800781 27.960938 33.988281 27.960938 33.988281 C 28.035156 33.957031 28.101562 33.917969 28.167969 33.878906 C 28.164062 34.023438 28.15625 34.175781 28.132812 34.304688 C 28.074219 34.648438 28.074219 34.734375 28.363281 34.996094 C 28.414062 35.039062 28.46875 35.070312 28.527344 35.085938 C 28.496094 35.496094 28.511719 36.292969 28.996094 37.050781 C 29.242188 37.433594 30.117188 37.734375 30.808594 37.921875 C 29.484375 39.59375 28.175781 40.546875 28.175781 40.546875 C 28.175781 40.546875 28.441406 41.074219 29.0625 41.570312 C 28.960938 42.511719 28.785156 44.40625 28.910156 45.292969 C 29.082031 46.503906 29.210938 45.59375 29.296875 46.199219 C 29.300781 46.214844 29.304688 46.226562 29.304688 46.242188 C 29.15625 46.222656 29.015625 46.25 28.90625 46.339844 C 28.648438 46.554688 28.691406 47.03125 29 47.410156 C 29.3125 47.785156 29.777344 47.917969 30.035156 47.703125 C 30.105469 47.644531 30.152344 47.566406 30.179688 47.476562 L 30.203125 47.496094 C 30.203125 47.496094 30.335938 47.019531 30.246094 46.414062 C 30.167969 45.84375 30.046875 45.042969 30.765625 42.691406 C 30.78125 43.304688 30.84375 44.027344 31.023438 44.386719 C 31.371094 45.078125 31.585938 45.078125 31.84375 45.464844 C 32.027344 45.738281 31.996094 46.226562 31.960938 46.488281 C 31.589844 46.785156 31.421875 47.121094 31.5 47.277344 C 31.773438 47.828125 32.207031 47.53125 32.648438 47.222656 C 32.9375 47.019531 33.125 46.746094 33.164062 46.503906 L 33.183594 46.503906 C 33.183594 46.503906 33.832031 46.675781 32.878906 45.207031 C 32.324219 44.347656 32.363281 43.957031 32.578125 43.179688 C 32.679688 42.8125 32.773438 42.535156 32.839844 42.339844 C 33.046875 42.300781 33.261719 42.25 33.484375 42.1875 C 33.484375 42.1875 33.097656 41.195312 33.226562 40.074219 C 33.277344 39.632812 33.425781 39.035156 33.589844 38.46875 C 34.246094 38.796875 34.378906 39.589844 34.261719 39.984375 C 34.15625 40.335938 34.050781 40.632812 34.015625 40.730469 C 33.738281 40.816406 33.535156 41.128906 33.535156 41.496094 C 33.535156 41.933594 33.820312 42.289062 34.175781 42.289062 C 34.527344 42.289062 34.816406 41.933594 34.816406 41.496094 C 34.816406 41.371094 34.792969 41.253906 34.75 41.148438 C 35.34375 40.675781 35.425781 40.027344 35.425781 40.027344 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17a-b.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17a-b.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17a-b.svg	(revision 36424)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 0 25 C 0 11.191406 11.191406 0 25 0 C 38.808594 0 50 11.191406 50 25 C 50 38.808594 38.808594 50 25 50 C 11.191406 50 0 38.808594 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 22.476562 24.125 C 21.640625 23.289062 20.527344 22.828125 19.34375 22.828125 C 18.777344 22.828125 18.238281 22.9375 17.738281 23.132812 L 16.710938 20.851562 L 17.125 20.191406 C 17.851562 20.339844 18.570312 20.484375 18.609375 20.484375 C 19.015625 20.484375 19.34375 20.152344 19.34375 19.746094 C 19.34375 19.34375 19.015625 19.011719 18.609375 19.011719 C 18.589844 19.011719 15.578125 19.015625 15.578125 19.015625 C 15.34375 19.015625 15.148438 19.207031 15.148438 19.445312 C 15.148438 19.683594 15.34375 19.875 15.578125 19.875 L 15.578125 19.878906 C 15.578125 19.878906 16.027344 19.96875 16.582031 20.082031 L 16.25 20.609375 L 8.445312 20.609375 C 8.648438 20.003906 8.78125 19.605469 8.78125 19.605469 C 8.78125 19.597656 8.785156 19.589844 8.785156 19.582031 C 8.789062 19.574219 8.789062 19.566406 8.789062 19.558594 C 8.792969 19.550781 8.789062 19.546875 8.792969 19.539062 C 8.792969 19.53125 8.792969 19.523438 8.792969 19.515625 C 8.792969 19.507812 8.789062 19.5 8.789062 19.492188 C 8.789062 19.484375 8.785156 19.480469 8.785156 19.472656 C 8.78125 19.464844 8.78125 19.457031 8.777344 19.453125 C 8.773438 19.445312 8.773438 19.4375 8.769531 19.429688 C 8.765625 19.425781 8.761719 19.417969 8.757812 19.414062 C 8.753906 19.40625 8.75 19.398438 8.746094 19.394531 C 8.742188 19.390625 8.738281 19.382812 8.730469 19.378906 C 8.726562 19.371094 8.722656 19.367188 8.714844 19.363281 C 8.710938 19.355469 8.703125 19.351562 8.699219 19.347656 C 8.691406 19.34375 8.6875 19.339844 8.679688 19.335938 C 8.675781 19.332031 8.667969 19.328125 8.660156 19.324219 C 8.652344 19.324219 8.648438 19.320312 8.640625 19.316406 L 7.367188 18.875 L 7.75 17.875 L 10.816406 17.839844 L 11.722656 18.660156 C 11.816406 18.746094 11.960938 18.738281 12.046875 18.644531 C 12.128906 18.550781 12.121094 18.410156 12.03125 18.324219 L 11.054688 17.441406 L 10.988281 17.382812 L 10.902344 17.382812 L 7.589844 17.421875 L 7.433594 17.421875 L 6.777344 19.148438 L 6.996094 19.226562 L 8.277344 19.671875 L 7.125 23.132812 C 6.617188 22.933594 6.074219 22.828125 5.511719 22.828125 C 3.070312 22.828125 1.082031 24.816406 1.082031 27.261719 C 1.082031 28.441406 1.542969 29.554688 2.378906 30.394531 C 3.21875 31.230469 4.328125 31.691406 5.511719 31.691406 C 6.695312 31.691406 7.808594 31.230469 8.644531 30.394531 C 9.484375 29.554688 9.945312 28.441406 9.945312 27.261719 C 9.945312 26.078125 9.484375 24.964844 8.644531 24.125 C 8.316406 23.796875 7.945312 23.527344 7.542969 23.320312 C 7.648438 22.996094 7.757812 22.671875 7.863281 22.355469 L 11.234375 25.953125 C 11 26.238281 10.863281 26.605469 10.863281 27 C 10.863281 27.445312 11.035156 27.863281 11.347656 28.175781 C 11.664062 28.492188 12.082031 28.664062 12.527344 28.664062 C 12.59375 28.664062 12.660156 28.660156 12.722656 28.652344 L 12.804688 29.023438 L 12.265625 29.023438 L 12.265625 29.542969 L 13.761719 29.542969 L 13.761719 29.023438 L 13.074219 29.023438 L 12.976562 28.601562 C 13.25 28.523438 13.5 28.382812 13.703125 28.175781 C 13.949219 27.933594 14.105469 27.625 14.164062 27.289062 L 14.914062 27.320312 C 14.929688 28.480469 15.390625 29.570312 16.210938 30.394531 C 17.046875 31.230469 18.160156 31.691406 19.34375 31.691406 C 20.527344 31.691406 21.640625 31.230469 22.476562 30.394531 C 23.316406 29.554688 23.777344 28.441406 23.777344 27.261719 C 23.777344 26.078125 23.316406 24.964844 22.476562 24.125 Z M 8.09375 24.675781 C 8.785156 25.367188 9.164062 26.285156 9.164062 27.261719 C 9.164062 29.273438 7.527344 30.910156 5.511719 30.910156 C 4.539062 30.910156 3.621094 30.53125 2.929688 29.839844 C 2.242188 29.152344 1.863281 28.234375 1.863281 27.261719 C 1.863281 26.285156 2.242188 25.367188 2.929688 24.675781 C 3.621094 23.988281 4.539062 23.609375 5.511719 23.609375 C 5.988281 23.609375 6.449219 23.699219 6.878906 23.871094 L 6.078125 26.277344 C 6.015625 26.445312 5.777344 26.917969 5.433594 27.046875 C 5.316406 27.089844 5.257812 27.222656 5.300781 27.339844 C 5.34375 27.457031 5.476562 27.515625 5.59375 27.472656 C 6.203125 27.242188 6.496094 26.460938 6.503906 26.429688 C 6.507812 26.425781 6.863281 25.359375 7.292969 24.070312 C 7.582031 24.234375 7.851562 24.4375 8.09375 24.675781 Z M 17.324219 23.320312 C 16.003906 24 15.070312 25.316406 14.933594 26.863281 L 14.183594 26.835938 C 14.144531 26.453125 13.980469 26.097656 13.703125 25.824219 C 13.675781 25.796875 13.648438 25.773438 13.621094 25.75 L 16.421875 21.3125 Z M 17.640625 24.027344 L 18.988281 27.019531 L 15.710938 26.894531 C 15.792969 26.058594 16.160156 25.28125 16.761719 24.675781 C 17.027344 24.414062 17.324219 24.195312 17.640625 24.027344 Z M 12.203125 26.320312 L 11.835938 25.929688 C 11.914062 25.878906 12 25.835938 12.085938 25.804688 Z M 12.339844 25.742188 C 12.402344 25.730469 12.464844 25.726562 12.527344 25.726562 C 12.679688 25.726562 12.832031 25.753906 12.972656 25.804688 L 12.515625 26.53125 Z M 13.410156 26.082031 C 13.417969 26.089844 13.421875 26.09375 13.425781 26.097656 C 13.625 26.296875 13.75 26.546875 13.785156 26.820312 L 12.964844 26.789062 Z M 8.273438 21.128906 L 15.921875 21.128906 L 13.183594 25.472656 C 12.980469 25.382812 12.757812 25.335938 12.527344 25.335938 C 12.433594 25.335938 12.34375 25.34375 12.253906 25.359375 L 12.066406 24.53125 L 12.65625 24.53125 L 12.65625 24.011719 L 11.164062 24.53125 L 11.800781 24.53125 L 12 25.421875 C 11.84375 25.472656 11.699219 25.550781 11.566406 25.644531 L 8.027344 21.863281 C 8.113281 21.609375 8.195312 21.359375 8.273438 21.128906 Z M 12.527344 28.273438 C 12.1875 28.273438 11.867188 28.140625 11.625 27.902344 C 11.386719 27.660156 11.253906 27.339844 11.253906 27 C 11.253906 26.722656 11.339844 26.460938 11.503906 26.242188 L 12.359375 27.15625 L 12.398438 27.195312 L 12.636719 28.269531 C 12.601562 28.273438 12.5625 28.273438 12.527344 28.273438 Z M 12.894531 28.21875 L 12.671875 27.234375 L 13.769531 27.273438 C 13.671875 27.726562 13.332031 28.089844 12.894531 28.21875 Z M 19.34375 30.910156 C 18.371094 30.910156 17.453125 30.53125 16.761719 29.839844 C 16.09375 29.171875 15.71875 28.289062 15.695312 27.347656 L 19.335938 27.488281 L 19.5625 27.453125 L 19.550781 27.167969 L 18.058594 23.84375 C 18.464844 23.6875 18.898438 23.609375 19.34375 23.609375 C 20.320312 23.609375 21.238281 23.988281 21.925781 24.675781 C 22.617188 25.367188 22.996094 26.285156 22.996094 27.261719 C 22.996094 29.273438 21.359375 30.910156 19.34375 30.910156 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 45.066406 31.390625 C 45.066406 31.390625 45.066406 30.289062 44.789062 29.140625 C 44.585938 28.285156 44.097656 27.457031 43.863281 27.089844 C 43.835938 27.019531 43.796875 26.953125 43.734375 26.890625 L 43.304688 26.804688 C 43.910156 26.519531 44.324219 25.90625 44.324219 25.191406 C 44.324219 24.207031 43.527344 23.40625 42.539062 23.40625 C 41.554688 23.40625 40.753906 24.207031 40.753906 25.191406 C 40.753906 25.808594 40.871094 26.433594 41.34375 26.753906 C 41.5 26.859375 41.726562 26.914062 41.964844 26.945312 L 41.621094 26.984375 C 41.621094 26.984375 41.648438 26.984375 41.601562 27.089844 C 41.363281 27.152344 40.84375 27.230469 39.875 27.074219 C 38.929688 26.921875 38.59375 26.285156 38.472656 25.871094 C 38.546875 25.800781 38.621094 25.722656 38.683594 25.636719 C 38.988281 25.207031 38.804688 24.59375 38.40625 24.320312 C 38.269531 24.222656 38.164062 24.113281 38.085938 24.007812 C 38.242188 23.722656 38.316406 23.492188 38.316406 23.492188 C 37.976562 22.542969 37.152344 20.125 37.152344 20.125 C 36.9375 18.074219 36.9375 15.503906 36.9375 15.503906 C 36.9375 15.503906 36.992188 15.0625 36.386719 14.675781 C 34.929688 13.753906 33.808594 13.378906 33.371094 13.257812 L 33.320312 12.675781 C 33.710938 12.359375 34.003906 11.851562 34.164062 11.304688 C 34.171875 11.277344 34.179688 11.25 34.1875 11.222656 C 34.597656 11.285156 34.898438 11.324219 35.007812 11.324219 C 35.46875 11.324219 35.421875 10.957031 34.824219 10.632812 C 34.648438 10.539062 34.496094 10.46875 34.339844 10.414062 C 34.382812 10.15625 34.5 9.507812 34.570312 9.144531 C 34.664062 8.683594 34.113281 8.570312 33.652344 8.683594 C 33.195312 8.796875 32.597656 8.523438 32.34375 8.363281 C 32.09375 8.199219 31.953125 8.269531 31.75 8.5 C 31.578125 8.6875 31.269531 9.582031 31.164062 9.902344 L 30.09375 9.855469 C 30.09375 9.855469 29.128906 10.175781 29.910156 10.40625 C 30.109375 10.464844 30.503906 10.550781 30.988281 10.648438 C 30.972656 10.722656 30.957031 10.796875 30.949219 10.871094 C 30.851562 11.589844 31.101562 12.261719 31.558594 12.648438 L 31.453125 13.0625 C 31.183594 13.183594 30.578125 13.46875 29.269531 14.125 C 28.117188 14.703125 27.699219 15.101562 27.5625 15.34375 L 27.539062 15.289062 C 27.539062 15.289062 26.652344 19.144531 26.621094 21.257812 C 26.589844 23.371094 26.589844 25.359375 26.589844 25.359375 L 27.097656 25.359375 C 27 25.871094 26.941406 26.378906 27.046875 26.890625 C 27.078125 27.105469 27.261719 27.351562 27.476562 27.410156 C 27.753906 27.472656 27.753906 27.382812 28.027344 27.382812 C 28.027344 27.320312 28.476562 27.132812 28.488281 27.105469 C 28.578125 26.890625 28.671875 26.554688 28.363281 26.125 C 28.199219 25.890625 28.152344 25.820312 28.058594 25.542969 C 28.042969 25.488281 27.996094 25.425781 27.949219 25.359375 L 28.273438 25.359375 C 28.273438 25.359375 28.273438 25.207031 28.425781 22.851562 C 28.574219 20.582031 28.578125 20.722656 29.070312 19.125 L 29.160156 19.328125 C 30.109375 22.789062 29.34375 23.460938 29.007812 24.503906 C 28.945312 24.699219 28.824219 25.941406 29.101562 26.035156 C 29.195312 26.066406 29.304688 26.09375 29.429688 26.113281 C 29.394531 26.867188 29.394531 28.222656 29.589844 30.441406 C 29.925781 34.300781 30.539062 36.183594 30.417969 37.132812 C 30.417969 37.132812 28.703125 37.085938 29.128906 38.15625 C 29.558594 39.230469 30.539062 39.71875 30.539062 39.71875 L 30.785156 39.6875 L 30.90625 39.996094 L 31.425781 40.300781 C 31.425781 40.300781 31.855469 40.453125 32.101562 40.117188 C 32.34375 39.78125 32.285156 39.535156 32.285156 39.535156 L 32.46875 38.738281 C 32.46875 38.738281 32.46875 35.25 32.070312 33.226562 C 31.671875 31.207031 31.855469 30.105469 32.007812 29.25 C 32.066406 28.929688 32.1875 28.691406 32.3125 28.519531 C 32.585938 29.128906 32.914062 29.804688 33.296875 30.5 C 33.371094 31.898438 33.539062 35.441406 33.417969 36.902344 C 33.40625 37.007812 33.402344 37.105469 33.398438 37.191406 L 32.988281 37.5 C 32.988281 37.5 32.941406 38.003906 33.078125 38.097656 C 33.21875 38.1875 33.261719 38.554688 33.261719 38.554688 C 33.261719 38.554688 33.722656 39.015625 34.089844 39.613281 C 34.457031 40.207031 35.191406 40.164062 35.46875 40.070312 C 35.742188 39.976562 35.699219 40.347656 35.652344 39.425781 C 35.617188 38.75 35.230469 38.070312 35.035156 37.761719 C 35.386719 37.71875 35.695312 37.660156 35.742188 37.574219 C 35.851562 37.390625 35.839844 32.289062 35.835938 30.988281 C 35.855469 30.96875 35.867188 30.960938 35.867188 30.960938 C 35.867188 30.960938 36.089844 27.761719 34.65625 25.769531 C 34.984375 25.710938 35.25 25.675781 35.375 25.542969 C 35.65625 25.253906 35.5 24.808594 35.5 24.808594 C 35.5 24.808594 35.410156 24.695312 35.070312 23.644531 C 34.367188 21.472656 35.160156 19.085938 35.160156 19.085938 C 35.160156 19.085938 35.4375 21.105469 35.683594 21.871094 C 35.925781 22.636719 37.121094 24.960938 37.121094 24.960938 C 37.199219 24.929688 37.273438 24.890625 37.339844 24.84375 C 37.335938 25 37.328125 25.164062 37.304688 25.300781 C 37.242188 25.667969 37.242188 25.757812 37.550781 26.035156 C 37.601562 26.082031 37.660156 26.113281 37.722656 26.132812 C 37.691406 26.566406 37.707031 27.417969 38.222656 28.222656 C 38.480469 28.628906 39.414062 28.949219 40.152344 29.148438 C 38.742188 30.929688 37.351562 31.941406 37.351562 31.941406 C 37.351562 31.941406 37.628906 32.5 38.292969 33.035156 C 38.183594 34.03125 37.996094 36.046875 38.132812 36.992188 C 38.316406 38.28125 38.453125 37.316406 38.542969 37.957031 C 38.546875 37.972656 38.550781 37.988281 38.550781 38.003906 C 38.390625 37.980469 38.242188 38.011719 38.128906 38.105469 C 37.851562 38.332031 37.894531 38.84375 38.226562 39.246094 C 38.558594 39.644531 39.050781 39.785156 39.328125 39.554688 C 39.402344 39.496094 39.453125 39.410156 39.480469 39.316406 L 39.507812 39.335938 C 39.507812 39.335938 39.648438 38.832031 39.554688 38.1875 C 39.46875 37.578125 39.339844 36.726562 40.101562 34.226562 C 40.121094 34.875 40.191406 35.644531 40.382812 36.027344 C 40.75 36.765625 40.976562 36.765625 41.253906 37.175781 C 41.449219 37.46875 41.414062 37.984375 41.378906 38.265625 C 40.980469 38.578125 40.800781 38.9375 40.886719 39.105469 C 41.179688 39.691406 41.640625 39.371094 42.109375 39.042969 C 42.417969 38.828125 42.617188 38.539062 42.660156 38.28125 L 42.675781 38.28125 C 42.675781 38.28125 43.367188 38.464844 42.355469 36.902344 C 41.761719 35.984375 41.804688 35.570312 42.035156 34.742188 C 42.140625 34.355469 42.242188 34.058594 42.3125 33.851562 C 42.535156 33.808594 42.761719 33.753906 43 33.6875 C 43 33.6875 42.585938 32.632812 42.722656 31.4375 C 42.777344 30.96875 42.9375 30.332031 43.109375 29.730469 C 43.808594 30.082031 43.953125 30.925781 43.824219 31.34375 C 43.710938 31.71875 43.601562 32.03125 43.5625 32.136719 C 43.269531 32.230469 43.050781 32.558594 43.050781 32.953125 C 43.050781 33.417969 43.355469 33.796875 43.734375 33.796875 C 44.109375 33.796875 44.414062 33.417969 44.414062 32.953125 C 44.414062 32.820312 44.390625 32.695312 44.347656 32.585938 C 44.980469 32.082031 45.066406 31.390625 45.066406 31.390625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 24.640625 0.511719 L 24.640625 49.488281 C 24.640625 49.6875 24.800781 49.847656 25 49.847656 C 25.199219 49.847656 25.359375 49.6875 25.359375 49.488281 L 25.359375 0.511719 C 25.359375 0.3125 25.199219 0.148438 25 0.148438 C 24.800781 0.148438 24.640625 0.3125 24.640625 0.511719 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17b.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17b.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_17b.svg	(revision 36424)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.191406 0 25 0 C 38.808594 0 50 11.195312 50 25 C 50 38.804688 38.808594 50 25 50 C 11.191406 50 0 38.804688 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 40.605469 30.636719 C 41.09375 30.941406 41.824219 31.917969 41.824219 31.917969 C 41.703125 30.882812 40.96875 30.027344 40.96875 30.027344 C 39.992188 29.292969 40.359375 29.109375 39.566406 26.910156 C 38.773438 24.714844 39.992188 23.917969 37.488281 22.332031 C 36.457031 21.679688 35.375 21.570312 34.761719 21.570312 C 34.734375 21.539062 34.707031 21.507812 34.683594 21.476562 C 33.167969 19.777344 29.71875 20.085938 27.246094 20.257812 C 26.925781 19.578125 26.308594 18.257812 26.042969 17.660156 C 25.675781 16.835938 26.042969 15.769531 26.164062 15.25 C 26.285156 14.730469 26.4375 14.640625 26.5 12.929688 C 26.558594 11.304688 25.015625 10.644531 24.863281 10.582031 L 24.972656 10.546875 L 24.667969 10.058594 L 24.289062 10.230469 C 24.46875 9.773438 24.5 9.222656 24.421875 8.898438 C 24.195312 7.925781 23.691406 7.21875 22.699219 7.445312 C 22.199219 7.558594 21.839844 7.988281 21.707031 8.539062 L 21.707031 8.441406 C 21.707031 8.441406 21.644531 9.144531 21.1875 9.355469 C 21.1875 9.355469 20.941406 9.722656 21.1875 9.753906 L 21.695312 9.46875 C 21.703125 9.5 21.710938 9.527344 21.71875 9.5625 C 21.875 10.195312 22.285156 10.679688 22.769531 10.890625 L 22.410156 11.035156 L 22.542969 11.308594 C 22.523438 11.308594 22.476562 11.335938 22.378906 11.433594 C 22.164062 11.648438 21.277344 13.144531 21.035156 13.601562 C 20.789062 14.058594 20.941406 13.96875 20.515625 14.425781 C 20.160156 14.804688 18.269531 16.472656 17.636719 17.023438 C 14.695312 14.277344 14.199219 14.386719 13.003906 13.96875 C 11.988281 13.609375 11.222656 13.933594 11 14.050781 C 10.308594 13.742188 10.074219 13.417969 10.074219 13.417969 C 10.074219 13.417969 9.957031 13.828125 9.945312 14.171875 C 9.847656 14.121094 9.757812 14.0625 9.675781 13.996094 C 9.21875 13.632812 8.761719 13.660156 8.761719 13.660156 C 8.761719 13.660156 8.546875 13.660156 8.730469 13.875 C 8.914062 14.089844 8.988281 14.335938 9.371094 14.515625 C 9.804688 14.722656 9.835938 14.917969 9.808594 15.179688 C 9.449219 15.601562 9.128906 16.078125 9.066406 16.5 C 9.066406 16.5 9.003906 19.035156 8.914062 19.707031 C 8.914062 19.707031 8.640625 21.355469 8.488281 21.722656 C 8.488281 21.722656 8.179688 21.996094 8.578125 22.300781 C 8.578125 22.300781 8.976562 22.515625 9.402344 22.972656 C 9.402344 22.972656 9.554688 23.066406 9.859375 22.851562 C 9.859375 22.851562 9.707031 23.066406 10.164062 23.035156 C 10.625 23.003906 10.960938 22.914062 11.019531 22.394531 C 11.035156 22.273438 11.066406 22.125 11.113281 21.96875 C 11.71875 21.582031 12.421875 21.351562 13.125 21.140625 C 13.199219 21.117188 13.277344 21.097656 13.351562 21.082031 C 13.539062 21.691406 13.804688 22.308594 14.105469 22.882812 C 14.777344 24.164062 14.714844 24.898438 14.835938 25.933594 C 14.945312 26.851562 14.910156 28.867188 16.253906 29.617188 C 15.851562 30.457031 14.878906 32.390625 14.003906 33.484375 C 14.003906 33.484375 13.554688 33.6875 13.757812 34.542969 C 13.757812 34.542969 13.757812 34.542969 13.636719 34.953125 C 13.386719 35.777344 12.351562 38.078125 11.984375 38.527344 C 11.984375 38.527344 11.671875 38.832031 11.996094 39.035156 L 11.886719 39.390625 C 11.886719 39.390625 11.292969 40.015625 11.710938 41.085938 L 12.941406 40.539062 L 13.046875 40.480469 C 13.046875 40.480469 12.9375 39.941406 12.890625 39.648438 C 12.851562 39.394531 13.148438 39.511719 12.78125 39.308594 C 12.601562 39.207031 12.78125 38.980469 12.78125 38.980469 C 13.136719 38.839844 12.984375 38.453125 12.984375 38.453125 C 13.59375 36.824219 14.125 35.03125 14.613281 34.746094 C 15.101562 34.464844 15.101562 34.140625 15.101562 34.140625 C 15.101562 34.140625 15.023438 34.113281 15.140625 33.929688 C 15.257812 33.75 16.597656 32.441406 17.007812 32.066406 C 17.011719 32.074219 17.304688 31.78125 17.515625 31.40625 C 17.734375 31.019531 17.867188 30.550781 17.867188 30.558594 C 17.871094 30.578125 18.035156 30.707031 18.035156 30.707031 C 17.945312 30.851562 17.914062 31.242188 17.722656 31.53125 C 17.460938 31.921875 17.039062 32.207031 17.039062 32.21875 C 17.1875 32.898438 17.507812 33.820312 18.101562 35.0625 C 18.101562 35.0625 18.011719 35.460938 18.277344 35.644531 C 18.277344 35.644531 19.984375 38.003906 20.3125 38.65625 C 20.636719 39.308594 20.433594 39.226562 20.761719 39.265625 L 21.25 39.753906 L 21.355469 39.898438 L 21.628906 40.027344 C 21.628906 40.027344 21.71875 40.882812 22.796875 41.265625 L 23.1875 39.980469 L 23.21875 39.859375 C 23.21875 39.859375 22.734375 39.589844 22.484375 39.433594 C 22.265625 39.296875 22.546875 39.152344 22.152344 39.292969 C 21.960938 39.363281 21.816406 39.429688 21.816406 39.429688 L 21.554688 39.214844 C 21.554688 39.214844 22.226562 38.980469 20.882812 37.839844 C 19.539062 36.703125 19.496094 35.5625 19.496094 35.5625 C 19.742188 35.113281 19.292969 34.871094 19.292969 34.871094 C 19.464844 34.105469 19.210938 32.222656 19.089844 31.980469 C 18.96875 31.734375 19.089844 31.652344 19.171875 31.449219 C 19.390625 30.90625 19.382812 30.382812 19.300781 29.949219 C 20.679688 29.992188 21.953125 29.945312 23.03125 29.824219 C 23.289062 29.976562 23.609375 30.144531 23.933594 30.269531 C 24.730469 30.574219 24.363281 29.78125 24.363281 29.78125 C 24.363281 29.78125 25.277344 29.964844 25.890625 30.027344 C 26.238281 30.0625 26.207031 29.554688 26.117188 29.117188 C 26.914062 28.929688 27.109375 29.050781 27.109375 29.050781 C 27.050781 29.417969 27.375 29.757812 27.351562 30.070312 C 27.175781 32.324219 27.820312 33.097656 27.964844 33.527344 C 28.128906 34.015625 28.085938 35.238281 28.085938 35.238281 C 27.558594 36.5 26.417969 38.453125 26.253906 38.941406 C 26.09375 39.429688 26.296875 39.550781 26.296875 39.550781 L 26.050781 39.835938 C 25.359375 40.121094 24.953125 41.421875 24.953125 41.421875 L 26.742188 41.179688 C 27.355469 39.835938 26.660156 39.957031 26.660156 39.957031 L 26.90625 39.671875 C 27.558594 39.632812 27.597656 39.183594 27.597656 39.183594 C 27.882812 36.824219 29.796875 34.625 29.917969 34.21875 C 30.039062 33.8125 29.835938 33.8125 29.753906 33.609375 C 29.675781 33.40625 29.675781 32.753906 29.675781 32.753906 C 29.347656 30.148438 30.976562 29.375 31.304688 29.089844 C 31.628906 28.804688 31.382812 28.519531 31.382812 28.519531 C 30.976562 27.910156 30.855469 26.851562 30.855469 26.851562 L 31.140625 26.546875 C 31.140625 26.546875 31.8125 29.84375 33.886719 31.308594 C 33.886719 31.308594 36.085938 33.8125 36.878906 35.277344 C 37.671875 36.742188 37.183594 35.949219 37.367188 36.742188 C 37.550781 37.535156 38.027344 39.207031 38.40625 40.039062 C 38.792969 40.894531 40.015625 41.871094 40.015625 41.871094 L 40.707031 40.445312 C 40.707031 40.445312 40.542969 40 39.808594 40.160156 L 39.890625 39.796875 C 39.890625 39.796875 39.6875 40 39.28125 39.511719 C 39.28125 39.511719 39.117188 39.917969 39.222656 39.355469 C 39.328125 38.792969 38.914062 38.535156 38.914062 38.535156 C 38.140625 37.230469 38.019531 35.683594 38.019531 35.683594 C 38.101562 35.5625 38.101562 35.277344 38.101562 35.277344 C 38.007812 34.644531 37.9375 33.851562 37.367188 32.917969 C 36.582031 31.636719 36.148438 30.210938 36.148438 30.210938 C 36.253906 28.792969 36.558594 24.710938 35.238281 22.28125 C 37.183594 22.429688 37.59375 23.949219 37.308594 24.347656 C 37 24.773438 36.941406 25.8125 37.308594 26.179688 C 37.671875 26.546875 37.367188 26.972656 37.796875 28.011719 C 38.222656 29.050781 39.371094 30.398438 39.371094 30.398438 C 39.261719 30.324219 39.773438 30.820312 39.566406 30.453125 C 38.832031 29.171875 38.039062 27.09375 38.039062 27.09375 C 38.773438 28.011719 39.316406 29.570312 39.628906 30.238281 C 40.023438 31.09375 40.207031 31.339844 40.695312 31.765625 C 41.183594 32.195312 41.582031 32.773438 41.582031 32.773438 C 41.644531 32.285156 41.335938 31.796875 41.03125 31.492188 C 40.726562 31.1875 40.605469 30.636719 40.605469 30.636719 Z M 10.554688 14.414062 C 10.542969 14.410156 10.535156 14.410156 10.523438 14.40625 L 10.585938 14.386719 C 10.574219 14.398438 10.566406 14.40625 10.554688 14.414062 Z M 12.546875 20.746094 C 12.121094 20.898438 11.691406 21.082031 11.355469 21.386719 C 11.335938 21.398438 11.3125 21.414062 11.292969 21.425781 C 11.523438 20.792969 11.816406 20.164062 11.816406 20.164062 C 11.816406 20.164062 12.691406 19.769531 12.996094 18.839844 C 13.105469 18.507812 13.1875 17.785156 13.066406 18.945312 C 13.015625 19.429688 13.070312 19.976562 13.203125 20.539062 C 12.984375 20.597656 12.765625 20.664062 12.546875 20.746094 Z M 20.902344 19.386719 C 20.59375 19.238281 20.273438 19.066406 19.949219 18.863281 C 21.257812 18.199219 22.101562 17.355469 22.101562 17.355469 C 21.835938 17.957031 21.355469 18.71875 20.902344 19.386719 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_19.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_19.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_19.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.191406 0 25 0 C 38.808594 0 50 11.195312 50 25 C 50 38.808594 38.808594 50 25 50 C 11.191406 50 0 38.808594 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 27.203125 34.0625 C 27.203125 37.492188 29.980469 40.273438 33.414062 40.273438 C 36.839844 40.273438 39.621094 37.492188 39.621094 34.0625 L 39.621094 16.121094 C 39.621094 12.691406 36.839844 9.910156 33.414062 9.910156 C 29.980469 9.910156 27.203125 12.691406 27.203125 16.121094 Z M 35.484375 34.0625 C 35.484375 35.203125 34.554688 36.132812 33.414062 36.132812 C 32.269531 36.132812 31.34375 35.203125 31.34375 34.0625 L 31.34375 16.121094 C 31.34375 14.976562 32.269531 14.050781 33.414062 14.050781 C 34.554688 14.050781 35.484375 14.976562 35.484375 16.121094 L 35.484375 34.0625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 22.800781 25.511719 C 22.558594 25.109375 21.886719 24.851562 21.886719 24.851562 C 21.886719 24.851562 22.355469 24.636719 22.679688 24.292969 C 23.175781 23.757812 23.109375 23.144531 23.109375 23.144531 L 23.109375 16.121094 C 23.109375 12.691406 20.328125 9.910156 16.898438 9.910156 C 13.46875 9.910156 10.6875 12.691406 10.6875 16.121094 L 14.828125 16.121094 C 14.828125 14.976562 15.757812 14.050781 16.898438 14.050781 C 18.042969 14.050781 18.96875 14.976562 18.96875 16.121094 L 18.96875 22.273438 L 18.960938 22.273438 C 18.960938 22.65625 18.652344 22.964844 18.273438 22.964844 L 14.808594 22.964844 L 14.808594 26.835938 L 18.300781 26.835938 C 18.667969 26.851562 18.960938 27.152344 18.960938 27.523438 L 18.96875 27.523438 L 18.96875 34.0625 C 18.96875 35.203125 18.042969 36.132812 16.898438 36.132812 C 15.757812 36.132812 14.828125 35.203125 14.828125 34.0625 L 10.6875 34.0625 C 10.6875 37.492188 13.46875 40.273438 16.898438 40.273438 C 20.328125 40.273438 23.109375 37.492188 23.109375 34.0625 L 23.109375 26.875 C 23.109375 26.875 23.167969 26.121094 22.800781 25.511719 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_27.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_27.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_27.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 48.730469 49.980469 C 49.070312 49.980469 49.386719 49.875 49.628906 49.683594 C 49.867188 49.492188 50 49.238281 50 48.96875 L 50 1.03125 C 50 0.761719 49.867188 0.507812 49.628906 0.316406 C 49.386719 0.125 49.070312 0.0195312 48.730469 0.0195312 L 1.269531 0.0195312 C 0.570312 0.0195312 0 0.472656 0 1.03125 L 0 48.96875 C 0 49.238281 0.132812 49.492188 0.371094 49.683594 C 0.613281 49.875 0.929688 49.980469 1.269531 49.980469 Z M 48.730469 49.980469 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 1.269531 49.648438 C 1.042969 49.648438 0.828125 49.574219 0.667969 49.449219 C 0.507812 49.320312 0.417969 49.148438 0.417969 48.96875 L 0.417969 1.03125 C 0.417969 0.851562 0.507812 0.679688 0.667969 0.550781 C 0.828125 0.425781 1.042969 0.351562 1.269531 0.351562 L 48.730469 0.351562 C 48.957031 0.351562 49.171875 0.425781 49.332031 0.550781 C 49.492188 0.679688 49.582031 0.851562 49.582031 1.03125 L 49.582031 48.96875 C 49.582031 49.34375 49.199219 49.648438 48.730469 49.648438 L 1.269531 49.648438 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 44.808594 22.664062 C 43.203125 21.046875 41.066406 20.15625 38.792969 20.15625 C 37.703125 20.15625 36.664062 20.363281 35.707031 20.742188 L 33.738281 16.332031 L 34.53125 15.0625 C 35.925781 15.347656 37.304688 15.625 37.378906 15.625 C 38.160156 15.625 38.789062 14.988281 38.789062 14.203125 C 38.789062 13.417969 38.160156 12.785156 37.378906 12.785156 C 37.339844 12.785156 31.5625 12.789062 31.5625 12.789062 C 31.105469 12.789062 30.738281 13.160156 30.738281 13.617188 C 30.738281 14.074219 31.105469 14.445312 31.5625 14.445312 L 31.5625 14.453125 C 31.5625 14.453125 32.425781 14.632812 33.488281 14.851562 L 32.847656 15.871094 L 17.863281 15.871094 C 18.253906 14.699219 18.507812 13.925781 18.507812 13.925781 C 18.515625 13.910156 18.515625 13.898438 18.519531 13.882812 C 18.523438 13.871094 18.527344 13.855469 18.527344 13.839844 C 18.53125 13.824219 18.527344 13.8125 18.527344 13.796875 C 18.53125 13.78125 18.53125 13.769531 18.53125 13.753906 C 18.527344 13.738281 18.527344 13.726562 18.523438 13.710938 C 18.519531 13.699219 18.519531 13.683594 18.515625 13.671875 C 18.511719 13.65625 18.507812 13.644531 18.5 13.632812 C 18.496094 13.617188 18.492188 13.605469 18.488281 13.589844 C 18.480469 13.578125 18.472656 13.570312 18.464844 13.554688 C 18.457031 13.542969 18.453125 13.53125 18.441406 13.519531 C 18.433594 13.507812 18.425781 13.5 18.414062 13.488281 C 18.40625 13.480469 18.398438 13.46875 18.386719 13.457031 C 18.375 13.449219 18.363281 13.441406 18.351562 13.433594 C 18.339844 13.421875 18.328125 13.414062 18.316406 13.40625 C 18.304688 13.398438 18.289062 13.394531 18.277344 13.386719 C 18.265625 13.382812 18.25 13.375 18.238281 13.371094 L 15.796875 12.515625 L 16.527344 10.582031 L 22.417969 10.515625 L 24.160156 12.105469 C 24.339844 12.265625 24.617188 12.253906 24.777344 12.074219 C 24.941406 11.894531 24.925781 11.613281 24.746094 11.453125 L 22.875 9.75 L 22.75 9.636719 L 22.578125 9.636719 L 16.21875 9.707031 L 15.921875 9.710938 L 14.660156 13.046875 L 15.085938 13.195312 L 17.546875 14.058594 L 15.332031 20.742188 C 14.359375 20.359375 13.3125 20.15625 12.234375 20.15625 C 7.542969 20.15625 3.730469 23.996094 3.730469 28.714844 C 3.730469 31.003906 4.613281 33.152344 6.21875 34.769531 C 7.828125 36.382812 9.964844 37.273438 12.234375 37.273438 C 14.507812 37.273438 16.644531 36.382812 18.25 34.769531 C 19.855469 33.152344 20.742188 31.003906 20.742188 28.714844 C 20.742188 26.429688 19.855469 24.28125 18.25 22.664062 C 17.617188 22.027344 16.902344 21.503906 16.132812 21.105469 C 16.335938 20.480469 16.546875 19.851562 16.75 19.238281 L 23.21875 26.191406 C 22.773438 26.746094 22.503906 27.449219 22.503906 28.214844 C 22.503906 29.074219 22.835938 29.878906 23.441406 30.488281 C 24.046875 31.09375 24.847656 31.429688 25.699219 31.429688 C 25.828125 31.429688 25.953125 31.417969 26.078125 31.402344 L 26.238281 32.121094 L 25.203125 32.121094 L 25.203125 33.125 L 28.070312 33.125 L 28.070312 32.121094 L 26.75 32.121094 L 26.570312 31.308594 C 27.089844 31.160156 27.566406 30.882812 27.960938 30.488281 C 28.429688 30.015625 28.734375 29.417969 28.84375 28.773438 L 30.289062 28.828125 C 30.316406 31.074219 31.199219 33.179688 32.777344 34.769531 C 34.382812 36.382812 36.519531 37.273438 38.792969 37.273438 C 41.066406 37.273438 43.203125 36.382812 44.808594 34.769531 C 46.414062 33.152344 47.300781 31.003906 47.300781 28.714844 C 47.300781 26.429688 46.414062 24.28125 44.808594 22.664062 Z M 17.191406 23.726562 C 18.515625 25.058594 19.246094 26.832031 19.246094 28.714844 C 19.246094 32.605469 16.101562 35.769531 12.234375 35.769531 C 10.363281 35.769531 8.601562 35.035156 7.277344 33.703125 C 5.953125 32.371094 5.222656 30.601562 5.222656 28.714844 C 5.222656 26.832031 5.953125 25.058594 7.277344 23.726562 C 8.601562 22.394531 10.363281 21.660156 12.234375 21.660156 C 13.148438 21.660156 14.035156 21.835938 14.859375 22.171875 L 13.316406 26.820312 C 13.199219 27.140625 12.742188 28.054688 12.082031 28.304688 C 11.855469 28.390625 11.742188 28.640625 11.828125 28.871094 C 11.910156 29.097656 12.164062 29.210938 12.386719 29.125 C 13.5625 28.683594 14.117188 27.171875 14.140625 27.109375 C 14.144531 27.105469 14.824219 25.042969 15.652344 22.554688 C 16.207031 22.867188 16.726562 23.257812 17.191406 23.726562 Z M 34.910156 21.101562 C 32.382812 22.414062 30.585938 24.964844 30.320312 27.949219 L 28.882812 27.894531 C 28.808594 27.15625 28.488281 26.472656 27.960938 25.941406 C 27.910156 25.890625 27.859375 25.84375 27.804688 25.796875 L 33.179688 17.222656 Z M 35.523438 22.472656 L 38.105469 28.25 L 31.816406 28.007812 C 31.976562 26.390625 32.679688 24.890625 33.835938 23.726562 C 34.339844 23.21875 34.910156 22.796875 35.523438 22.472656 Z M 25.078125 26.902344 L 24.375 26.144531 C 24.527344 26.046875 24.6875 25.964844 24.855469 25.902344 Z M 25.339844 25.78125 C 25.457031 25.761719 25.578125 25.75 25.699219 25.75 C 26 25.75 26.285156 25.804688 26.558594 25.90625 L 25.679688 27.308594 Z M 27.398438 26.445312 C 27.410156 26.453125 27.421875 26.460938 27.429688 26.472656 C 27.8125 26.855469 28.046875 27.339844 28.121094 27.867188 L 26.546875 27.808594 Z M 17.53125 16.871094 L 32.21875 16.871094 L 26.960938 25.257812 C 26.570312 25.089844 26.140625 25 25.699219 25 C 25.523438 25 25.347656 25.015625 25.175781 25.046875 L 24.820312 23.445312 L 25.949219 23.445312 L 25.949219 22.441406 L 23.082031 22.441406 L 23.082031 23.445312 L 24.3125 23.445312 L 24.691406 25.164062 C 24.390625 25.265625 24.113281 25.410156 23.859375 25.59375 L 17.0625 18.292969 C 17.226562 17.796875 17.386719 17.316406 17.53125 16.871094 Z M 25.699219 30.675781 C 25.046875 30.675781 24.433594 30.421875 23.972656 29.957031 C 23.507812 29.488281 23.253906 28.871094 23.253906 28.214844 C 23.253906 27.675781 23.425781 27.167969 23.738281 26.746094 L 25.453125 28.589844 L 25.914062 30.664062 C 25.84375 30.671875 25.773438 30.675781 25.699219 30.675781 Z M 26.40625 30.570312 L 25.980469 28.664062 L 28.089844 28.746094 C 27.898438 29.617188 27.246094 30.316406 26.40625 30.570312 Z M 38.792969 35.769531 C 36.921875 35.769531 35.160156 35.035156 33.835938 33.703125 C 32.550781 32.410156 31.828125 30.707031 31.785156 28.886719 L 38.777344 29.152344 L 39.207031 29.09375 L 39.191406 28.535156 L 36.320312 22.113281 C 37.101562 21.816406 37.933594 21.660156 38.792969 21.660156 C 40.664062 21.660156 42.425781 22.394531 43.75 23.726562 C 45.074219 25.058594 45.804688 26.832031 45.804688 28.714844 C 45.804688 32.605469 42.660156 35.769531 38.792969 35.769531 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_28a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_28a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_28a.svg	(revision 36424)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 48.730469 49.980469 C 49.070312 49.980469 49.386719 49.875 49.628906 49.683594 C 49.867188 49.492188 50 49.238281 50 48.96875 L 50 1.03125 C 50 0.761719 49.867188 0.507812 49.628906 0.316406 C 49.386719 0.125 49.070312 0.0195312 48.730469 0.0195312 L 1.269531 0.0195312 C 0.570312 0.0195312 0 0.472656 0 1.03125 L 0 48.96875 C 0 49.238281 0.132812 49.492188 0.371094 49.683594 C 0.613281 49.875 0.929688 49.980469 1.269531 49.980469 Z M 48.730469 49.980469 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 1.269531 49.648438 C 1.042969 49.648438 0.828125 49.574219 0.667969 49.449219 C 0.507812 49.320312 0.417969 49.148438 0.417969 48.96875 L 0.417969 1.03125 C 0.417969 0.851562 0.507812 0.679688 0.667969 0.550781 C 0.828125 0.425781 1.042969 0.351562 1.269531 0.351562 L 48.730469 0.351562 C 48.957031 0.351562 49.171875 0.425781 49.332031 0.550781 C 49.492188 0.679688 49.582031 0.851562 49.582031 1.03125 L 49.582031 48.96875 C 49.582031 49.34375 49.199219 49.648438 48.730469 49.648438 L 1.269531 49.648438 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 35.148438 10.347656 C 34.332031 9.527344 33.25 9.078125 32.097656 9.078125 C 31.546875 9.078125 31.019531 9.183594 30.535156 9.375 L 29.535156 7.140625 L 29.9375 6.496094 C 30.644531 6.640625 31.34375 6.78125 31.382812 6.78125 C 31.777344 6.78125 32.097656 6.457031 32.097656 6.058594 C 32.097656 5.664062 31.777344 5.339844 31.382812 5.339844 C 31.363281 5.339844 28.433594 5.34375 28.433594 5.34375 C 28.203125 5.34375 28.015625 5.53125 28.015625 5.761719 C 28.015625 5.996094 28.203125 6.183594 28.433594 6.183594 L 28.433594 6.1875 C 28.433594 6.1875 28.871094 6.277344 29.410156 6.386719 L 29.085938 6.90625 L 21.492188 6.90625 C 21.6875 6.308594 21.816406 5.917969 21.816406 5.917969 C 21.820312 5.910156 21.820312 5.90625 21.824219 5.898438 C 21.824219 5.890625 21.828125 5.882812 21.828125 5.875 C 21.828125 5.867188 21.828125 5.859375 21.828125 5.851562 C 21.828125 5.847656 21.828125 5.839844 21.828125 5.832031 C 21.828125 5.824219 21.828125 5.816406 21.824219 5.808594 C 21.824219 5.804688 21.824219 5.796875 21.820312 5.789062 C 21.820312 5.78125 21.816406 5.777344 21.8125 5.769531 C 21.8125 5.761719 21.808594 5.757812 21.804688 5.75 C 21.804688 5.742188 21.800781 5.738281 21.796875 5.730469 C 21.792969 5.726562 21.789062 5.71875 21.785156 5.714844 C 21.78125 5.707031 21.773438 5.703125 21.769531 5.699219 C 21.765625 5.691406 21.761719 5.6875 21.753906 5.683594 C 21.75 5.675781 21.742188 5.671875 21.738281 5.667969 C 21.730469 5.664062 21.726562 5.660156 21.71875 5.65625 C 21.714844 5.652344 21.707031 5.648438 21.699219 5.644531 C 21.695312 5.644531 21.6875 5.640625 21.679688 5.636719 L 20.441406 5.203125 L 20.8125 4.222656 L 23.796875 4.191406 L 24.683594 4.996094 C 24.773438 5.078125 24.914062 5.070312 24.996094 4.980469 C 25.078125 4.886719 25.070312 4.746094 24.980469 4.664062 L 24.03125 3.804688 L 23.96875 3.746094 L 23.878906 3.746094 L 20.65625 3.78125 L 20.507812 3.78125 L 19.867188 5.472656 L 20.082031 5.550781 L 21.328125 5.984375 L 20.207031 9.375 C 19.714844 9.179688 19.183594 9.078125 18.636719 9.078125 C 16.261719 9.078125 14.328125 11.023438 14.328125 13.414062 C 14.328125 14.574219 14.773438 15.664062 15.589844 16.484375 C 16.402344 17.300781 17.484375 17.753906 18.636719 17.753906 C 19.789062 17.753906 20.871094 17.300781 21.6875 16.484375 C 22.5 15.664062 22.949219 14.574219 22.949219 13.414062 C 22.949219 12.257812 22.5 11.167969 21.6875 10.347656 C 21.367188 10.023438 21.003906 9.761719 20.613281 9.558594 C 20.714844 9.242188 20.820312 8.921875 20.925781 8.613281 L 24.207031 12.136719 C 23.980469 12.417969 23.84375 12.773438 23.84375 13.160156 C 23.84375 13.597656 24.011719 14.003906 24.316406 14.3125 C 24.625 14.621094 25.03125 14.789062 25.460938 14.789062 C 25.527344 14.789062 25.589844 14.785156 25.65625 14.777344 L 25.734375 15.140625 L 25.210938 15.140625 L 25.210938 15.648438 L 26.664062 15.648438 L 26.664062 15.140625 L 25.996094 15.140625 L 25.902344 14.730469 C 26.167969 14.65625 26.410156 14.515625 26.609375 14.3125 C 26.847656 14.074219 27 13.773438 27.054688 13.445312 L 27.789062 13.472656 C 27.800781 14.609375 28.25 15.675781 29.050781 16.484375 C 29.863281 17.300781 30.945312 17.753906 32.097656 17.753906 C 33.25 17.753906 34.332031 17.300781 35.148438 16.484375 C 35.960938 15.664062 36.410156 14.574219 36.410156 13.414062 C 36.410156 12.257812 35.960938 11.167969 35.148438 10.347656 Z M 21.148438 10.886719 C 21.820312 11.5625 22.191406 12.460938 22.191406 13.414062 C 22.191406 15.386719 20.597656 16.992188 18.636719 16.992188 C 17.6875 16.992188 16.796875 16.617188 16.125 15.945312 C 15.453125 15.269531 15.085938 14.371094 15.085938 13.414062 C 15.085938 12.460938 15.453125 11.5625 16.125 10.886719 C 16.796875 10.210938 17.6875 9.839844 18.636719 9.839844 C 19.101562 9.839844 19.550781 9.929688 19.964844 10.097656 L 19.1875 12.453125 C 19.125 12.617188 18.894531 13.082031 18.558594 13.207031 C 18.445312 13.25 18.386719 13.378906 18.429688 13.492188 C 18.472656 13.609375 18.601562 13.667969 18.714844 13.625 C 19.308594 13.398438 19.59375 12.632812 19.605469 12.601562 C 19.605469 12.597656 19.949219 11.554688 20.367188 10.292969 C 20.652344 10.453125 20.914062 10.648438 21.148438 10.886719 Z M 30.132812 9.558594 C 28.847656 10.222656 27.9375 11.511719 27.804688 13.027344 L 27.074219 13 C 27.039062 12.625 26.875 12.277344 26.609375 12.007812 C 26.582031 11.984375 26.554688 11.960938 26.527344 11.9375 L 29.253906 7.589844 Z M 30.441406 10.25 L 31.75 13.179688 L 28.5625 13.058594 C 28.644531 12.238281 29 11.476562 29.585938 10.886719 C 29.84375 10.628906 30.128906 10.417969 30.441406 10.25 Z M 25.148438 12.496094 L 24.789062 12.113281 C 24.867188 12.0625 24.949219 12.023438 25.035156 11.988281 Z M 25.28125 11.929688 C 25.339844 11.917969 25.402344 11.914062 25.460938 11.914062 C 25.613281 11.914062 25.757812 11.941406 25.894531 11.992188 L 25.453125 12.703125 Z M 26.324219 12.261719 C 26.328125 12.269531 26.335938 12.273438 26.339844 12.277344 C 26.53125 12.472656 26.652344 12.71875 26.691406 12.984375 L 25.890625 12.953125 Z M 21.324219 7.414062 L 28.765625 7.414062 L 26.101562 11.664062 C 25.902344 11.578125 25.6875 11.53125 25.460938 11.53125 C 25.371094 11.53125 25.285156 11.539062 25.195312 11.554688 L 25.015625 10.746094 L 25.589844 10.746094 L 25.589844 10.234375 L 24.136719 10.746094 L 24.757812 10.746094 L 24.953125 11.617188 C 24.800781 11.667969 24.65625 11.738281 24.527344 11.832031 L 21.085938 8.132812 C 21.167969 7.878906 21.246094 7.636719 21.324219 7.414062 Z M 25.460938 14.410156 C 25.132812 14.410156 24.820312 14.28125 24.585938 14.042969 C 24.351562 13.808594 24.222656 13.496094 24.222656 13.160156 C 24.222656 12.890625 24.308594 12.632812 24.46875 12.417969 L 25.300781 13.3125 L 25.335938 13.351562 L 25.570312 14.402344 C 25.535156 14.40625 25.5 14.410156 25.460938 14.410156 Z M 25.820312 14.355469 L 25.605469 13.390625 L 26.671875 13.429688 C 26.578125 13.871094 26.246094 14.226562 25.820312 14.355469 Z M 32.097656 16.992188 C 31.148438 16.992188 30.257812 16.617188 29.585938 15.945312 C 28.933594 15.289062 28.570312 14.425781 28.546875 13.5 L 32.089844 13.636719 L 32.308594 13.605469 L 32.300781 13.324219 L 30.84375 10.070312 C 31.238281 9.917969 31.664062 9.839844 32.097656 9.839844 C 33.046875 9.839844 33.941406 10.210938 34.609375 10.886719 C 35.28125 11.5625 35.652344 12.460938 35.652344 13.414062 C 35.652344 15.386719 34.058594 16.992188 32.097656 16.992188 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 33.902344 39.117188 C 33.902344 39.117188 33.902344 38.179688 33.667969 37.199219 C 33.496094 36.472656 33.082031 35.765625 32.886719 35.453125 C 32.863281 35.394531 32.828125 35.335938 32.777344 35.285156 L 32.414062 35.210938 C 32.921875 34.96875 33.277344 34.445312 33.277344 33.835938 C 33.277344 32.996094 32.601562 32.316406 31.765625 32.316406 C 30.929688 32.316406 30.253906 32.996094 30.253906 33.835938 C 30.253906 34.363281 30.351562 34.894531 30.753906 35.167969 C 30.886719 35.257812 31.078125 35.304688 31.277344 35.332031 L 30.988281 35.363281 C 30.988281 35.363281 31.011719 35.363281 30.96875 35.453125 C 30.769531 35.507812 30.328125 35.574219 29.511719 35.441406 C 28.710938 35.3125 28.425781 34.765625 28.324219 34.417969 C 28.386719 34.359375 28.449219 34.289062 28.5 34.214844 C 28.757812 33.851562 28.605469 33.328125 28.265625 33.09375 C 28.148438 33.011719 28.0625 32.917969 27.996094 32.832031 C 28.128906 32.585938 28.191406 32.390625 28.191406 32.390625 C 27.902344 31.582031 27.203125 29.523438 27.203125 29.523438 C 27.023438 27.777344 27.023438 25.585938 27.023438 25.585938 C 27.023438 25.585938 27.070312 25.210938 26.558594 24.882812 C 25.324219 24.097656 24.375 23.777344 24.003906 23.671875 L 23.964844 23.175781 C 24.292969 22.910156 24.539062 22.476562 24.675781 22.011719 C 24.683594 21.988281 24.691406 21.964844 24.695312 21.941406 C 25.042969 21.992188 25.296875 22.027344 25.390625 22.027344 C 25.78125 22.027344 25.742188 21.714844 25.234375 21.441406 C 25.085938 21.359375 24.957031 21.300781 24.824219 21.25 C 24.863281 21.035156 24.960938 20.480469 25.019531 20.167969 C 25.101562 19.777344 24.632812 19.679688 24.246094 19.777344 C 23.855469 19.875 23.351562 19.640625 23.136719 19.503906 C 22.921875 19.367188 22.804688 19.425781 22.632812 19.621094 C 22.488281 19.78125 22.226562 20.546875 22.136719 20.816406 L 21.230469 20.773438 C 21.230469 20.773438 20.414062 21.050781 21.078125 21.246094 C 21.242188 21.292969 21.578125 21.367188 21.988281 21.453125 C 21.972656 21.515625 21.960938 21.578125 21.953125 21.640625 C 21.871094 22.253906 22.085938 22.824219 22.472656 23.15625 L 22.382812 23.507812 C 22.152344 23.613281 21.640625 23.855469 20.53125 24.414062 C 19.558594 24.902344 19.207031 25.242188 19.089844 25.449219 L 19.070312 25.402344 C 19.070312 25.402344 18.316406 28.6875 18.292969 30.488281 C 18.265625 32.285156 18.265625 33.980469 18.265625 33.980469 L 18.695312 33.980469 C 18.613281 34.414062 18.5625 34.851562 18.652344 35.285156 C 18.679688 35.46875 18.835938 35.675781 19.015625 35.726562 C 19.25 35.78125 19.25 35.703125 19.484375 35.703125 C 19.484375 35.648438 19.863281 35.492188 19.871094 35.46875 C 19.949219 35.285156 20.027344 35 19.769531 34.632812 C 19.625 34.433594 19.585938 34.371094 19.507812 34.136719 C 19.496094 34.089844 19.457031 34.035156 19.414062 33.980469 L 19.691406 33.980469 C 19.691406 33.980469 19.691406 33.851562 19.820312 31.84375 C 19.945312 29.910156 19.949219 30.03125 20.367188 28.671875 L 20.441406 28.84375 C 21.246094 31.792969 20.597656 32.363281 20.3125 33.25 C 20.257812 33.417969 20.15625 34.476562 20.390625 34.554688 C 20.472656 34.582031 20.566406 34.605469 20.667969 34.621094 C 20.640625 35.265625 20.640625 36.421875 20.804688 38.308594 C 21.089844 41.59375 21.609375 43.199219 21.503906 44.007812 C 21.503906 44.007812 20.054688 43.96875 20.414062 44.878906 C 20.777344 45.792969 21.609375 46.210938 21.609375 46.210938 L 21.816406 46.183594 L 21.917969 46.445312 L 22.359375 46.703125 C 22.359375 46.703125 22.722656 46.835938 22.929688 46.546875 C 23.136719 46.261719 23.085938 46.054688 23.085938 46.054688 L 23.238281 45.375 C 23.238281 45.375 23.238281 42.402344 22.902344 40.683594 C 22.566406 38.960938 22.722656 38.023438 22.851562 37.292969 C 22.898438 37.019531 23.003906 36.816406 23.109375 36.671875 C 23.339844 37.191406 23.617188 37.765625 23.941406 38.359375 C 24.003906 39.546875 24.148438 42.566406 24.042969 43.8125 C 24.035156 43.902344 24.03125 43.984375 24.027344 44.058594 L 23.679688 44.320312 C 23.679688 44.320312 23.640625 44.75 23.757812 44.828125 C 23.875 44.90625 23.914062 45.21875 23.914062 45.21875 C 23.914062 45.21875 24.300781 45.609375 24.613281 46.117188 C 24.925781 46.625 25.546875 46.585938 25.78125 46.507812 C 26.011719 46.429688 25.972656 46.742188 25.933594 45.960938 C 25.90625 45.382812 25.582031 44.804688 25.414062 44.542969 C 25.710938 44.507812 25.972656 44.457031 26.011719 44.382812 C 26.105469 44.226562 26.09375 39.882812 26.089844 38.773438 C 26.109375 38.757812 26.117188 38.753906 26.117188 38.753906 C 26.117188 38.753906 26.308594 36.027344 25.09375 34.328125 C 25.371094 34.28125 25.59375 34.25 25.703125 34.136719 C 25.9375 33.890625 25.804688 33.511719 25.804688 33.511719 C 25.804688 33.511719 25.730469 33.414062 25.441406 32.519531 C 24.847656 30.671875 25.519531 28.636719 25.519531 28.636719 C 25.519531 28.636719 25.753906 30.355469 25.960938 31.007812 C 26.167969 31.660156 27.179688 33.640625 27.179688 33.640625 C 27.246094 33.613281 27.304688 33.582031 27.363281 33.542969 C 27.363281 33.671875 27.351562 33.8125 27.335938 33.929688 C 27.28125 34.242188 27.28125 34.320312 27.542969 34.554688 C 27.585938 34.59375 27.636719 34.621094 27.691406 34.636719 C 27.660156 35.007812 27.675781 35.734375 28.113281 36.417969 C 28.332031 36.765625 29.121094 37.039062 29.742188 37.207031 C 28.550781 38.726562 27.375 39.585938 27.375 39.585938 C 27.375 39.585938 27.609375 40.0625 28.171875 40.515625 C 28.078125 41.367188 27.917969 43.082031 28.035156 43.886719 C 28.191406 44.984375 28.304688 44.164062 28.382812 44.710938 C 28.386719 44.722656 28.386719 44.734375 28.390625 44.75 C 28.253906 44.730469 28.128906 44.753906 28.03125 44.835938 C 27.796875 45.03125 27.835938 45.464844 28.117188 45.804688 C 28.394531 46.148438 28.8125 46.265625 29.046875 46.070312 C 29.109375 46.019531 29.152344 45.949219 29.175781 45.867188 L 29.199219 45.882812 C 29.199219 45.882812 29.316406 45.453125 29.238281 44.90625 C 29.164062 44.386719 29.058594 43.660156 29.703125 41.53125 C 29.71875 42.085938 29.777344 42.742188 29.9375 43.066406 C 30.25 43.691406 30.445312 43.691406 30.675781 44.046875 C 30.839844 44.292969 30.8125 44.734375 30.78125 44.972656 C 30.445312 45.238281 30.292969 45.542969 30.367188 45.6875 C 30.613281 46.183594 31.003906 45.914062 31.402344 45.636719 C 31.664062 45.453125 31.828125 45.207031 31.867188 44.984375 L 31.882812 44.984375 C 31.882812 44.984375 32.464844 45.140625 31.609375 43.8125 C 31.109375 43.03125 31.144531 42.675781 31.335938 41.972656 C 31.429688 41.640625 31.511719 41.386719 31.574219 41.210938 C 31.757812 41.175781 31.953125 41.132812 32.152344 41.074219 C 32.152344 41.074219 31.804688 40.175781 31.921875 39.15625 C 31.964844 38.757812 32.101562 38.214844 32.25 37.703125 C 32.839844 38 32.960938 38.71875 32.851562 39.078125 C 32.757812 39.398438 32.664062 39.664062 32.632812 39.75 C 32.382812 39.832031 32.199219 40.113281 32.199219 40.445312 C 32.199219 40.84375 32.457031 41.164062 32.777344 41.164062 C 33.09375 41.164062 33.351562 40.84375 33.351562 40.445312 C 33.351562 40.335938 33.332031 40.230469 33.292969 40.132812 C 33.828125 39.707031 33.902344 39.117188 33.902344 39.117188 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_28b.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_28b.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_28b.svg	(revision 36424)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 48.730469 49.980469 C 49.070312 49.980469 49.386719 49.875 49.628906 49.683594 C 49.867188 49.492188 50 49.238281 50 48.96875 L 50 1.03125 C 50 0.761719 49.867188 0.507812 49.628906 0.316406 C 49.386719 0.125 49.070312 0.0195312 48.730469 0.0195312 L 1.269531 0.0195312 C 0.570312 0.0195312 0 0.472656 0 1.03125 L 0 48.96875 C 0 49.238281 0.132812 49.492188 0.371094 49.683594 C 0.613281 49.875 0.929688 49.980469 1.269531 49.980469 Z M 48.730469 49.980469 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 1.269531 49.648438 C 1.042969 49.648438 0.828125 49.574219 0.667969 49.449219 C 0.507812 49.320312 0.417969 49.148438 0.417969 48.96875 L 0.417969 1.03125 C 0.417969 0.851562 0.507812 0.679688 0.667969 0.550781 C 0.828125 0.425781 1.042969 0.351562 1.269531 0.351562 L 48.730469 0.351562 C 48.957031 0.351562 49.171875 0.425781 49.332031 0.550781 C 49.492188 0.679688 49.582031 0.851562 49.582031 1.03125 L 49.582031 48.96875 C 49.582031 49.34375 49.199219 49.648438 48.730469 49.648438 L 1.269531 49.648438 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 22.78125 23.929688 C 21.964844 23.109375 20.882812 22.65625 19.730469 22.65625 C 19.179688 22.65625 18.652344 22.765625 18.167969 22.953125 L 17.167969 20.71875 L 17.570312 20.078125 C 18.277344 20.222656 18.976562 20.359375 19.015625 20.359375 C 19.410156 20.359375 19.730469 20.039062 19.730469 19.640625 C 19.730469 19.246094 19.410156 18.921875 19.015625 18.921875 C 18.996094 18.921875 16.066406 18.925781 16.066406 18.925781 C 15.835938 18.925781 15.648438 19.113281 15.648438 19.34375 C 15.648438 19.578125 15.835938 19.765625 16.066406 19.765625 L 16.066406 19.769531 C 16.066406 19.769531 16.503906 19.859375 17.039062 19.96875 L 16.71875 20.484375 L 9.125 20.484375 C 9.320312 19.890625 9.449219 19.5 9.449219 19.5 C 9.453125 19.492188 9.453125 19.488281 9.453125 19.480469 C 9.457031 19.472656 9.457031 19.464844 9.460938 19.457031 C 9.460938 19.449219 9.460938 19.441406 9.460938 19.433594 C 9.460938 19.429688 9.460938 19.421875 9.460938 19.414062 C 9.460938 19.40625 9.457031 19.398438 9.457031 19.390625 C 9.457031 19.386719 9.457031 19.378906 9.453125 19.371094 C 9.453125 19.363281 9.449219 19.359375 9.445312 19.351562 C 9.445312 19.34375 9.441406 19.335938 9.4375 19.332031 C 9.433594 19.324219 9.429688 19.320312 9.425781 19.3125 C 9.425781 19.308594 9.421875 19.300781 9.417969 19.296875 C 9.410156 19.289062 9.40625 19.285156 9.402344 19.28125 C 9.398438 19.273438 9.390625 19.269531 9.386719 19.261719 C 9.382812 19.257812 9.375 19.253906 9.371094 19.25 C 9.363281 19.246094 9.359375 19.242188 9.351562 19.238281 C 9.347656 19.234375 9.339844 19.230469 9.332031 19.226562 C 9.324219 19.226562 9.320312 19.222656 9.3125 19.21875 L 8.074219 18.785156 L 8.445312 17.804688 L 11.429688 17.773438 L 12.3125 18.578125 C 12.40625 18.660156 12.542969 18.652344 12.625 18.5625 C 12.707031 18.46875 12.703125 18.328125 12.613281 18.246094 L 11.664062 17.382812 L 11.597656 17.324219 L 11.511719 17.328125 L 8.289062 17.363281 L 8.140625 17.363281 L 7.5 19.054688 L 7.714844 19.132812 L 8.960938 19.566406 L 7.839844 22.953125 C 7.34375 22.761719 6.816406 22.65625 6.269531 22.65625 C 3.890625 22.65625 1.957031 24.605469 1.957031 26.996094 C 1.957031 28.15625 2.40625 29.246094 3.222656 30.066406 C 4.035156 30.882812 5.117188 31.335938 6.269531 31.335938 C 7.421875 31.335938 8.503906 30.882812 9.320312 30.066406 C 10.132812 29.246094 10.582031 28.15625 10.582031 26.996094 C 10.582031 25.839844 10.132812 24.75 9.320312 23.929688 C 9 23.605469 8.636719 23.34375 8.246094 23.140625 C 8.347656 22.824219 8.453125 22.503906 8.558594 22.195312 L 11.839844 25.71875 C 11.609375 25.996094 11.476562 26.355469 11.476562 26.742188 C 11.476562 27.179688 11.644531 27.585938 11.949219 27.894531 C 12.253906 28.203125 12.664062 28.371094 13.09375 28.371094 C 13.160156 28.371094 13.222656 28.367188 13.285156 28.359375 L 13.367188 28.722656 L 12.84375 28.722656 L 12.84375 29.230469 L 14.296875 29.230469 L 14.296875 28.722656 L 13.625 28.722656 L 13.535156 28.308594 C 13.796875 28.234375 14.039062 28.09375 14.238281 27.894531 C 14.480469 27.65625 14.632812 27.355469 14.6875 27.027344 L 15.417969 27.054688 C 15.433594 28.191406 15.882812 29.257812 16.679688 30.066406 C 17.496094 30.882812 18.578125 31.335938 19.730469 31.335938 C 20.882812 31.335938 21.964844 30.882812 22.78125 30.066406 C 23.59375 29.246094 24.042969 28.15625 24.042969 26.996094 C 24.042969 25.839844 23.59375 24.75 22.78125 23.929688 Z M 8.78125 24.46875 C 9.453125 25.144531 9.824219 26.042969 9.824219 26.996094 C 9.824219 28.96875 8.230469 30.570312 6.269531 30.570312 C 5.320312 30.570312 4.429688 30.199219 3.757812 29.523438 C 3.085938 28.851562 2.714844 27.953125 2.714844 26.996094 C 2.714844 26.042969 3.085938 25.144531 3.757812 24.46875 C 4.429688 23.792969 5.320312 23.421875 6.269531 23.421875 C 6.734375 23.421875 7.179688 23.511719 7.597656 23.679688 L 6.816406 26.035156 C 6.757812 26.199219 6.527344 26.664062 6.191406 26.789062 C 6.078125 26.832031 6.019531 26.960938 6.0625 27.074219 C 6.105469 27.191406 6.234375 27.25 6.347656 27.207031 C 6.941406 26.980469 7.226562 26.214844 7.234375 26.183594 C 7.238281 26.179688 7.582031 25.136719 8 23.875 C 8.285156 24.035156 8.546875 24.230469 8.78125 24.46875 Z M 17.761719 23.136719 C 16.480469 23.804688 15.570312 25.09375 15.4375 26.609375 L 14.707031 26.582031 C 14.671875 26.207031 14.507812 25.859375 14.238281 25.589844 C 14.214844 25.566406 14.1875 25.542969 14.160156 25.519531 L 16.886719 21.171875 Z M 18.074219 23.832031 L 19.382812 26.761719 L 16.195312 26.636719 C 16.273438 25.820312 16.632812 25.058594 17.21875 24.46875 C 17.472656 24.210938 17.761719 23.996094 18.074219 23.832031 Z M 12.777344 26.078125 L 12.421875 25.695312 C 12.5 25.644531 12.582031 25.605469 12.667969 25.570312 Z M 12.910156 25.507812 C 12.972656 25.5 13.03125 25.492188 13.09375 25.492188 C 13.246094 25.492188 13.390625 25.523438 13.527344 25.574219 L 13.082031 26.28125 Z M 13.957031 25.84375 C 13.960938 25.851562 13.964844 25.855469 13.972656 25.859375 C 14.164062 26.054688 14.285156 26.300781 14.320312 26.566406 L 13.523438 26.535156 Z M 8.953125 20.996094 L 16.398438 20.996094 L 13.734375 25.246094 C 13.535156 25.160156 13.320312 25.113281 13.09375 25.113281 C 13.003906 25.113281 12.917969 25.121094 12.828125 25.136719 L 12.648438 24.328125 L 13.222656 24.328125 L 13.222656 23.816406 L 11.765625 24.328125 L 12.390625 24.328125 L 12.582031 25.199219 C 12.429688 25.25 12.289062 25.320312 12.160156 25.414062 L 8.714844 21.714844 C 8.800781 21.460938 8.878906 21.21875 8.953125 20.996094 Z M 13.09375 27.992188 C 12.761719 27.992188 12.453125 27.859375 12.21875 27.625 C 11.984375 27.390625 11.855469 27.078125 11.855469 26.742188 C 11.855469 26.472656 11.941406 26.214844 12.097656 26 L 12.933594 26.894531 L 12.96875 26.933594 L 13.203125 27.984375 C 13.167969 27.988281 13.132812 27.992188 13.09375 27.992188 Z M 13.453125 27.9375 L 13.238281 26.972656 L 14.304688 27.011719 C 14.207031 27.453125 13.878906 27.808594 13.453125 27.9375 Z M 19.730469 30.570312 C 18.78125 30.570312 17.890625 30.199219 17.21875 29.523438 C 16.566406 28.871094 16.203125 28.003906 16.179688 27.082031 L 19.722656 27.21875 L 19.941406 27.1875 L 19.933594 26.90625 L 18.476562 23.652344 C 18.871094 23.5 19.296875 23.421875 19.730469 23.421875 C 20.679688 23.421875 21.570312 23.792969 22.242188 24.46875 C 22.914062 25.144531 23.28125 26.042969 23.28125 26.996094 C 23.28125 28.96875 21.691406 30.570312 19.730469 30.570312 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 46.648438 30.714844 C 46.648438 30.714844 46.648438 29.6875 46.394531 28.617188 C 46.203125 27.816406 45.753906 27.042969 45.535156 26.699219 C 45.511719 26.636719 45.472656 26.574219 45.414062 26.515625 L 45.019531 26.4375 C 45.578125 26.167969 45.964844 25.59375 45.964844 24.929688 C 45.964844 24.007812 45.222656 23.261719 44.308594 23.261719 C 43.390625 23.261719 42.652344 24.007812 42.652344 24.929688 C 42.652344 25.503906 42.757812 26.085938 43.199219 26.386719 C 43.34375 26.484375 43.554688 26.539062 43.773438 26.566406 L 43.457031 26.601562 C 43.457031 26.601562 43.480469 26.601562 43.4375 26.699219 C 43.21875 26.761719 42.734375 26.832031 41.835938 26.6875 C 40.960938 26.542969 40.648438 25.949219 40.535156 25.5625 C 40.605469 25.5 40.671875 25.425781 40.730469 25.34375 C 41.011719 24.945312 40.84375 24.371094 40.472656 24.117188 C 40.34375 24.027344 40.25 23.921875 40.175781 23.828125 C 40.324219 23.558594 40.390625 23.34375 40.390625 23.34375 C 40.078125 22.457031 39.308594 20.199219 39.308594 20.199219 C 39.109375 18.285156 39.109375 15.886719 39.109375 15.886719 C 39.109375 15.886719 39.164062 15.472656 38.601562 15.117188 C 37.25 14.253906 36.207031 13.90625 35.800781 13.789062 L 35.757812 13.246094 C 36.117188 12.953125 36.390625 12.480469 36.539062 11.96875 C 36.546875 11.945312 36.554688 11.917969 36.558594 11.890625 C 36.9375 11.949219 37.21875 11.984375 37.320312 11.984375 C 37.746094 11.984375 37.707031 11.644531 37.152344 11.34375 C 36.988281 11.253906 36.847656 11.191406 36.699219 11.136719 C 36.742188 10.898438 36.847656 10.289062 36.917969 9.949219 C 37.003906 9.523438 36.492188 9.414062 36.066406 9.523438 C 35.640625 9.628906 35.085938 9.371094 34.851562 9.222656 C 34.617188 9.070312 34.488281 9.136719 34.296875 9.351562 C 34.140625 9.527344 33.855469 10.363281 33.757812 10.660156 L 32.765625 10.613281 C 32.765625 10.613281 31.871094 10.914062 32.59375 11.128906 C 32.777344 11.183594 33.144531 11.265625 33.59375 11.355469 C 33.578125 11.425781 33.5625 11.492188 33.554688 11.5625 C 33.464844 12.234375 33.699219 12.859375 34.121094 13.222656 L 34.023438 13.609375 C 33.773438 13.722656 33.214844 13.988281 31.996094 14.601562 C 30.929688 15.140625 30.542969 15.511719 30.417969 15.738281 L 30.394531 15.6875 C 30.394531 15.6875 29.570312 19.285156 29.542969 21.257812 C 29.511719 23.230469 29.511719 25.085938 29.511719 25.085938 L 29.984375 25.085938 C 29.894531 25.5625 29.839844 26.039062 29.9375 26.515625 C 29.96875 26.714844 30.136719 26.945312 30.335938 27 C 30.59375 27.058594 30.59375 26.972656 30.847656 26.972656 C 30.847656 26.914062 31.261719 26.742188 31.273438 26.714844 C 31.359375 26.515625 31.445312 26.203125 31.160156 25.800781 C 31.003906 25.582031 30.960938 25.515625 30.875 25.257812 C 30.863281 25.207031 30.820312 25.148438 30.773438 25.085938 L 31.074219 25.085938 C 31.074219 25.085938 31.074219 24.945312 31.214844 22.742188 C 31.351562 20.625 31.359375 20.757812 31.816406 19.269531 L 31.898438 19.457031 C 32.777344 22.6875 32.070312 23.316406 31.757812 24.285156 C 31.695312 24.472656 31.585938 25.628906 31.839844 25.714844 C 31.929688 25.746094 32.03125 25.769531 32.148438 25.789062 C 32.113281 26.492188 32.117188 27.761719 32.296875 29.832031 C 32.609375 33.429688 33.175781 35.1875 33.0625 36.074219 C 33.0625 36.074219 31.472656 36.03125 31.871094 37.03125 C 32.265625 38.03125 33.175781 38.488281 33.175781 38.488281 L 33.402344 38.460938 L 33.515625 38.746094 L 34 39.03125 C 34 39.03125 34.398438 39.171875 34.625 38.859375 C 34.851562 38.546875 34.792969 38.316406 34.792969 38.316406 L 34.964844 37.574219 C 34.964844 37.574219 34.964844 34.316406 34.597656 32.429688 C 34.226562 30.542969 34.398438 29.515625 34.539062 28.714844 C 34.59375 28.417969 34.703125 28.195312 34.824219 28.035156 C 35.074219 28.605469 35.378906 29.234375 35.734375 29.882812 C 35.800781 31.1875 35.957031 34.496094 35.84375 35.859375 C 35.835938 35.957031 35.832031 36.046875 35.828125 36.128906 L 35.449219 36.417969 C 35.449219 36.417969 35.40625 36.886719 35.53125 36.972656 C 35.660156 37.058594 35.703125 37.402344 35.703125 37.402344 C 35.703125 37.402344 36.128906 37.832031 36.46875 38.386719 C 36.8125 38.945312 37.492188 38.902344 37.746094 38.816406 C 38.003906 38.730469 37.960938 39.074219 37.917969 38.214844 C 37.886719 37.582031 37.53125 36.949219 37.34375 36.664062 C 37.675781 36.621094 37.960938 36.566406 38.003906 36.488281 C 38.101562 36.3125 38.09375 31.554688 38.089844 30.339844 C 38.105469 30.324219 38.117188 30.316406 38.117188 30.316406 C 38.117188 30.316406 38.324219 27.328125 36.996094 25.46875 C 37.300781 25.414062 37.542969 25.382812 37.664062 25.257812 C 37.921875 24.988281 37.777344 24.574219 37.777344 24.574219 C 37.777344 24.574219 37.695312 24.46875 37.378906 23.488281 C 36.726562 21.457031 37.464844 19.230469 37.464844 19.230469 C 37.464844 19.230469 37.71875 21.113281 37.945312 21.828125 C 38.171875 22.542969 39.28125 24.714844 39.28125 24.714844 C 39.351562 24.683594 39.421875 24.648438 39.484375 24.605469 C 39.480469 24.75 39.472656 24.902344 39.453125 25.03125 C 39.394531 25.371094 39.394531 25.457031 39.679688 25.714844 C 39.726562 25.761719 39.78125 25.789062 39.839844 25.804688 C 39.808594 26.214844 39.824219 27.007812 40.304688 27.757812 C 40.542969 28.136719 41.410156 28.4375 42.09375 28.621094 C 40.785156 30.285156 39.496094 31.230469 39.496094 31.230469 C 39.496094 31.230469 39.753906 31.753906 40.367188 32.25 C 40.265625 33.179688 40.09375 35.0625 40.21875 35.945312 C 40.390625 37.144531 40.515625 36.246094 40.601562 36.84375 C 40.605469 36.859375 40.605469 36.875 40.609375 36.886719 C 40.460938 36.867188 40.320312 36.894531 40.214844 36.980469 C 39.957031 37.195312 40 37.671875 40.308594 38.046875 C 40.617188 38.417969 41.074219 38.550781 41.328125 38.335938 C 41.398438 38.277344 41.445312 38.203125 41.472656 38.113281 L 41.496094 38.128906 C 41.496094 38.128906 41.625 37.660156 41.539062 37.058594 C 41.457031 36.492188 41.339844 35.695312 42.046875 33.363281 C 42.066406 33.96875 42.128906 34.6875 42.304688 35.042969 C 42.648438 35.730469 42.859375 35.730469 43.113281 36.117188 C 43.292969 36.386719 43.261719 36.871094 43.230469 37.132812 C 42.863281 37.425781 42.695312 37.757812 42.773438 37.917969 C 43.042969 38.460938 43.472656 38.164062 43.910156 37.859375 C 44.195312 37.65625 44.378906 37.386719 44.417969 37.148438 L 44.433594 37.144531 C 44.433594 37.144531 45.074219 37.316406 44.136719 35.859375 C 43.585938 35.003906 43.625 34.617188 43.839844 33.84375 C 43.9375 33.480469 44.03125 33.203125 44.097656 33.011719 C 44.300781 32.972656 44.511719 32.921875 44.734375 32.859375 C 44.734375 32.859375 44.351562 31.875 44.476562 30.757812 C 44.527344 30.320312 44.675781 29.726562 44.835938 29.164062 C 45.484375 29.492188 45.617188 30.28125 45.5 30.671875 C 45.394531 31.023438 45.292969 31.316406 45.257812 31.410156 C 44.984375 31.5 44.78125 31.804688 44.78125 32.171875 C 44.78125 32.609375 45.066406 32.960938 45.414062 32.960938 C 45.765625 32.960938 46.046875 32.609375 46.046875 32.171875 C 46.046875 32.050781 46.023438 31.933594 45.984375 31.828125 C 46.570312 31.359375 46.648438 30.714844 46.648438 30.714844 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25.402344 0.328125 L 25.402344 49.371094 C 25.402344 49.570312 25.5625 49.734375 25.761719 49.734375 C 25.957031 49.734375 26.117188 49.570312 26.117188 49.371094 L 26.117188 0.328125 C 26.117188 0.125 25.957031 -0.0351562 25.761719 -0.0351562 C 25.5625 -0.0351562 25.402344 0.125 25.402344 0.328125 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_6b.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_6b.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_6b.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.191406 11.191406 0 25 0 C 38.808594 0 50 11.191406 50 25 C 50 38.808594 38.808594 50 25 50 C 11.191406 50 0 38.808594 0 25 Z M 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 43.539062 C 35.238281 43.539062 43.539062 35.238281 43.539062 25 C 43.539062 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.539062 25 43.539062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 39.6875 28.09375 C 39.574219 27.09375 39.214844 26.167969 38.671875 25.382812 L 39.417969 24.289062 L 35.792969 21.8125 L 35.023438 22.9375 C 34.621094 22.851562 34.199219 22.804688 33.769531 22.804688 C 33.472656 22.804688 33.179688 22.828125 32.894531 22.871094 L 32.707031 21.398438 L 33.230469 21.121094 C 34.132812 21.242188 34.371094 21.242188 34.371094 21.242188 C 34.734375 19.558594 34.070312 17.574219 34.070312 17.574219 C 34.070312 17.574219 31.476562 17.519531 30.183594 20.453125 L 26.242188 18.78125 C 26.246094 18.765625 26.25 18.746094 26.253906 18.730469 C 26.34375 18.324219 26.617188 17.964844 26.617188 17.964844 C 27.203125 17.875 27.742188 18.207031 28.238281 17.84375 C 28.148438 17.484375 28.597656 17.242188 28.914062 17.332031 C 29.140625 17.109375 28.691406 16.746094 28.914062 16.523438 C 29.050781 16.429688 29.195312 16.476562 29.199219 16.429688 C 29.246094 15.980469 29.1875 15.574219 28.871094 15.214844 C 28.871094 15.214844 26.660156 12.554688 24.855469 16.207031 C 24.855469 16.207031 21.566406 15.847656 21.339844 16.339844 C 21.339844 16.339844 21.617188 16.929688 21.160156 16.882812 C 20.257812 16.792969 18.136719 17.378906 18.136719 17.378906 L 18.136719 18.144531 C 18.136719 18.144531 20.347656 17.738281 21.746094 18.011719 L 21.699219 18.191406 C 21.699219 18.191406 19.164062 19.714844 18.496094 20.308594 C 17.476562 21.222656 17.015625 22.402344 16.878906 22.816406 C 16.640625 22.769531 16.398438 22.746094 16.152344 22.746094 C 13.335938 22.746094 10.921875 25.449219 9.78125 29.058594 C 9.753906 29.136719 10.867188 28.917969 10.871094 29 C 10.882812 29.179688 10.898438 29.363281 10.925781 29.539062 L 9.898438 29.539062 L 9.898438 30.382812 L 11.132812 30.382812 C 11.808594 32.402344 13.71875 33.859375 15.96875 33.859375 C 18.175781 33.859375 20.050781 32.460938 20.765625 30.5 L 26.316406 30.5 C 26.316406 30.5 27.058594 30.542969 27.722656 29.699219 C 27.660156 30.289062 27.582031 31.019531 27.515625 31.464844 L 29.207031 31.039062 C 30.042969 32.710938 31.773438 33.859375 33.769531 33.859375 C 36.589844 33.859375 38.871094 31.574219 38.871094 28.757812 C 38.871094 28.535156 38.859375 28.3125 38.832031 28.09375 Z M 24.316406 22.339844 C 24.421875 21.667969 25.027344 20.828125 25.28125 20.5 L 27.453125 21.488281 C 25.925781 21.832031 24.875 22.171875 24.3125 22.375 C 24.3125 22.363281 24.3125 22.351562 24.316406 22.339844 Z M 17.488281 25.445312 C 18.230469 25.796875 18.664062 26.1875 19.265625 27.148438 L 17.042969 27.160156 Z M 12.074219 29.117188 C 12.0625 29 12.058594 28.878906 12.058594 28.757812 C 12.058594 28.617188 12.289062 28.714844 12.304688 28.578125 C 12.515625 26.613281 13.957031 25.179688 15.804688 25.121094 L 15.46875 27.160156 L 15.070312 27.160156 C 14.296875 27.160156 13.667969 27.902344 13.667969 28.816406 C 13.667969 28.921875 13.675781 29.019531 13.691406 29.117188 Z M 15.96875 32.667969 C 14.433594 32.667969 13.109375 31.785156 12.46875 30.5 L 19.46875 30.5 C 18.828125 31.785156 17.503906 32.667969 15.96875 32.667969 Z M 28.242188 26.554688 L 27.527344 26.570312 C 27.707031 25.671875 28.339844 23.761719 30.550781 22.453125 L 30.675781 23.671875 C 29.582031 24.339844 28.722656 25.351562 28.242188 26.554688 Z M 33.769531 32.667969 C 31.609375 32.667969 29.859375 30.917969 29.859375 28.757812 C 29.859375 27.457031 30.496094 26.304688 31.46875 25.59375 L 33.832031 29.78125 L 34.792969 29.417969 L 33.167969 25.03125 L 33.152344 24.894531 C 33.355469 24.863281 33.558594 24.847656 33.769531 24.847656 C 35.929688 24.847656 37.683594 26.597656 37.683594 28.757812 C 37.683594 30.917969 35.929688 32.667969 33.769531 32.667969 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_6c.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_6c.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_6c.svg	(revision 36424)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 25 0 C 11.191406 0 0 11.191406 0 25 C 0 38.808594 11.191406 50 25 50 C 38.808594 50 50 38.808594 50 25 C 50 11.191406 38.808594 0 25 0 Z M 25 0 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 6.460938 C 34.921875 6.460938 43.019531 14.253906 43.515625 24.054688 L 6.488281 24.054688 C 6.980469 14.253906 15.078125 6.460938 25 6.460938 Z M 25 6.460938 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 43.539062 C 15.078125 43.539062 6.980469 35.746094 6.488281 25.945312 L 43.515625 25.945312 C 43.019531 35.746094 34.921875 43.539062 25 43.539062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 34.878906 36.191406 C 34.804688 35.542969 34.570312 34.941406 34.21875 34.429688 L 34.703125 33.71875 L 32.347656 32.113281 L 31.847656 32.84375 C 31.585938 32.785156 31.3125 32.753906 31.035156 32.753906 C 30.839844 32.753906 30.652344 32.769531 30.464844 32.796875 L 30.34375 31.84375 L 30.683594 31.660156 C 31.269531 31.738281 31.425781 31.738281 31.425781 31.738281 C 31.660156 30.644531 31.230469 29.355469 31.230469 29.355469 C 31.230469 29.355469 29.542969 29.320312 28.703125 31.226562 L 26.140625 30.140625 C 26.144531 30.128906 26.148438 30.117188 26.148438 30.109375 C 26.210938 29.84375 26.382812 29.609375 26.382812 29.609375 C 26.765625 29.550781 27.117188 29.765625 27.4375 29.53125 C 27.382812 29.296875 27.675781 29.140625 27.878906 29.199219 C 28.027344 29.054688 27.734375 28.820312 27.878906 28.671875 C 27.964844 28.613281 28.0625 28.644531 28.066406 28.613281 C 28.09375 28.320312 28.054688 28.058594 27.851562 27.824219 C 27.851562 27.824219 26.414062 26.09375 25.242188 28.46875 C 25.242188 28.46875 23.101562 28.234375 22.957031 28.554688 C 22.957031 28.554688 23.136719 28.9375 22.839844 28.90625 C 22.253906 28.847656 20.875 29.230469 20.875 29.230469 L 20.875 29.726562 C 20.875 29.726562 22.3125 29.464844 23.21875 29.640625 L 23.191406 29.757812 C 23.191406 29.757812 21.542969 30.746094 21.109375 31.132812 C 20.445312 31.726562 20.148438 32.496094 20.054688 32.765625 C 19.902344 32.734375 19.746094 32.71875 19.585938 32.71875 C 17.753906 32.71875 16.1875 34.476562 15.445312 36.820312 C 15.429688 36.867188 16.152344 36.726562 16.15625 36.78125 C 16.160156 36.898438 16.171875 37.015625 16.191406 37.132812 L 15.523438 37.132812 L 15.523438 37.679688 L 16.324219 37.679688 C 16.765625 38.992188 18.003906 39.9375 19.464844 39.9375 C 20.898438 39.9375 22.121094 39.03125 22.582031 37.757812 L 26.191406 37.757812 C 26.191406 37.757812 26.671875 37.785156 27.105469 37.234375 C 27.066406 37.617188 27.011719 38.09375 26.96875 38.382812 L 28.070312 38.105469 C 28.613281 39.191406 29.738281 39.9375 31.035156 39.9375 C 32.863281 39.9375 34.347656 38.453125 34.347656 36.625 C 34.347656 36.476562 34.339844 36.335938 34.320312 36.191406 Z M 24.890625 32.453125 C 24.960938 32.015625 25.351562 31.472656 25.519531 31.257812 L 26.929688 31.898438 C 25.933594 32.125 25.253906 32.34375 24.886719 32.476562 C 24.890625 32.46875 24.890625 32.460938 24.890625 32.453125 Z M 20.453125 34.472656 C 20.9375 34.699219 21.21875 34.953125 21.609375 35.578125 L 20.164062 35.585938 Z M 16.9375 36.859375 C 16.929688 36.78125 16.925781 36.703125 16.925781 36.625 C 16.925781 36.53125 17.078125 36.597656 17.085938 36.507812 C 17.222656 35.230469 18.160156 34.300781 19.359375 34.261719 L 19.140625 35.585938 L 18.882812 35.585938 C 18.378906 35.585938 17.972656 36.066406 17.972656 36.664062 C 17.972656 36.730469 17.976562 36.792969 17.988281 36.859375 Z M 19.464844 39.164062 C 18.46875 39.164062 17.609375 38.59375 17.191406 37.757812 L 21.742188 37.757812 C 21.324219 38.59375 20.460938 39.164062 19.464844 39.164062 Z M 27.441406 35.191406 L 26.976562 35.203125 C 27.09375 34.621094 27.503906 33.378906 28.941406 32.527344 L 29.023438 33.320312 C 28.3125 33.753906 27.753906 34.410156 27.441406 35.191406 Z M 31.035156 39.164062 C 29.628906 39.164062 28.492188 38.027344 28.492188 36.625 C 28.492188 35.777344 28.90625 35.03125 29.539062 34.570312 L 31.074219 37.289062 L 31.699219 37.054688 L 30.644531 34.203125 L 30.632812 34.113281 C 30.761719 34.09375 30.898438 34.082031 31.035156 34.082031 C 32.4375 34.082031 33.574219 35.21875 33.574219 36.625 C 33.574219 38.027344 32.4375 39.164062 31.035156 39.164062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 32.84375 19.191406 L 32.84375 17.808594 C 32.84375 17.808594 32.753906 16.96875 32.386719 16.671875 C 32.113281 16.449219 31.789062 16.457031 31.511719 16.398438 L 31.511719 12.214844 C 31.511719 10.480469 30.101562 9.070312 28.367188 9.070312 L 21.632812 9.070312 C 19.902344 9.070312 18.492188 10.480469 18.492188 12.210938 L 18.492188 16.398438 C 18.210938 16.453125 17.890625 16.445312 17.617188 16.667969 C 17.25 16.96875 17.160156 17.804688 17.160156 17.804688 L 17.160156 19.1875 L 18.359375 19.1875 L 18.359375 19.882812 L 18.273438 19.882812 C 18.132812 19.882812 18.019531 19.996094 18.019531 20.136719 C 18.019531 20.28125 18.132812 20.394531 18.273438 20.394531 L 18.359375 20.394531 L 18.359375 21.710938 C 18.359375 22.136719 18.703125 22.484375 19.132812 22.484375 C 19.5625 22.484375 19.90625 22.136719 19.90625 21.710938 L 19.90625 20.394531 L 30.09375 20.394531 L 30.09375 21.710938 C 30.09375 22.140625 30.441406 22.484375 30.867188 22.484375 C 31.296875 22.484375 31.644531 22.140625 31.644531 21.710938 L 31.644531 20.394531 L 31.726562 20.394531 C 31.867188 20.394531 31.984375 20.28125 31.984375 20.140625 C 31.984375 20 31.867188 19.886719 31.726562 19.886719 L 31.644531 19.886719 L 31.644531 19.191406 Z M 22.144531 19.882812 L 19.90625 19.882812 L 19.90625 19.1875 L 21.746094 19.1875 L 22.144531 19.621094 Z M 22.144531 18.671875 C 21.957031 18.441406 21.703125 18.148438 21.417969 17.847656 C 21.625 17.765625 21.8125 17.640625 21.972656 17.480469 C 22.035156 17.417969 22.09375 17.347656 22.144531 17.273438 Z M 22.144531 15.296875 C 22.09375 15.222656 22.035156 15.152344 21.972656 15.089844 C 21.652344 14.769531 21.226562 14.59375 20.777344 14.59375 C 20.507812 14.59375 20.253906 14.660156 20.023438 14.769531 L 20.023438 12.210938 C 20.023438 11.78125 20.191406 11.378906 20.496094 11.074219 C 20.800781 10.769531 21.203125 10.601562 21.632812 10.601562 L 28.367188 10.605469 C 28.796875 10.605469 29.203125 10.773438 29.503906 11.074219 C 29.808594 11.378906 29.976562 11.785156 29.976562 12.214844 L 29.976562 14.773438 C 29.75 14.660156 29.496094 14.59375 29.226562 14.59375 C 28.773438 14.59375 28.347656 14.769531 28.03125 15.089844 C 27.964844 15.15625 27.90625 15.226562 27.855469 15.296875 L 27.855469 14.1875 L 25.289062 12.867188 L 25.289062 12.480469 L 24.714844 12.480469 L 24.714844 12.867188 L 22.144531 14.183594 Z M 28.03125 17.484375 C 28.191406 17.644531 28.378906 17.769531 28.582031 17.851562 C 28.300781 18.148438 28.042969 18.445312 27.855469 18.671875 L 27.855469 17.277344 C 27.90625 17.347656 27.964844 17.417969 28.03125 17.484375 Z M 30.09375 19.886719 L 27.855469 19.882812 L 27.855469 19.621094 L 28.257812 19.191406 L 30.09375 19.191406 Z M 23.042969 18.984375 L 26.945312 18.984375 L 26.945312 19.898438 L 23.042969 19.898438 Z M 23.042969 18.984375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 19.890625 17.171875 C 19.652344 16.933594 19.523438 16.621094 19.523438 16.285156 C 19.523438 15.949219 19.652344 15.636719 19.890625 15.398438 C 20.128906 15.160156 20.441406 15.03125 20.777344 15.03125 C 21.109375 15.03125 21.425781 15.160156 21.660156 15.398438 C 21.898438 15.636719 22.03125 15.949219 22.03125 16.285156 C 22.03125 16.976562 21.46875 17.539062 20.777344 17.539062 C 20.441406 17.539062 20.128906 17.40625 19.890625 17.171875 Z M 19.890625 17.171875 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 30.113281 17.171875 C 29.875 17.410156 29.558594 17.539062 29.226562 17.539062 C 28.535156 17.539062 27.972656 16.976562 27.972656 16.285156 C 27.972656 15.953125 28.101562 15.636719 28.339844 15.402344 C 28.578125 15.164062 28.890625 15.035156 29.226562 15.035156 C 29.558594 15.035156 29.875 15.164062 30.113281 15.402344 C 30.347656 15.636719 30.476562 15.953125 30.476562 16.285156 C 30.476562 16.621094 30.347656 16.9375 30.113281 17.171875 Z M 30.113281 17.171875 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-1.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-1.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-1.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.191406 11.191406 0 25 0 C 38.808594 0 50 11.191406 50 25 C 50 38.808594 38.808594 50 25 50 C 11.191406 50 0 38.808594 0 25 Z M 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 43.539062 C 35.238281 43.539062 43.539062 35.238281 43.539062 25 C 43.539062 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.539062 25 43.539062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 38.160156 17.828125 L 20.527344 17.828125 C 20.035156 17.828125 19.429688 18.230469 19.429688 18.722656 L 19.425781 18.742188 L 16.269531 18.742188 C 16.191406 18.742188 15.523438 18.75 15.0625 19.097656 C 14.605469 19.441406 14.433594 19.929688 14.414062 19.984375 C 14.414062 19.980469 13.808594 21.691406 13.523438 22.496094 L 12.921875 22.496094 C 12.429688 22.496094 12.027344 22.894531 12.027344 23.390625 L 12.027344 28.191406 L 11.484375 28.191406 C 11.179688 28.191406 10.933594 28.441406 10.933594 28.746094 C 10.933594 29.046875 11.179688 29.296875 11.484375 29.296875 L 12.960938 29.296875 C 12.980469 30.757812 14.167969 31.941406 15.636719 31.941406 C 17.105469 31.941406 18.292969 30.757812 18.3125 29.296875 L 30.863281 29.296875 C 30.882812 30.757812 32.070312 31.941406 33.539062 31.941406 C 35.007812 31.941406 36.195312 30.757812 36.214844 29.296875 L 38.160156 29.296875 Z M 15.234375 20.265625 C 15.234375 20.257812 15.339844 19.972656 15.582031 19.792969 C 15.777344 19.644531 16.152344 19.609375 16.269531 19.605469 C 16.269531 19.605469 18.007812 19.605469 19.210938 19.605469 L 18.488281 22.496094 L 14.445312 22.496094 L 15.234375 20.265625 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-2.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-2.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-2.svg	(revision 36424)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.191406 0 25 0 C 38.808594 0 50 11.195312 50 25 C 50 38.804688 38.808594 50 25 50 C 11.191406 50 0 38.804688 0 25 Z M 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 43.539062 C 35.238281 43.539062 43.539062 35.238281 43.539062 25 C 43.539062 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.539062 25 43.539062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 30.015625 40.003906 L 30.007812 35.027344 L 29.445312 35.027344 L 29.445312 34.144531 L 30.007812 34.144531 L 30.007812 32.445312 L 31.128906 31.914062 L 31.132812 34.144531 L 31.824219 34.144531 L 31.824219 35.027344 L 31.132812 35.027344 L 31.140625 40.003906 L 30.015625 40.003906 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 26.304688 38.492188 C 26.304688 38.878906 26.546875 39.097656 26.878906 39.097656 C 27.210938 39.097656 27.410156 38.878906 27.410156 38.511719 L 27.410156 36.746094 C 27.410156 36.4375 27.1875 36.1875 26.878906 36.1875 C 26.492188 36.1875 26.371094 36.484375 26.304688 36.617188 L 25.238281 36.617188 L 25.238281 32.382812 L 28.191406 32.382812 L 28.191406 33.441406 L 26.304688 33.441406 L 26.304688 35.558594 C 26.515625 35.359375 26.847656 35.195312 27.242188 35.195312 C 28.003906 35.195312 28.535156 35.679688 28.535156 36.582031 L 28.535156 38.535156 C 28.535156 39.582031 27.75 40.222656 26.859375 40.222656 C 25.964844 40.222656 25.183594 39.542969 25.183594 38.496094 L 26.304688 38.492188 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 23.460938 38.878906 L 24.585938 38.878906 L 24.585938 40.003906 L 23.460938 41.160156 L 23.460938 38.878906 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 19.613281 38.015625 C 19.613281 38.507812 19.921875 38.789062 20.34375 38.789062 C 20.765625 38.789062 21.019531 38.507812 21.019531 38.046875 L 21.019531 35.796875 C 21.019531 35.40625 20.738281 35.082031 20.34375 35.082031 C 19.851562 35.082031 19.699219 35.460938 19.613281 35.628906 L 18.253906 35.628906 L 18.253906 30.238281 L 22.011719 30.238281 L 22.011719 31.585938 L 19.613281 31.585938 L 19.613281 34.28125 C 19.882812 34.027344 20.300781 33.820312 20.808594 33.820312 C 21.777344 33.820312 22.449219 34.4375 22.449219 35.585938 L 22.449219 38.074219 C 22.449219 39.40625 21.453125 40.222656 20.316406 40.222656 C 19.179688 40.222656 18.183594 39.359375 18.183594 38.023438 L 19.613281 38.015625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 9.226562 28.46875 L 38.75 28.46875 L 38.75 27.746094 L 9.226562 27.746094 Z M 9.226562 28.46875 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 37.304688 13.703125 L 19.671875 13.703125 C 19.179688 13.703125 18.574219 14.105469 18.574219 14.597656 L 18.570312 14.613281 L 15.410156 14.613281 C 15.335938 14.613281 14.667969 14.625 14.203125 14.972656 C 13.75 15.3125 13.578125 15.804688 13.558594 15.859375 C 13.558594 15.851562 12.953125 17.566406 12.667969 18.371094 L 12.066406 18.371094 C 11.574219 18.371094 11.171875 18.769531 11.171875 19.261719 L 11.171875 24.066406 L 10.628906 24.066406 C 10.324219 24.066406 10.078125 24.3125 10.078125 24.617188 C 10.078125 24.921875 10.324219 25.167969 10.628906 25.167969 L 12.105469 25.167969 C 12.125 26.632812 13.3125 27.8125 14.78125 27.8125 C 16.25 27.8125 17.4375 26.632812 17.457031 25.167969 L 30.007812 25.167969 C 30.027344 26.632812 31.214844 27.8125 32.683594 27.8125 C 34.152344 27.8125 35.339844 26.632812 35.359375 25.167969 L 37.304688 25.167969 Z M 14.375 16.140625 C 14.378906 16.132812 14.480469 15.847656 14.722656 15.664062 C 14.921875 15.515625 15.296875 15.480469 15.414062 15.480469 C 15.410156 15.480469 17.152344 15.480469 18.355469 15.480469 L 17.632812 18.371094 L 13.585938 18.371094 L 14.375 16.140625 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-3.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-3.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7a-3.svg	(revision 36424)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.191406 11.191406 0 25 0 C 38.808594 0 50 11.191406 50 25 C 50 38.808594 38.808594 50 25 50 C 11.191406 50 0 38.808594 0 25 Z M 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 43.539062 C 35.238281 43.539062 43.539062 35.238281 43.539062 25 C 43.539062 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.539062 25 43.539062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 26.464844 33.773438 L 27.25 33.773438 L 27.25 34.148438 L 27.265625 34.148438 C 27.425781 33.902344 27.640625 33.726562 28 33.726562 C 28.339844 33.726562 28.5625 33.925781 28.699219 34.117188 C 28.890625 33.902344 29.101562 33.726562 29.515625 33.726562 C 29.90625 33.726562 30.367188 33.980469 30.367188 34.679688 L 30.367188 37.667969 L 29.582031 37.667969 L 29.582031 34.96875 C 29.582031 34.6875 29.445312 34.507812 29.199219 34.507812 C 28.90625 34.507812 28.808594 34.703125 28.808594 35.046875 L 28.808594 37.667969 L 28.023438 37.667969 L 28.023438 34.96875 C 28.023438 34.6875 27.886719 34.507812 27.640625 34.507812 C 27.347656 34.507812 27.25 34.703125 27.25 35.046875 L 27.25 37.667969 L 26.464844 37.667969 L 26.464844 33.773438 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 20.625 31.257812 L 19.5 32.277344 L 19.5 30.855469 L 20.625 29.875 L 21.75 29.875 L 21.75 37.660156 L 20.625 37.660156 L 20.625 31.257812 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 22.46875 31.460938 C 22.46875 30.410156 23.25 29.769531 24.144531 29.769531 C 25.042969 29.769531 25.824219 30.410156 25.824219 31.460938 L 25.824219 36.074219 C 25.824219 37.125 25.042969 37.765625 24.144531 37.765625 C 23.25 37.765625 22.46875 37.125 22.46875 36.074219 Z M 23.59375 36.074219 C 23.59375 36.394531 23.824219 36.640625 24.144531 36.640625 C 24.464844 36.640625 24.699219 36.394531 24.699219 36.074219 L 24.699219 31.460938 C 24.699219 31.136719 24.464844 30.894531 24.144531 30.894531 C 23.824219 30.894531 23.59375 31.136719 23.59375 31.460938 L 23.59375 36.074219 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 19.15625 32.238281 L 15.140625 32.238281 L 15.140625 30.40625 L 10.855469 33.769531 L 15.140625 37.132812 L 15.140625 35.304688 L 19.15625 35.304688 L 19.15625 32.238281 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 30.777344 35.304688 L 34.792969 35.304688 L 34.792969 37.132812 L 39.078125 33.769531 L 34.792969 30.40625 L 34.792969 32.238281 L 30.777344 32.238281 L 30.777344 35.304688 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 37.164062 13.472656 L 19.535156 13.472656 C 19.039062 13.472656 18.4375 13.875 18.4375 14.367188 L 18.429688 14.386719 L 15.273438 14.386719 C 15.199219 14.386719 14.53125 14.394531 14.066406 14.742188 C 13.609375 15.085938 13.4375 15.574219 13.417969 15.628906 C 13.421875 15.625 12.816406 17.335938 12.53125 18.140625 L 11.925781 18.140625 C 11.433594 18.140625 11.035156 18.539062 11.035156 19.035156 L 11.035156 23.839844 L 10.488281 23.839844 C 10.183594 23.839844 9.9375 24.085938 9.9375 24.390625 C 9.9375 24.695312 10.183594 24.941406 10.488281 24.941406 L 11.964844 24.941406 C 11.984375 26.402344 13.175781 27.585938 14.640625 27.585938 C 16.109375 27.585938 17.296875 26.402344 17.316406 24.941406 L 29.871094 24.941406 C 29.890625 26.402344 31.078125 27.585938 32.546875 27.585938 C 34.011719 27.585938 35.203125 26.402344 35.21875 24.941406 L 37.164062 24.941406 Z M 14.238281 15.910156 C 14.242188 15.902344 14.34375 15.617188 14.585938 15.4375 C 14.78125 15.289062 15.160156 15.253906 15.273438 15.25 C 15.273438 15.25 17.015625 15.25 18.214844 15.25 L 17.496094 18.140625 L 13.449219 18.140625 L 14.238281 15.910156 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7e.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7e.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_7e.svg	(revision 36424)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.195312 11.191406 0 25 0 C 38.808594 0 50 11.195312 50 25 C 50 38.804688 38.808594 50 25 50 C 11.191406 50 0 38.804688 0 25 Z M 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 43.535156 C 35.238281 43.535156 43.539062 35.238281 43.539062 25 C 43.539062 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.535156 25 43.535156 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,94.509804%,0%);fill-opacity:1;" d="M 19.65625 24.917969 L 30.296875 24.917969 L 30.296875 14.277344 L 19.65625 14.277344 Z M 19.65625 24.917969 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 17.027344 26.542969 L 18.230469 14.816406 C 18.230469 14.816406 18.269531 13.894531 18.769531 13.433594 C 19.429688 12.824219 20.589844 12.792969 20.589844 12.792969 L 29.21875 12.792969 C 29.21875 12.792969 30.378906 12.824219 31.035156 13.433594 C 31.535156 13.894531 31.578125 14.816406 31.578125 14.816406 L 32.78125 26.542969 Z M 19.65625 24.917969 L 30.296875 24.917969 L 30.296875 14.277344 L 19.65625 14.277344 Z M 19.65625 24.917969 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 33.964844 31.207031 L 33.964844 30.867188 C 33.964844 30.160156 33.394531 29.589844 32.6875 29.589844 L 32.3125 29.589844 C 31.605469 29.589844 31.035156 30.160156 31.035156 30.867188 L 31.035156 31.4375 L 30.15625 31.4375 L 30.15625 32.226562 L 28.757812 32.226562 L 28.757812 32.058594 L 26.027344 32.058594 C 25.757812 31.671875 25.335938 31.421875 24.855469 31.421875 C 24.378906 31.421875 23.953125 31.671875 23.6875 32.058594 L 20.957031 32.058594 L 20.957031 32.226562 L 19.558594 32.226562 L 19.558594 31.4375 L 18.679688 31.4375 L 18.679688 30.867188 C 18.679688 30.160156 18.105469 29.589844 17.398438 29.589844 L 17.027344 29.589844 C 16.320312 29.589844 15.746094 30.160156 15.746094 30.867188 L 15.746094 31.207031 C 15.59375 31.292969 15.488281 31.453125 15.488281 31.640625 L 15.488281 34.03125 C 15.488281 34.21875 15.59375 34.378906 15.746094 34.464844 L 15.746094 34.804688 C 15.746094 35.511719 16.320312 36.082031 17.027344 36.082031 L 17.398438 36.082031 C 18.105469 36.082031 18.679688 35.511719 18.679688 34.804688 L 18.679688 34.234375 L 19.558594 34.234375 L 19.558594 33.445312 L 20.957031 33.445312 L 20.957031 33.679688 C 20.957031 33.679688 22.871094 33.765625 23.863281 34.1875 C 23.867188 34.1875 23.867188 34.1875 23.867188 34.1875 C 23.871094 34.191406 23.875 34.195312 23.878906 34.199219 C 23.894531 34.214844 24.214844 34.617188 24.855469 34.609375 C 25.488281 34.601562 25.820312 34.214844 25.835938 34.199219 C 25.839844 34.195312 25.84375 34.191406 25.847656 34.1875 C 26.839844 33.765625 28.757812 33.679688 28.757812 33.679688 L 28.757812 33.445312 L 30.15625 33.445312 L 30.15625 34.234375 L 31.035156 34.234375 L 31.035156 34.804688 C 31.035156 35.511719 31.605469 36.082031 32.3125 36.082031 L 32.6875 36.082031 C 33.394531 36.082031 33.964844 35.511719 33.964844 34.804688 L 33.964844 34.464844 C 34.121094 34.378906 34.226562 34.21875 34.226562 34.03125 L 34.226562 31.640625 C 34.226562 31.453125 34.121094 31.292969 33.964844 31.207031 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 15.65625 29.132812 L 34.117188 29.132812 L 34.117188 27.328125 L 15.65625 27.328125 Z M 15.65625 29.132812 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.470588%,51.372552%,42.352942%);fill-opacity:1;" d="M 19.65625 24.917969 L 30.296875 24.917969 L 30.296875 14.277344 L 19.65625 14.277344 Z M 19.65625 24.917969 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_8c.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_8c.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_8c.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.191406 11.191406 0 25 0 C 38.808594 0 50 11.191406 50 25 C 50 38.808594 38.808594 50 25 50 C 11.191406 50 0 38.808594 0 25 Z M 0 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25 43.539062 C 35.238281 43.539062 43.539062 35.238281 43.539062 25 C 43.539062 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.539062 25 43.539062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 38.839844 23.625 C 37.675781 22.464844 36.128906 21.824219 34.488281 21.824219 C 33.699219 21.824219 32.949219 21.972656 32.253906 22.242188 L 30.828125 19.074219 L 31.40625 18.160156 C 32.414062 18.367188 33.410156 18.5625 33.464844 18.5625 C 34.027344 18.5625 34.484375 18.109375 34.484375 17.542969 C 34.484375 16.980469 34.027344 16.523438 33.464844 16.523438 C 33.4375 16.523438 29.257812 16.527344 29.257812 16.527344 C 28.925781 16.527344 28.660156 16.792969 28.660156 17.121094 C 28.660156 17.453125 28.925781 17.71875 29.257812 17.71875 L 29.257812 17.726562 C 29.257812 17.726562 29.878906 17.851562 30.648438 18.007812 L 30.1875 18.742188 L 19.347656 18.742188 C 19.628906 17.898438 19.8125 17.34375 19.8125 17.34375 C 19.816406 17.332031 19.820312 17.324219 19.820312 17.3125 C 19.824219 17.304688 19.828125 17.292969 19.828125 17.28125 C 19.828125 17.273438 19.828125 17.261719 19.828125 17.25 C 19.828125 17.242188 19.832031 17.230469 19.828125 17.222656 C 19.828125 17.210938 19.828125 17.199219 19.824219 17.191406 C 19.824219 17.179688 19.824219 17.171875 19.820312 17.160156 C 19.816406 17.152344 19.8125 17.140625 19.808594 17.132812 C 19.804688 17.121094 19.804688 17.113281 19.796875 17.105469 C 19.792969 17.09375 19.789062 17.085938 19.78125 17.078125 C 19.777344 17.070312 19.773438 17.0625 19.765625 17.050781 C 19.761719 17.042969 19.753906 17.039062 19.746094 17.03125 C 19.738281 17.023438 19.734375 17.015625 19.726562 17.007812 C 19.71875 17 19.707031 16.996094 19.699219 16.988281 C 19.691406 16.984375 19.683594 16.976562 19.675781 16.972656 C 19.664062 16.964844 19.65625 16.960938 19.644531 16.957031 C 19.636719 16.953125 19.628906 16.949219 19.617188 16.945312 L 17.851562 16.332031 L 18.378906 14.941406 L 22.640625 14.894531 L 23.902344 16.035156 C 24.03125 16.152344 24.230469 16.140625 24.347656 16.011719 C 24.464844 15.882812 24.457031 15.683594 24.328125 15.566406 L 22.972656 14.34375 L 22.882812 14.257812 L 22.757812 14.261719 L 18.160156 14.3125 L 17.945312 14.3125 L 17.03125 16.714844 L 17.335938 16.820312 L 19.117188 17.4375 L 17.515625 22.242188 C 16.8125 21.96875 16.054688 21.824219 15.277344 21.824219 C 11.882812 21.824219 9.121094 24.582031 9.121094 27.976562 C 9.121094 29.621094 9.761719 31.164062 10.925781 32.328125 C 12.085938 33.488281 13.632812 34.128906 15.277344 34.128906 C 16.917969 34.128906 18.464844 33.488281 19.628906 32.328125 C 20.789062 31.164062 21.429688 29.621094 21.429688 27.976562 C 21.429688 26.332031 20.789062 24.789062 19.628906 23.625 C 19.167969 23.167969 18.652344 22.792969 18.09375 22.503906 C 18.242188 22.058594 18.394531 21.605469 18.542969 21.164062 L 23.222656 26.160156 C 22.898438 26.558594 22.707031 27.066406 22.707031 27.617188 C 22.707031 28.234375 22.945312 28.8125 23.382812 29.25 C 23.820312 29.6875 24.398438 29.925781 25.015625 29.925781 C 25.109375 29.925781 25.199219 29.917969 25.289062 29.910156 L 25.40625 30.421875 L 24.65625 30.421875 L 24.65625 31.144531 L 26.730469 31.144531 L 26.730469 30.421875 L 25.773438 30.421875 L 25.644531 29.839844 C 26.019531 29.734375 26.367188 29.535156 26.652344 29.25 C 26.992188 28.910156 27.210938 28.480469 27.292969 28.019531 L 28.335938 28.058594 C 28.355469 29.671875 28.992188 31.183594 30.136719 32.328125 C 31.296875 33.488281 32.84375 34.128906 34.488281 34.128906 C 36.128906 34.128906 37.675781 33.488281 38.839844 32.328125 C 40 31.164062 40.640625 29.621094 40.640625 27.976562 C 40.640625 26.332031 40 24.789062 38.839844 23.625 Z M 18.863281 24.390625 C 19.820312 25.347656 20.347656 26.621094 20.347656 27.976562 C 20.347656 30.773438 18.070312 33.046875 15.277344 33.046875 C 13.921875 33.046875 12.648438 32.519531 11.691406 31.5625 C 10.730469 30.605469 10.203125 29.332031 10.203125 27.976562 C 10.203125 26.621094 10.730469 25.347656 11.691406 24.390625 C 12.648438 23.433594 13.921875 22.90625 15.277344 22.90625 C 15.9375 22.90625 16.578125 23.03125 17.171875 23.273438 L 16.058594 26.613281 C 15.972656 26.84375 15.640625 27.503906 15.164062 27.679688 C 15.003906 27.742188 14.917969 27.921875 14.980469 28.085938 C 15.042969 28.25 15.222656 28.332031 15.386719 28.273438 C 16.234375 27.953125 16.636719 26.867188 16.65625 26.820312 C 16.65625 26.820312 17.148438 25.335938 17.746094 23.546875 C 18.148438 23.773438 18.523438 24.054688 18.863281 24.390625 Z M 31.679688 22.503906 C 29.847656 23.445312 28.550781 25.277344 28.359375 27.425781 L 27.316406 27.386719 C 27.265625 26.855469 27.035156 26.363281 26.652344 25.980469 C 26.617188 25.945312 26.578125 25.914062 26.539062 25.878906 L 30.425781 19.714844 Z M 32.121094 23.488281 L 33.988281 27.640625 L 29.441406 27.46875 C 29.554688 26.304688 30.0625 25.226562 30.902344 24.390625 C 31.265625 24.023438 31.679688 23.722656 32.121094 23.488281 Z M 24.566406 26.671875 L 24.058594 26.128906 C 24.167969 26.058594 24.285156 26 24.40625 25.953125 Z M 24.753906 25.867188 C 24.839844 25.855469 24.929688 25.84375 25.015625 25.84375 C 25.230469 25.84375 25.441406 25.886719 25.636719 25.957031 L 25 26.964844 Z M 26.246094 26.34375 C 26.253906 26.351562 26.261719 26.355469 26.269531 26.363281 C 26.542969 26.636719 26.714844 26.988281 26.765625 27.367188 L 25.628906 27.324219 Z M 19.109375 19.464844 L 29.730469 19.464844 L 25.929688 25.492188 C 25.644531 25.371094 25.335938 25.304688 25.015625 25.304688 C 24.886719 25.304688 24.761719 25.316406 24.636719 25.339844 L 24.378906 24.1875 L 25.199219 24.1875 L 25.199219 23.464844 L 23.121094 23.464844 L 23.121094 24.1875 L 24.011719 24.1875 L 24.289062 25.425781 C 24.070312 25.496094 23.867188 25.601562 23.683594 25.730469 L 18.769531 20.484375 C 18.886719 20.125 19 19.78125 19.109375 19.464844 Z M 25.015625 29.386719 C 24.542969 29.386719 24.097656 29.203125 23.765625 28.867188 C 23.429688 28.53125 23.246094 28.089844 23.246094 27.617188 C 23.246094 27.230469 23.371094 26.863281 23.597656 26.5625 L 24.785156 27.832031 L 24.835938 27.886719 L 25.171875 29.378906 C 25.121094 29.382812 25.070312 29.386719 25.015625 29.386719 Z M 25.527344 29.308594 L 25.21875 27.9375 L 26.746094 27.996094 C 26.605469 28.625 26.136719 29.125 25.527344 29.308594 Z M 34.488281 33.046875 C 33.132812 33.046875 31.859375 32.519531 30.902344 31.5625 C 29.972656 30.632812 29.449219 29.40625 29.417969 28.097656 L 34.476562 28.292969 L 34.789062 28.246094 L 34.773438 27.847656 L 32.699219 23.230469 C 33.261719 23.015625 33.867188 22.90625 34.488281 22.90625 C 35.839844 22.90625 37.113281 23.433594 38.074219 24.390625 C 39.03125 25.347656 39.558594 26.621094 39.558594 27.976562 C 39.558594 30.773438 37.285156 33.046875 34.488281 33.046875 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9a.svg	(revision 36424)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 48.957031 25 C 48.957031 38.230469 38.230469 48.957031 25 48.957031 C 11.769531 48.957031 1.042969 38.230469 1.042969 25 C 1.042969 11.769531 11.769531 1.042969 25 1.042969 C 38.230469 1.042969 48.957031 11.769531 48.957031 25 Z M 48.957031 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 27.582031 29.945312 L 29.09375 29.945312 L 29.09375 30.671875 L 29.121094 30.671875 C 29.433594 30.199219 29.847656 29.859375 30.542969 29.859375 C 31.195312 29.859375 31.621094 30.242188 31.890625 30.613281 C 32.257812 30.199219 32.65625 29.859375 33.457031 29.859375 C 34.210938 29.859375 35.097656 30.347656 35.097656 31.691406 L 35.097656 37.445312 L 33.589844 37.445312 L 33.589844 32.253906 C 33.589844 31.707031 33.324219 31.367188 32.851562 31.367188 C 32.289062 31.367188 32.097656 31.738281 32.097656 32.402344 L 32.097656 37.445312 L 30.585938 37.445312 L 30.585938 32.253906 C 30.585938 31.707031 30.320312 31.367188 29.847656 31.367188 C 29.285156 31.367188 29.09375 31.738281 29.09375 32.402344 L 29.09375 37.445312 L 27.582031 37.445312 L 27.582031 29.945312 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 18.589844 33.863281 L 25.179688 19.5 L 25.175781 19.488281 C 25.449219 18.847656 25.601562 18.140625 25.601562 17.394531 C 25.601562 14.449219 23.210938 12.058594 20.261719 12.058594 C 17.316406 12.058594 14.925781 14.449219 14.925781 17.394531 L 18.457031 17.394531 C 18.457031 16.398438 19.265625 15.589844 20.261719 15.589844 C 21.261719 15.589844 22.066406 16.398438 22.066406 17.394531 C 22.066406 17.394531 22.222656 17.933594 21.957031 18.632812 L 15.007812 33.863281 L 15.007812 37.445312 L 25.824219 37.445312 L 25.824219 33.863281 L 18.589844 33.863281 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 36.640625 25 L 42.9375 31.296875 C 42.9375 31.296875 44.035156 28.066406 44.035156 25 C 44.035156 21.933594 42.9375 18.703125 42.9375 18.703125 L 36.640625 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 13.367188 25.011719 L 7.070312 31.308594 C 7.070312 31.308594 5.972656 28.078125 5.972656 25.011719 C 5.972656 21.945312 7.070312 18.710938 7.070312 18.710938 L 13.367188 25.011719 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 0 25 C 0 11.191406 11.191406 0 25 0 C 38.808594 0 50 11.191406 50 25 C 50 38.808594 38.808594 50 25 50 C 11.191406 50 0 38.808594 0 25 Z M 25 43.539062 C 35.238281 43.539062 43.539062 35.238281 43.539062 25 C 43.539062 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.539062 25 43.539062 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9b.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9b.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9b.svg	(revision 36424)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 48.957031 25 C 48.957031 38.230469 38.230469 48.957031 25 48.957031 C 11.769531 48.957031 1.042969 38.230469 1.042969 25 C 1.042969 11.769531 11.769531 1.042969 25 1.042969 C 38.230469 1.042969 48.957031 11.769531 48.957031 25 Z M 48.957031 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 19.566406 30.765625 L 21.648438 30.765625 L 21.648438 32.84375 L 19.566406 34.988281 L 19.566406 30.765625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 25.839844 18.3125 C 24.160156 18.3125 22.6875 19.515625 22.6875 21.488281 L 22.6875 24.566406 C 22.6875 26.539062 24.160156 27.742188 25.839844 27.742188 C 26.203125 27.742188 26.570312 27.613281 26.878906 27.433594 L 26.878906 30.160156 C 26.878906 30.761719 26.441406 31.21875 25.839844 31.21875 C 25.238281 31.21875 24.804688 30.761719 24.804688 30.160156 L 22.6875 30.160156 C 22.6875 32.132812 24.160156 33.335938 25.839844 33.335938 C 27.523438 33.335938 28.996094 32.132812 28.996094 30.160156 L 28.996094 21.488281 C 28.996094 19.515625 27.523438 18.3125 25.839844 18.3125 Z M 25.839844 25.625 C 25.238281 25.625 24.804688 25.167969 24.804688 24.566406 L 24.804688 21.488281 C 24.804688 20.886719 25.238281 20.429688 25.839844 20.429688 C 26.441406 20.429688 26.878906 20.886719 26.878906 21.488281 L 26.878906 24.566406 C 26.878906 25.167969 26.441406 25.625 25.839844 25.625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 25 13.359375 L 31.296875 7.0625 C 31.296875 7.0625 28.066406 5.964844 25 5.964844 C 21.933594 5.964844 18.703125 7.0625 18.703125 7.0625 L 25 13.359375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 25.011719 36.632812 L 31.308594 42.929688 C 31.308594 42.929688 28.078125 44.027344 25.011719 44.027344 C 21.945312 44.027344 18.714844 42.929688 18.714844 42.929688 L 25.011719 36.632812 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 25 50 C 11.195312 50 0 38.808594 0 25 C 0 11.191406 11.195312 0 25 0 C 38.804688 0 50 11.191406 50 25 C 50 38.808594 38.804688 50 25 50 Z M 43.535156 25 C 43.535156 14.761719 35.238281 6.460938 25 6.460938 C 14.761719 6.460938 6.460938 14.761719 6.460938 25 C 6.460938 35.238281 14.761719 43.539062 25 43.539062 C 35.238281 43.539062 43.535156 35.238281 43.535156 25 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 30.332031 23.855469 L 32.199219 23.855469 L 32.199219 24.753906 L 32.234375 24.753906 C 32.617188 24.167969 33.132812 23.746094 33.992188 23.746094 C 34.796875 23.746094 35.324219 24.222656 35.65625 24.679688 C 36.113281 24.167969 36.605469 23.746094 37.59375 23.746094 C 38.527344 23.746094 39.625 24.351562 39.625 26.015625 L 39.625 33.132812 L 37.761719 33.132812 L 37.761719 26.710938 C 37.761719 26.03125 37.429688 25.613281 36.84375 25.613281 C 36.148438 25.613281 35.910156 26.070312 35.910156 26.894531 L 35.910156 33.132812 L 34.046875 33.132812 L 34.046875 26.710938 C 34.046875 26.03125 33.714844 25.613281 33.132812 25.613281 C 32.4375 25.613281 32.199219 26.070312 32.199219 26.894531 L 32.199219 33.132812 L 30.332031 33.132812 L 30.332031 23.855469 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 13.132812 30.59375 L 17.777344 20.476562 L 17.773438 20.46875 C 17.964844 20.015625 18.074219 19.519531 18.074219 18.996094 C 18.074219 16.917969 16.390625 15.234375 14.3125 15.234375 C 12.238281 15.234375 10.554688 16.917969 10.554688 18.996094 L 13.042969 18.996094 C 13.042969 18.292969 13.613281 17.726562 14.3125 17.726562 C 15.015625 17.726562 15.585938 18.292969 15.585938 18.996094 C 15.585938 18.996094 15.695312 19.375 15.503906 19.867188 L 10.613281 30.59375 L 10.613281 33.117188 L 18.230469 33.117188 L 18.230469 30.59375 L 13.132812 30.59375 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9c.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9c.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9c.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(92.54902%,10.980392%,14.117648%);fill-opacity:1;" d="M 25.148438 0.34375 C 38.84375 0.34375 49.949219 11.453125 49.949219 25.148438 C 49.949219 38.84375 38.84375 49.949219 25.148438 49.949219 C 11.453125 49.949219 0.34375 38.84375 0.34375 25.148438 C 0.34375 11.453125 11.453125 0.34375 25.148438 0.34375 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25.148438 6.675781 C 14.949219 6.675781 6.675781 14.949219 6.675781 25.148438 C 6.675781 35.34375 14.949219 43.617188 25.148438 43.617188 C 35.34375 43.617188 43.617188 35.34375 43.617188 25.148438 C 43.617188 14.949219 35.34375 6.675781 25.148438 6.675781 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(13.725491%,12.156863%,12.54902%);fill-opacity:1;" d="M 35.378906 25.65625 L 35.378906 31.722656 C 35.378906 32.527344 35.574219 33.175781 35.964844 33.679688 C 36.339844 34.210938 36.964844 34.464844 37.808594 34.464844 C 38.140625 34.464844 38.492188 34.425781 38.824219 34.347656 C 39.15625 34.269531 39.46875 34.152344 39.800781 34.015625 L 39.316406 32.585938 C 39.058594 32.683594 38.863281 32.761719 38.6875 32.785156 C 38.511719 32.820312 38.355469 32.84375 38.199219 32.84375 C 37.902344 32.84375 37.691406 32.742188 37.570312 32.527344 C 37.433594 32.3125 37.375 32.019531 37.375 31.644531 L 37.375 25.65625 L 39.488281 25.65625 L 39.488281 24.09375 L 37.375 24.09375 L 37.375 21.941406 L 35.378906 21.941406 L 35.378906 24.09375 L 34.144531 24.09375 L 33.972656 25.65625 Z M 28.472656 22.175781 L 32.347656 22.175781 L 32.347656 20.570312 L 26.53125 20.570312 L 26.53125 27.476562 L 27.980469 27.476562 C 28.375 27.324219 28.707031 27.242188 28.960938 27.242188 C 29.527344 27.242188 29.960938 27.4375 30.292969 27.851562 C 30.625 28.261719 30.78125 28.964844 30.78125 30.003906 C 30.78125 30.511719 30.722656 30.941406 30.625 31.273438 C 30.527344 31.628906 30.371094 31.902344 30.195312 32.117188 C 30.019531 32.332031 29.804688 32.46875 29.550781 32.546875 C 29.292969 32.644531 29 32.683594 28.707031 32.683594 C 28.414062 32.683594 28.0625 32.625 27.667969 32.527344 C 27.257812 32.429688 26.925781 32.292969 26.671875 32.15625 L 26.0625 33.664062 C 26.183594 33.738281 26.339844 33.820312 26.554688 33.898438 C 26.75 33.996094 26.964844 34.074219 27.21875 34.132812 C 27.476562 34.210938 27.726562 34.269531 28.019531 34.324219 C 28.292969 34.382812 28.570312 34.40625 28.84375 34.40625 C 29.351562 34.40625 29.839844 34.324219 30.332031 34.171875 C 30.800781 34.015625 31.230469 33.761719 31.601562 33.390625 C 31.976562 33.039062 32.265625 32.566406 32.484375 32 C 32.699219 31.433594 32.816406 30.707031 32.816406 29.867188 C 32.816406 28.554688 32.523438 27.535156 31.933594 26.792969 C 31.347656 26.050781 30.527344 25.675781 29.46875 25.675781 C 29.3125 25.675781 29.160156 25.699219 28.980469 25.71875 C 28.804688 25.734375 28.625 25.777344 28.472656 25.8125 Z M 22.058594 33.152344 C 22.058594 33.507812 22.136719 33.761719 22.3125 33.9375 C 22.464844 34.113281 22.585938 34.210938 22.683594 34.269531 L 21.761719 36.925781 L 23.035156 36.925781 L 24.363281 34.269531 C 24.503906 34.015625 24.582031 33.796875 24.621094 33.625 C 24.660156 33.449219 24.679688 33.289062 24.679688 33.152344 C 24.679688 32.785156 24.5625 32.46875 24.308594 32.214844 C 24.054688 31.960938 23.742188 31.84375 23.367188 31.84375 C 22.996094 31.84375 22.683594 31.960938 22.429688 32.214844 C 22.175781 32.46875 22.058594 32.785156 22.058594 33.152344 Z M 15.582031 16.59375 L 21.246094 16.59375 L 21.246094 14.246094 L 12.746094 14.246094 L 12.746094 24.34375 L 14.863281 24.34375 C 15.4375 24.113281 15.921875 24 16.296875 24 C 17.125 24 17.753906 24.285156 18.238281 24.886719 C 18.726562 25.488281 18.953125 26.519531 18.953125 28.03125 C 18.953125 28.777344 18.871094 29.40625 18.726562 29.894531 C 18.582031 30.410156 18.355469 30.808594 18.097656 31.125 C 17.839844 31.4375 17.527344 31.636719 17.152344 31.75 C 16.78125 31.894531 16.351562 31.953125 15.921875 31.953125 C 15.496094 31.953125 14.980469 31.867188 14.40625 31.722656 C 13.804688 31.578125 13.320312 31.382812 12.949219 31.179688 L 12.0625 33.382812 C 12.230469 33.496094 12.464844 33.609375 12.777344 33.726562 C 13.0625 33.871094 13.378906 33.984375 13.75 34.070312 C 14.121094 34.183594 14.492188 34.269531 14.921875 34.355469 C 15.324219 34.441406 15.722656 34.464844 16.125 34.464844 C 16.867188 34.464844 17.582031 34.355469 18.296875 34.125 C 18.984375 33.898438 19.613281 33.527344 20.15625 32.980469 C 20.699219 32.464844 21.128906 31.78125 21.445312 30.953125 C 21.757812 30.121094 21.929688 29.0625 21.929688 27.835938 C 21.929688 25.917969 21.503906 24.429688 20.644531 23.339844 C 19.785156 22.257812 18.582031 21.710938 17.039062 21.710938 C 16.8125 21.710938 16.582031 21.742188 16.324219 21.769531 C 16.066406 21.796875 15.808594 21.855469 15.582031 21.914062 Z M 15.582031 16.59375 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9d.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9d.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_52_9d.svg	(revision 36424)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(92.54902%,10.980392%,14.117648%);fill-opacity:1;" d="M 25.082031 0.164062 C 38.839844 0.164062 50 11.320312 50 25.082031 C 50 38.839844 38.839844 50 25.082031 50 C 11.320312 50 0.164062 38.839844 0.164062 25.082031 C 0.164062 11.320312 11.320312 0.164062 25.082031 0.164062 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25.082031 6.523438 C 14.835938 6.523438 6.523438 14.835938 6.523438 25.082031 C 6.523438 35.328125 14.835938 43.636719 25.082031 43.636719 C 35.328125 43.636719 43.636719 35.328125 43.636719 25.082031 C 43.636719 14.835938 35.328125 6.523438 25.082031 6.523438 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(13.725491%,12.156863%,12.54902%);fill-opacity:1;" d="M 25.074219 28.726562 L 22.332031 26.34375 L 24.046875 26.34375 L 24.046875 22.171875 L 26.097656 22.171875 L 26.097656 26.34375 L 27.816406 26.34375 Z M 25.074219 28.726562 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(13.725491%,12.156863%,12.54902%);fill-opacity:1;" d="M 22.8125 31.503906 L 17.441406 31.503906 L 17.441406 29.667969 C 17.441406 29.375 17.203125 29.054688 17.015625 29.054688 L 16.695312 29.054688 L 16.695312 27.433594 C 16.695312 26.6875 16.054688 26.101562 15.285156 26.101562 L 15.234375 26.101562 C 14.460938 26.101562 13.824219 26.6875 13.824219 27.433594 L 13.824219 30.464844 L 13.796875 30.464844 C 13.421875 30.464844 13.132812 31.316406 13.132812 32.351562 C 13.132812 33.390625 13.421875 34.242188 13.796875 34.242188 L 13.824219 34.242188 L 13.824219 37.222656 C 13.824219 37.9375 14.460938 38.550781 15.234375 38.550781 L 15.285156 38.550781 C 16.054688 38.550781 16.695312 37.9375 16.695312 37.222656 L 16.695312 35.597656 L 16.828125 35.597656 C 17.121094 35.597656 17.441406 35.28125 17.441406 34.984375 L 17.441406 33.125 L 22.8125 33.125 C 23.132812 34.058594 24.011719 34.71875 25.050781 34.71875 C 26.085938 34.71875 26.988281 34.058594 27.308594 33.125 L 32.847656 33.125 L 32.847656 34.984375 C 32.847656 35.28125 33.136719 35.570312 33.40625 35.597656 L 33.40625 37.222656 C 33.40625 37.9375 34.042969 38.550781 34.816406 38.550781 L 34.867188 38.550781 C 35.636719 38.550781 36.277344 37.9375 36.277344 37.222656 L 36.277344 34.242188 C 36.277344 34.242188 36.304688 34.242188 36.332031 34.242188 C 36.703125 34.242188 36.996094 33.390625 36.996094 32.351562 C 36.996094 31.316406 36.703125 30.464844 36.332031 30.464844 C 36.304688 30.464844 36.277344 30.464844 36.277344 30.464844 L 36.277344 27.433594 C 36.277344 26.6875 35.636719 26.101562 34.867188 26.101562 L 34.816406 26.101562 C 34.042969 26.101562 33.40625 26.6875 33.40625 27.433594 L 33.40625 29.054688 L 33.273438 29.054688 C 33.058594 29.054688 32.847656 29.375 32.847656 29.667969 L 32.847656 31.503906 L 27.308594 31.503906 C 26.988281 30.597656 26.085938 29.933594 25.050781 29.933594 C 24.011719 29.933594 23.132812 30.597656 22.8125 31.503906 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(13.725491%,12.156863%,12.54902%);fill-opacity:1;" d="M 32.144531 18.730469 C 32.144531 19.300781 32.277344 19.746094 32.550781 20.0625 C 32.832031 20.378906 33.265625 20.542969 33.859375 20.542969 C 34.085938 20.542969 34.332031 20.519531 34.558594 20.46875 C 34.777344 20.433594 35.007812 20.363281 35.222656 20.265625 L 34.921875 19.386719 C 34.765625 19.445312 34.617188 19.484375 34.484375 19.507812 C 34.355469 19.527344 34.21875 19.542969 34.085938 19.542969 C 33.820312 19.542969 33.628906 19.484375 33.53125 19.347656 C 33.421875 19.226562 33.375 19.046875 33.375 18.804688 L 33.375 15.347656 L 35.015625 15.347656 L 35.015625 14.382812 L 33.375 14.382812 L 33.375 12.8125 L 32.144531 12.8125 L 32.144531 14.382812 L 31.355469 14.382812 L 31.355469 15.347656 L 32.144531 15.347656 Z M 30.835938 18.46875 L 30.835938 17.4375 L 29.882812 17.4375 L 29.882812 15.738281 L 28.769531 15.738281 L 28.640625 17.4375 L 26.460938 17.4375 L 29.542969 11.953125 L 28.300781 11.953125 L 25.277344 17.292969 L 25.277344 18.46875 L 28.640625 18.46875 L 28.640625 20.421875 L 29.882812 20.421875 L 29.882812 18.46875 Z M 22.863281 19.648438 C 22.875 19.894531 22.933594 20.070312 23.039062 20.195312 C 23.132812 20.316406 23.230469 20.394531 23.296875 20.421875 L 22.523438 22.269531 L 23.40625 22.269531 L 24.46875 20.421875 C 24.5625 20.25 24.628906 20.097656 24.660156 19.964844 C 24.671875 19.839844 24.6875 19.730469 24.6875 19.648438 C 24.6875 19.390625 24.589844 19.171875 24.425781 19 C 24.25 18.835938 24.03125 18.738281 23.773438 18.738281 C 23.515625 18.738281 23.296875 18.835938 23.121094 19 C 22.960938 19.171875 22.863281 19.390625 22.863281 19.648438 Z M 18.214844 11.015625 C 18.699219 11 19.121094 11.105469 19.46875 11.316406 C 19.800781 11.542969 19.984375 11.964844 19.996094 12.585938 C 19.984375 13.207031 19.757812 13.734375 19.316406 14.171875 C 18.878906 14.609375 18.378906 15.046875 17.824219 15.488281 C 17.25 15.921875 16.75 16.453125 16.3125 17.070312 C 15.886719 17.6875 15.664062 18.492188 15.632812 19.488281 L 15.632812 20.421875 L 21.476562 20.421875 L 21.476562 19.078125 L 17.21875 19.078125 C 17.234375 18.398438 17.460938 17.828125 17.898438 17.375 C 18.320312 16.90625 18.820312 16.46875 19.394531 16.042969 C 19.953125 15.621094 20.453125 15.121094 20.886719 14.578125 C 21.3125 14.019531 21.539062 13.328125 21.570312 12.464844 C 21.554688 11.589844 21.269531 10.925781 20.691406 10.441406 C 20.132812 9.957031 19.335938 9.714844 18.292969 9.703125 C 17.671875 9.714844 17.128906 9.820312 16.660156 10.015625 C 16.191406 10.230469 15.796875 10.441406 15.484375 10.679688 L 16.132812 11.738281 C 16.460938 11.527344 16.796875 11.347656 17.128906 11.210938 C 17.445312 11.089844 17.808594 11.015625 18.214844 11.015625 Z M 18.214844 11.015625 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_26.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_26.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_26.svg	(revision 36424)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="50px" viewBox="0 0 50 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 48.730469 49.980469 C 49.070312 49.980469 49.386719 49.875 49.628906 49.683594 C 49.867188 49.492188 50 49.238281 50 48.96875 L 50 1.03125 C 50 0.761719 49.867188 0.507812 49.628906 0.316406 C 49.386719 0.125 49.070312 0.0195312 48.730469 0.0195312 L 1.269531 0.0195312 C 0.570312 0.0195312 0 0.472656 0 1.03125 L 0 48.96875 C 0 49.238281 0.132812 49.492188 0.371094 49.683594 C 0.613281 49.875 0.929688 49.980469 1.269531 49.980469 Z M 48.730469 49.980469 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 1.269531 49.648438 C 1.042969 49.648438 0.828125 49.574219 0.667969 49.449219 C 0.507812 49.320312 0.417969 49.148438 0.417969 48.96875 L 0.417969 1.03125 C 0.417969 0.851562 0.507812 0.679688 0.667969 0.550781 C 0.828125 0.425781 1.042969 0.351562 1.269531 0.351562 L 48.730469 0.351562 C 48.957031 0.351562 49.171875 0.425781 49.332031 0.550781 C 49.492188 0.679688 49.582031 0.851562 49.582031 1.03125 L 49.582031 48.96875 C 49.582031 49.34375 49.199219 49.648438 48.730469 49.648438 L 1.269531 49.648438 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 6.183594 20.929688 C 6.183594 10.546875 14.550781 2.128906 24.871094 2.128906 C 35.191406 2.128906 43.554688 10.546875 43.554688 20.929688 C 43.554688 31.316406 35.191406 39.734375 24.871094 39.734375 C 14.550781 39.734375 6.183594 31.316406 6.183594 20.929688 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 38.84375 19.734375 C 37.675781 18.558594 36.121094 17.914062 34.46875 17.914062 C 33.679688 17.914062 32.921875 18.066406 32.226562 18.339844 L 30.792969 15.132812 L 31.371094 14.210938 C 32.386719 14.417969 33.386719 14.617188 33.441406 14.617188 C 34.007812 14.617188 34.46875 14.15625 34.46875 13.585938 C 34.46875 13.015625 34.007812 12.554688 33.441406 12.554688 C 33.414062 12.554688 29.210938 12.558594 29.210938 12.558594 C 28.882812 12.558594 28.613281 12.828125 28.613281 13.160156 C 28.613281 13.492188 28.882812 13.761719 29.210938 13.761719 L 29.210938 13.769531 C 29.210938 13.769531 29.839844 13.898438 30.613281 14.054688 L 30.148438 14.796875 L 19.253906 14.796875 C 19.539062 13.945312 19.722656 13.382812 19.722656 13.382812 C 19.726562 13.371094 19.726562 13.363281 19.730469 13.351562 C 19.734375 13.34375 19.734375 13.332031 19.738281 13.320312 C 19.738281 13.308594 19.738281 13.300781 19.738281 13.289062 C 19.738281 13.277344 19.738281 13.269531 19.738281 13.257812 C 19.738281 13.246094 19.734375 13.238281 19.734375 13.226562 C 19.730469 13.21875 19.730469 13.207031 19.726562 13.199219 C 19.726562 13.1875 19.722656 13.179688 19.71875 13.167969 C 19.714844 13.160156 19.710938 13.148438 19.707031 13.140625 C 19.703125 13.132812 19.695312 13.125 19.691406 13.113281 C 19.6875 13.105469 19.679688 13.097656 19.675781 13.089844 C 19.667969 13.082031 19.660156 13.074219 19.65625 13.066406 C 19.648438 13.058594 19.640625 13.050781 19.632812 13.042969 C 19.625 13.035156 19.617188 13.03125 19.609375 13.023438 C 19.601562 13.019531 19.59375 13.011719 19.582031 13.007812 C 19.574219 13 19.5625 12.996094 19.554688 12.992188 C 19.542969 12.988281 19.535156 12.984375 19.527344 12.980469 L 17.75 12.359375 L 18.28125 10.953125 L 22.566406 10.90625 L 23.832031 12.058594 C 23.960938 12.175781 24.164062 12.167969 24.28125 12.035156 C 24.398438 11.90625 24.386719 11.703125 24.257812 11.585938 L 22.898438 10.347656 L 22.804688 10.265625 L 22.683594 10.265625 L 18.058594 10.316406 L 17.84375 10.320312 L 16.925781 12.746094 L 17.234375 12.851562 L 19.023438 13.480469 L 17.414062 18.335938 C 16.707031 18.058594 15.945312 17.914062 15.164062 17.914062 C 11.75 17.914062 8.976562 20.703125 8.976562 24.136719 C 8.976562 25.796875 9.621094 27.359375 10.789062 28.535156 C 11.957031 29.710938 13.511719 30.359375 15.164062 30.359375 C 16.8125 30.359375 18.367188 29.710938 19.535156 28.535156 C 20.703125 27.359375 21.347656 25.796875 21.347656 24.136719 C 21.347656 22.472656 20.703125 20.910156 19.535156 19.734375 C 19.074219 19.273438 18.554688 18.894531 17.996094 18.601562 C 18.144531 18.148438 18.296875 17.691406 18.445312 17.246094 L 23.148438 22.300781 C 22.824219 22.703125 22.628906 23.214844 22.628906 23.769531 C 22.628906 24.394531 22.871094 24.980469 23.308594 25.421875 C 23.75 25.867188 24.332031 26.109375 24.953125 26.109375 C 25.042969 26.109375 25.136719 26.101562 25.226562 26.089844 L 25.34375 26.609375 L 24.589844 26.609375 L 24.589844 27.339844 L 26.675781 27.339844 L 26.675781 26.609375 L 25.714844 26.609375 L 25.582031 26.019531 C 25.960938 25.914062 26.308594 25.710938 26.59375 25.421875 C 26.9375 25.078125 27.15625 24.648438 27.238281 24.179688 L 28.289062 24.21875 C 28.308594 25.851562 28.949219 27.378906 30.097656 28.535156 C 31.265625 29.710938 32.816406 30.359375 34.46875 30.359375 C 36.121094 30.359375 37.675781 29.710938 38.84375 28.535156 C 40.011719 27.359375 40.65625 25.796875 40.65625 24.136719 C 40.65625 22.472656 40.011719 20.910156 38.84375 19.734375 Z M 18.765625 20.507812 C 19.730469 21.476562 20.257812 22.765625 20.257812 24.136719 C 20.257812 26.964844 17.972656 29.265625 15.164062 29.265625 C 13.800781 29.265625 12.519531 28.730469 11.558594 27.761719 C 10.59375 26.792969 10.066406 25.503906 10.066406 24.136719 C 10.066406 22.765625 10.59375 21.476562 11.558594 20.507812 C 12.519531 19.539062 13.800781 19.007812 15.164062 19.007812 C 15.824219 19.007812 16.472656 19.136719 17.070312 19.378906 L 15.949219 22.757812 C 15.863281 22.992188 15.53125 23.65625 15.050781 23.835938 C 14.886719 23.898438 14.804688 24.082031 14.863281 24.246094 C 14.925781 24.414062 15.109375 24.496094 15.273438 24.433594 C 16.125 24.113281 16.53125 23.015625 16.546875 22.96875 C 16.550781 22.964844 17.046875 21.464844 17.644531 19.65625 C 18.050781 19.882812 18.429688 20.167969 18.765625 20.507812 Z M 31.648438 18.601562 C 29.808594 19.554688 28.503906 21.40625 28.3125 23.578125 L 27.265625 23.539062 C 27.210938 23.003906 26.980469 22.503906 26.59375 22.117188 C 26.558594 22.082031 26.519531 22.046875 26.480469 22.015625 L 30.386719 15.78125 Z M 32.09375 19.597656 L 33.96875 23.796875 L 29.398438 23.621094 C 29.515625 22.445312 30.023438 21.355469 30.867188 20.507812 C 31.234375 20.140625 31.648438 19.832031 32.09375 19.597656 Z M 24.5 22.816406 L 23.988281 22.265625 C 24.097656 22.195312 24.214844 22.136719 24.339844 22.09375 Z M 24.6875 22 C 24.777344 21.988281 24.863281 21.980469 24.953125 21.980469 C 25.167969 21.980469 25.378906 22.019531 25.574219 22.09375 L 24.9375 23.113281 Z M 26.1875 22.484375 C 26.195312 22.492188 26.203125 22.496094 26.210938 22.503906 C 26.488281 22.78125 26.660156 23.136719 26.710938 23.519531 L 25.566406 23.476562 Z M 19.011719 15.527344 L 29.691406 15.527344 L 25.867188 21.621094 C 25.582031 21.5 25.273438 21.433594 24.953125 21.433594 C 24.820312 21.433594 24.695312 21.445312 24.570312 21.46875 L 24.3125 20.304688 L 25.132812 20.304688 L 25.132812 19.574219 L 23.046875 19.574219 L 23.046875 20.304688 L 23.941406 20.304688 L 24.21875 21.554688 C 24 21.628906 23.796875 21.734375 23.613281 21.863281 L 18.671875 16.558594 C 18.792969 16.195312 18.90625 15.851562 19.011719 15.527344 Z M 24.953125 25.5625 C 24.476562 25.5625 24.03125 25.375 23.695312 25.035156 C 23.359375 24.699219 23.171875 24.25 23.171875 23.769531 C 23.171875 23.382812 23.296875 23.011719 23.523438 22.703125 L 24.773438 24.042969 L 25.105469 25.554688 C 25.054688 25.558594 25.003906 25.5625 24.953125 25.5625 Z M 25.464844 25.484375 L 25.15625 24.097656 L 26.6875 24.15625 C 26.550781 24.789062 26.074219 25.300781 25.464844 25.484375 Z M 34.46875 29.265625 C 33.109375 29.265625 31.828125 28.730469 30.867188 27.761719 C 29.933594 26.824219 29.40625 25.582031 29.375 24.261719 L 34.457031 24.453125 L 34.773438 24.410156 L 34.761719 24.003906 L 32.671875 19.335938 C 33.238281 19.121094 33.847656 19.007812 34.46875 19.007812 C 35.832031 19.007812 37.113281 19.539062 38.074219 20.507812 C 39.035156 21.476562 39.566406 22.765625 39.566406 24.136719 C 39.566406 26.964844 37.28125 29.265625 34.46875 29.265625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 3.066406 41.4375 L 5.90625 41.4375 L 5.90625 42.53125 L 3.789062 42.53125 L 3.789062 43.640625 L 5.699219 43.640625 L 5.699219 44.675781 L 3.789062 44.675781 L 3.789062 46.949219 L 3.777344 46.949219 L 3.789062 46.949219 L 3.765625 46.949219 L 3.777344 46.949219 L 3.75 46.949219 L 3.765625 46.949219 L 3.738281 46.949219 L 3.75 46.949219 L 3.726562 46.949219 L 3.738281 46.949219 L 3.714844 46.949219 L 3.726562 46.949219 L 3.703125 46.949219 L 3.714844 46.949219 L 3.691406 46.949219 L 3.703125 46.949219 L 3.679688 46.949219 L 3.691406 46.949219 L 3.664062 46.949219 L 3.679688 46.949219 L 3.652344 46.949219 L 3.664062 46.949219 L 3.640625 46.949219 L 3.652344 46.949219 L 3.628906 46.949219 L 3.640625 46.949219 L 3.617188 46.949219 L 3.628906 46.949219 L 3.605469 46.949219 L 3.617188 46.949219 L 3.59375 46.949219 L 3.605469 46.949219 L 3.578125 46.949219 L 3.59375 46.949219 L 3.566406 46.949219 L 3.578125 46.949219 L 3.554688 46.949219 L 3.566406 46.949219 L 3.542969 46.949219 L 3.554688 46.949219 L 3.53125 46.949219 L 3.542969 46.949219 L 3.519531 46.949219 L 3.53125 46.949219 L 3.507812 46.949219 L 3.519531 46.949219 L 3.496094 46.949219 L 3.507812 46.949219 L 3.480469 46.949219 L 3.496094 46.949219 L 3.46875 46.949219 L 3.480469 46.949219 L 3.457031 46.949219 L 3.46875 46.949219 L 3.445312 46.949219 L 3.457031 46.949219 L 3.433594 46.949219 L 3.445312 46.949219 L 3.421875 46.949219 L 3.433594 46.949219 L 3.410156 46.949219 L 3.421875 46.949219 L 3.394531 46.949219 L 3.410156 46.949219 L 3.382812 46.949219 L 3.394531 46.949219 L 3.371094 46.949219 L 3.382812 46.949219 L 3.359375 46.949219 L 3.371094 46.949219 L 3.347656 46.949219 L 3.359375 46.949219 L 3.335938 46.949219 L 3.347656 46.949219 L 3.324219 46.949219 L 3.335938 46.949219 L 3.3125 46.949219 L 3.324219 46.949219 L 3.296875 46.949219 L 3.3125 46.949219 L 3.285156 46.949219 L 3.296875 46.949219 L 3.273438 46.949219 L 3.285156 46.949219 L 3.261719 46.949219 L 3.273438 46.949219 L 3.25 46.949219 L 3.261719 46.949219 L 3.238281 46.949219 L 3.25 46.949219 L 3.226562 46.949219 L 3.238281 46.949219 L 3.210938 46.949219 L 3.226562 46.949219 L 3.199219 46.949219 L 3.210938 46.949219 L 3.1875 46.949219 L 3.199219 46.949219 L 3.175781 46.949219 L 3.1875 46.949219 L 3.164062 46.949219 L 3.175781 46.949219 L 3.152344 46.949219 L 3.164062 46.949219 L 3.140625 46.949219 L 3.152344 46.949219 L 3.128906 46.949219 L 3.140625 46.949219 L 3.113281 46.949219 L 3.128906 46.949219 L 3.101562 46.949219 L 3.113281 46.949219 L 3.089844 46.949219 L 3.101562 46.949219 L 3.078125 46.949219 L 3.089844 46.949219 L 3.066406 46.949219 L 3.078125 46.949219 L 3.054688 46.949219 L 3.066406 46.949219 L 3.042969 46.949219 L 3.054688 46.949219 L 3.027344 46.949219 L 3.042969 46.949219 L 3.015625 46.949219 L 3.027344 46.949219 L 3.003906 46.949219 L 3.015625 46.949219 L 2.992188 46.949219 L 3.003906 46.949219 L 2.980469 46.949219 L 2.992188 46.949219 L 2.96875 46.949219 L 2.980469 46.949219 L 2.957031 46.949219 L 2.96875 46.949219 L 2.941406 46.949219 L 2.957031 46.949219 L 2.929688 46.949219 L 2.941406 46.949219 L 2.917969 46.949219 L 2.929688 46.949219 L 2.90625 46.949219 L 2.917969 46.949219 L 2.894531 46.949219 L 2.90625 46.949219 L 2.882812 46.949219 L 2.894531 46.949219 L 2.871094 46.949219 L 2.882812 46.949219 L 2.859375 46.949219 L 2.871094 46.949219 L 2.84375 46.949219 L 2.859375 46.949219 L 2.832031 46.949219 L 2.84375 46.949219 L 2.820312 46.949219 L 2.832031 46.949219 L 2.820312 46.949219 L 2.820312 41.4375 Z M 3.066406 41.4375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 7.65625 42.847656 C 8.214844 42.804688 8.679688 42.96875 9.054688 43.335938 L 9.066406 43.367188 C 9.097656 43.414062 9.121094 43.460938 9.136719 43.511719 C 9.179688 43.585938 9.210938 43.652344 9.222656 43.710938 L 9.222656 43.769531 C 9.25 43.863281 9.261719 43.945312 9.261719 44.015625 L 9.261719 45.425781 C 9.253906 45.660156 9.261719 45.859375 9.285156 46.015625 C 9.386719 46.136719 9.5 46.214844 9.628906 46.246094 L 9.605469 46.289062 L 9.578125 46.359375 L 9.554688 46.417969 L 9.53125 46.503906 L 9.507812 46.546875 L 9.457031 46.691406 L 9.433594 46.734375 L 9.421875 46.777344 L 9.40625 46.820312 L 9.394531 46.847656 L 9.308594 47.066406 C 8.945312 47.066406 8.671875 46.933594 8.488281 46.664062 C 8.140625 47.070312 7.707031 47.171875 7.191406 46.964844 C 6.714844 46.8125 6.4375 46.46875 6.359375 45.941406 C 6.363281 45.167969 6.671875 44.714844 7.289062 44.589844 C 7.324219 44.566406 7.355469 44.550781 7.386719 44.546875 L 7.425781 44.546875 C 7.4375 44.535156 7.449219 44.53125 7.460938 44.53125 L 7.496094 44.515625 L 7.71875 44.472656 L 7.816406 44.460938 L 7.851562 44.445312 L 8.0625 44.429688 C 8.171875 44.410156 8.261719 44.40625 8.332031 44.417969 C 8.359375 43.882812 8.113281 43.699219 7.582031 43.871094 L 7.546875 43.882812 L 7.449219 43.898438 L 7.363281 43.941406 L 7.328125 43.957031 L 7.203125 44 C 7.140625 44.050781 7.082031 44.082031 7.03125 44.101562 C 6.964844 44.164062 6.894531 44.207031 6.824219 44.230469 L 6.738281 44.042969 L 6.714844 44.027344 L 6.703125 43.984375 L 6.675781 43.957031 L 6.664062 43.914062 C 6.613281 43.839844 6.574219 43.773438 6.554688 43.710938 C 6.523438 43.675781 6.503906 43.636719 6.492188 43.597656 C 6.441406 43.535156 6.410156 43.472656 6.394531 43.410156 L 6.421875 43.394531 L 6.457031 43.367188 L 6.480469 43.351562 C 6.535156 43.308594 6.585938 43.273438 6.628906 43.25 C 6.660156 43.222656 6.695312 43.210938 6.726562 43.207031 L 6.75 43.179688 C 6.828125 43.136719 6.890625 43.109375 6.945312 43.09375 L 6.972656 43.0625 L 7.007812 43.0625 C 7.046875 43.035156 7.078125 43.015625 7.105469 43.007812 L 7.144531 43.007812 C 7.199219 42.972656 7.25 42.953125 7.300781 42.949219 C 7.414062 42.894531 7.519531 42.863281 7.621094 42.863281 Z M 8.246094 45.222656 L 8.207031 45.222656 C 8.160156 45.238281 8.117188 45.25 8.085938 45.25 L 8.050781 45.25 C 8.035156 45.261719 8.023438 45.265625 8.011719 45.265625 L 7.964844 45.28125 L 7.925781 45.28125 L 7.878906 45.292969 L 7.804688 45.308594 C 7.792969 45.320312 7.78125 45.324219 7.765625 45.324219 L 7.683594 45.351562 C 7.566406 45.386719 7.476562 45.417969 7.414062 45.453125 C 7.328125 45.585938 7.300781 45.726562 7.339844 45.871094 C 7.542969 46.207031 7.835938 46.265625 8.21875 46.042969 L 8.316406 45.871094 L 8.332031 45.8125 L 8.332031 45.207031 L 8.292969 45.207031 Z M 8.246094 45.222656 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 10.4375 41.453125 L 11.148438 41.453125 L 11.148438 43.28125 C 11.550781 42.914062 11.972656 42.828125 12.40625 43.019531 C 12.800781 43.222656 13.066406 43.539062 13.203125 43.96875 L 13.203125 44.027344 C 13.253906 44.183594 13.277344 44.324219 13.277344 44.460938 L 13.277344 46.949219 L 12.359375 46.949219 L 12.359375 44.503906 L 12.347656 44.417969 C 12.320312 44.351562 12.304688 44.292969 12.296875 44.242188 C 12.140625 43.988281 11.9375 43.882812 11.683594 43.925781 C 11.496094 43.992188 11.347656 44.101562 11.230469 44.257812 L 11.21875 44.316406 C 11.179688 44.40625 11.15625 44.488281 11.148438 44.5625 L 11.148438 46.949219 L 10.226562 46.949219 L 10.226562 41.453125 Z M 10.4375 41.453125 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 15.898438 42.949219 L 16.179688 42.949219 L 16.179688 43.984375 C 15.707031 43.914062 15.367188 44.089844 15.164062 44.515625 L 15.164062 44.5625 C 15.125 44.671875 15.109375 44.785156 15.113281 44.890625 L 15.113281 46.9375 L 14.195312 46.9375 L 14.195312 43.019531 L 15.113281 43.019531 L 15.113281 43.394531 C 15.328125 43.136719 15.574219 42.988281 15.847656 42.949219 Z M 15.898438 42.949219 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 18.714844 42.949219 L 18.996094 42.949219 L 18.996094 43.984375 C 18.523438 43.914062 18.183594 44.089844 17.980469 44.515625 L 17.980469 44.5625 C 17.941406 44.671875 17.925781 44.785156 17.929688 44.890625 L 17.929688 46.9375 L 17.011719 46.9375 L 17.011719 43.019531 L 17.929688 43.019531 L 17.929688 43.394531 C 18.144531 43.136719 18.390625 42.988281 18.664062 42.949219 Z M 18.714844 42.949219 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 20.941406 42.847656 C 21.5 42.804688 21.964844 42.96875 22.335938 43.335938 L 22.347656 43.367188 C 22.382812 43.414062 22.40625 43.460938 22.421875 43.511719 C 22.464844 43.585938 22.496094 43.652344 22.507812 43.710938 L 22.507812 43.769531 C 22.535156 43.863281 22.546875 43.945312 22.546875 44.015625 L 22.546875 45.425781 C 22.539062 45.660156 22.546875 45.859375 22.570312 46.015625 C 22.671875 46.136719 22.785156 46.214844 22.914062 46.246094 L 22.886719 46.289062 L 22.863281 46.359375 L 22.839844 46.417969 L 22.816406 46.503906 L 22.789062 46.546875 L 22.742188 46.691406 L 22.71875 46.734375 L 22.703125 46.777344 L 22.691406 46.820312 L 22.679688 46.847656 L 22.59375 47.066406 C 22.230469 47.066406 21.957031 46.933594 21.773438 46.664062 C 21.425781 47.070312 20.992188 47.171875 20.476562 46.964844 C 20 46.8125 19.722656 46.46875 19.644531 45.941406 C 19.648438 45.167969 19.957031 44.714844 20.574219 44.589844 C 20.605469 44.566406 20.640625 44.550781 20.671875 44.546875 L 20.707031 44.546875 C 20.722656 44.535156 20.734375 44.53125 20.746094 44.53125 L 20.78125 44.515625 L 21.003906 44.472656 L 21.101562 44.460938 L 21.136719 44.445312 L 21.34375 44.429688 C 21.457031 44.410156 21.546875 44.40625 21.613281 44.417969 C 21.644531 43.882812 21.398438 43.699219 20.867188 43.871094 L 20.832031 43.882812 L 20.734375 43.898438 L 20.648438 43.941406 L 20.609375 43.957031 L 20.488281 44 C 20.425781 44.050781 20.367188 44.082031 20.316406 44.101562 C 20.246094 44.164062 20.179688 44.207031 20.109375 44.230469 L 20.023438 44.042969 L 20 44.027344 L 19.988281 43.984375 L 19.960938 43.957031 L 19.949219 43.914062 C 19.898438 43.839844 19.859375 43.773438 19.839844 43.710938 C 19.808594 43.675781 19.785156 43.636719 19.777344 43.597656 C 19.726562 43.535156 19.691406 43.472656 19.679688 43.410156 L 19.703125 43.394531 L 19.742188 43.367188 L 19.765625 43.351562 C 19.820312 43.308594 19.871094 43.273438 19.914062 43.25 C 19.945312 43.222656 19.976562 43.210938 20.011719 43.207031 L 20.035156 43.179688 C 20.109375 43.136719 20.175781 43.109375 20.230469 43.09375 L 20.257812 43.0625 L 20.292969 43.0625 C 20.332031 43.035156 20.363281 43.015625 20.390625 43.007812 L 20.425781 43.007812 C 20.480469 42.972656 20.535156 42.953125 20.585938 42.949219 C 20.699219 42.894531 20.804688 42.863281 20.90625 42.863281 Z M 21.527344 45.222656 L 21.492188 45.222656 C 21.445312 45.238281 21.402344 45.25 21.371094 45.25 L 21.332031 45.25 C 21.320312 45.261719 21.308594 45.265625 21.296875 45.265625 L 21.246094 45.28125 L 21.210938 45.28125 L 21.160156 45.292969 L 21.089844 45.308594 C 21.078125 45.320312 21.0625 45.324219 21.050781 45.324219 L 21.003906 45.339844 L 20.964844 45.351562 C 20.851562 45.386719 20.761719 45.417969 20.695312 45.453125 C 20.609375 45.585938 20.585938 45.726562 20.625 45.871094 C 20.828125 46.207031 21.121094 46.265625 21.503906 46.042969 L 21.601562 45.871094 L 21.613281 45.8125 L 21.613281 45.207031 L 21.578125 45.207031 Z M 21.527344 45.222656 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 25.886719 41.453125 L 26.597656 41.453125 L 26.597656 46.9375 L 25.679688 46.9375 L 25.679688 46.691406 C 25.445312 46.902344 25.203125 47.015625 24.945312 47.035156 C 24.394531 47.089844 23.964844 46.886719 23.660156 46.433594 C 23.296875 45.8125 23.183594 45.125 23.316406 44.375 C 23.4375 43.640625 23.765625 43.167969 24.296875 42.949219 C 24.820312 42.765625 25.28125 42.84375 25.679688 43.179688 L 25.679688 41.453125 Z M 24.835938 43.8125 C 24.488281 43.921875 24.292969 44.167969 24.246094 44.546875 C 24.167969 44.933594 24.191406 45.289062 24.308594 45.613281 C 24.425781 45.886719 24.601562 46.039062 24.835938 46.070312 C 25.164062 46.097656 25.417969 45.957031 25.59375 45.65625 C 25.613281 45.582031 25.636719 45.519531 25.65625 45.46875 L 25.65625 45.425781 L 25.667969 45.351562 L 25.667969 44.515625 C 25.542969 44.011719 25.261719 43.777344 24.835938 43.8125 Z M 24.835938 43.8125 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 28.542969 42.890625 C 29.167969 42.847656 29.6875 43.042969 30.101562 43.480469 L 30.0625 43.523438 L 30.027344 43.566406 C 30 43.609375 29.976562 43.644531 29.953125 43.667969 L 29.902344 43.726562 L 29.867188 43.769531 C 29.832031 43.828125 29.792969 43.871094 29.757812 43.898438 L 29.746094 43.925781 L 29.71875 43.96875 L 29.695312 43.984375 L 29.535156 44.199219 C 29.003906 43.679688 28.589844 43.628906 28.300781 44.042969 C 28.296875 44.152344 28.316406 44.25 28.359375 44.332031 L 28.410156 44.34375 L 28.445312 44.375 L 28.484375 44.375 L 28.519531 44.386719 L 28.617188 44.402344 L 28.8125 44.460938 C 29.261719 44.464844 29.625 44.628906 29.902344 44.949219 C 30.136719 45.359375 30.1875 45.773438 30.050781 46.1875 C 29.917969 46.546875 29.707031 46.789062 29.425781 46.90625 C 28.511719 47.210938 27.742188 47.019531 27.125 46.332031 C 27.164062 46.269531 27.199219 46.222656 27.234375 46.1875 L 27.285156 46.160156 C 27.335938 46.078125 27.390625 46.015625 27.457031 45.972656 L 27.492188 45.914062 L 27.515625 45.886719 L 27.539062 45.855469 L 27.566406 45.828125 L 27.613281 45.796875 C 27.671875 45.710938 27.730469 45.644531 27.785156 45.597656 C 28.195312 46.070312 28.605469 46.234375 29.023438 46.085938 L 29.035156 46.058594 C 29.089844 46.015625 29.136719 45.960938 29.167969 45.898438 C 29.175781 45.753906 29.136719 45.644531 29.046875 45.570312 L 29.011719 45.570312 L 28.984375 45.539062 L 28.949219 45.539062 L 28.914062 45.523438 L 28.886719 45.496094 C 28.761719 45.472656 28.660156 45.445312 28.582031 45.410156 C 27.859375 45.371094 27.457031 44.996094 27.371094 44.289062 C 27.378906 43.433594 27.769531 42.96875 28.542969 42.890625 Z M 28.542969 42.890625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 31.996094 41.4375 C 32.015625 41.457031 32.023438 41.484375 32.023438 41.507812 L 32.023438 42.976562 L 32.867188 42.976562 L 32.867188 43.882812 L 32.023438 43.882812 L 32.023438 45.84375 L 32.046875 45.929688 C 32.203125 46.117188 32.453125 46.132812 32.792969 45.984375 L 32.804688 46.042969 L 32.867188 46.273438 L 32.878906 46.316406 L 32.890625 46.433594 L 32.929688 46.53125 L 32.929688 46.574219 C 32.945312 46.636719 32.957031 46.6875 32.964844 46.734375 L 33 46.878906 C 32.492188 47.066406 32.011719 47.105469 31.558594 46.992188 C 31.417969 46.910156 31.308594 46.816406 31.226562 46.707031 C 31.167969 46.582031 31.125 46.476562 31.105469 46.390625 L 31.105469 46.289062 C 31.089844 46.234375 31.085938 46.1875 31.089844 46.144531 L 31.089844 43.882812 L 30.554688 43.882812 L 30.554688 42.976562 L 31.089844 42.976562 L 31.089844 41.753906 L 31.140625 41.738281 L 31.164062 41.726562 L 31.273438 41.695312 C 31.320312 41.671875 31.363281 41.65625 31.398438 41.652344 L 31.558594 41.59375 L 31.617188 41.582031 L 31.742188 41.523438 C 31.84375 41.5 31.929688 41.46875 31.996094 41.4375 Z M 31.996094 41.4375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 35.292969 42.949219 L 35.574219 42.949219 L 35.574219 43.984375 C 35.101562 43.914062 34.761719 44.089844 34.554688 44.515625 L 34.554688 44.5625 C 34.519531 44.671875 34.503906 44.785156 34.507812 44.890625 L 34.507812 46.9375 L 33.589844 46.9375 L 33.589844 43.019531 L 34.507812 43.019531 L 34.507812 43.394531 C 34.722656 43.136719 34.96875 42.988281 35.242188 42.949219 Z M 35.292969 42.949219 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 37.519531 42.847656 C 38.078125 42.804688 38.542969 42.96875 38.914062 43.335938 L 38.925781 43.367188 C 38.960938 43.414062 38.984375 43.460938 39 43.511719 C 39.042969 43.585938 39.074219 43.652344 39.085938 43.710938 L 39.085938 43.769531 C 39.109375 43.863281 39.125 43.945312 39.125 44.015625 L 39.125 45.425781 C 39.113281 45.660156 39.125 45.859375 39.148438 46.015625 C 39.246094 46.136719 39.363281 46.214844 39.492188 46.246094 L 39.464844 46.289062 L 39.441406 46.359375 L 39.417969 46.417969 L 39.394531 46.503906 L 39.367188 46.546875 L 39.320312 46.691406 L 39.292969 46.734375 L 39.269531 46.820312 L 39.257812 46.847656 L 39.171875 47.066406 C 38.808594 47.066406 38.535156 46.933594 38.351562 46.664062 C 38.003906 47.070312 37.570312 47.171875 37.054688 46.964844 C 36.578125 46.8125 36.300781 46.46875 36.222656 45.941406 C 36.226562 45.167969 36.535156 44.714844 37.152344 44.589844 C 37.183594 44.566406 37.21875 44.550781 37.25 44.546875 L 37.285156 44.546875 C 37.300781 44.535156 37.3125 44.53125 37.324219 44.53125 L 37.359375 44.515625 L 37.582031 44.472656 L 37.679688 44.460938 L 37.714844 44.445312 L 37.921875 44.429688 C 38.035156 44.410156 38.125 44.40625 38.191406 44.417969 C 38.222656 43.882812 37.972656 43.699219 37.445312 43.871094 L 37.410156 43.882812 L 37.3125 43.898438 L 37.226562 43.941406 L 37.1875 43.957031 L 37.066406 44 C 37.003906 44.050781 36.945312 44.082031 36.894531 44.101562 C 36.824219 44.164062 36.757812 44.207031 36.6875 44.230469 L 36.601562 44.042969 L 36.578125 44.027344 L 36.566406 43.984375 L 36.539062 43.957031 L 36.527344 43.914062 C 36.476562 43.839844 36.4375 43.773438 36.417969 43.710938 C 36.386719 43.675781 36.363281 43.636719 36.355469 43.597656 C 36.304688 43.535156 36.269531 43.472656 36.257812 43.410156 L 36.28125 43.394531 L 36.320312 43.367188 L 36.34375 43.351562 C 36.398438 43.308594 36.449219 43.273438 36.492188 43.25 C 36.523438 43.222656 36.554688 43.210938 36.589844 43.207031 L 36.613281 43.179688 C 36.6875 43.136719 36.753906 43.109375 36.808594 43.09375 L 36.832031 43.0625 L 36.871094 43.0625 C 36.910156 43.035156 36.941406 43.015625 36.96875 43.007812 L 37.003906 43.007812 C 37.058594 42.972656 37.113281 42.953125 37.164062 42.949219 C 37.277344 42.894531 37.382812 42.863281 37.484375 42.863281 Z M 38.105469 45.222656 L 38.070312 45.222656 C 38.019531 45.238281 37.980469 45.25 37.949219 45.25 L 37.910156 45.25 C 37.898438 45.261719 37.886719 45.265625 37.875 45.265625 L 37.824219 45.28125 L 37.789062 45.28125 L 37.738281 45.292969 L 37.667969 45.308594 C 37.652344 45.320312 37.640625 45.324219 37.628906 45.324219 L 37.582031 45.339844 L 37.542969 45.351562 C 37.429688 45.386719 37.339844 45.417969 37.273438 45.453125 C 37.1875 45.585938 37.164062 45.726562 37.199219 45.871094 C 37.40625 46.207031 37.699219 46.265625 38.082031 46.042969 L 38.179688 45.871094 L 38.191406 45.8125 L 38.191406 45.207031 L 38.15625 45.207031 Z M 38.105469 45.222656 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 41.585938 41.4375 C 42.4375 41.316406 43.023438 41.613281 43.335938 42.328125 C 43.582031 43.011719 43.460938 43.554688 42.980469 43.957031 C 43.570312 44.304688 43.78125 44.882812 43.617188 45.699219 C 43.410156 46.554688 42.882812 46.972656 42.039062 46.949219 L 42.039062 45.871094 C 42.429688 45.796875 42.617188 45.53125 42.601562 45.078125 C 42.503906 44.738281 42.316406 44.550781 42.039062 44.515625 L 42.039062 43.652344 C 42.339844 43.554688 42.484375 43.328125 42.464844 42.976562 C 42.367188 42.667969 42.1875 42.515625 41.925781 42.515625 C 41.660156 42.519531 41.476562 42.652344 41.375 42.917969 L 41.363281 42.976562 L 41.375 43.0625 L 41.375 43.105469 C 41.367188 43.238281 41.363281 43.34375 41.363281 43.421875 L 41.363281 46.949219 L 40.359375 46.949219 L 40.359375 43.207031 C 40.359375 43.152344 40.363281 43.105469 40.371094 43.0625 C 40.359375 42.957031 40.359375 42.863281 40.371094 42.777344 L 40.371094 42.734375 L 40.382812 42.6875 L 40.445312 42.414062 C 40.664062 41.910156 40.988281 41.59375 41.414062 41.464844 C 41.480469 41.460938 41.539062 41.453125 41.585938 41.4375 Z M 41.585938 41.4375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 45.441406 42.917969 C 46.4375 42.902344 47.007812 43.472656 47.144531 44.632812 L 47.179688 44.820312 L 47.179688 44.921875 C 47.195312 45.089844 47.199219 45.230469 47.191406 45.339844 L 47.15625 45.324219 L 44.976562 45.324219 C 45.019531 45.742188 45.203125 45.992188 45.527344 46.070312 C 45.929688 46.144531 46.261719 46.023438 46.53125 45.710938 L 46.628906 45.84375 C 46.667969 45.875 46.695312 45.90625 46.714844 45.941406 L 46.738281 45.957031 L 46.75 45.984375 C 46.792969 46.023438 46.824219 46.054688 46.847656 46.085938 L 46.875 46.128906 C 46.886719 46.140625 46.894531 46.148438 46.898438 46.160156 L 46.921875 46.171875 L 46.945312 46.203125 L 46.960938 46.230469 L 46.984375 46.246094 L 46.996094 46.273438 C 47.035156 46.308594 47.070312 46.34375 47.09375 46.375 C 46.707031 46.949219 46.179688 47.167969 45.503906 47.023438 C 44.675781 46.855469 44.207031 46.265625 44.09375 45.25 C 44.019531 43.964844 44.46875 43.1875 45.441406 42.917969 Z M 45.648438 43.8125 C 45.273438 43.882812 45.054688 44.117188 44.988281 44.515625 L 46.324219 44.515625 C 46.230469 44.085938 46.007812 43.851562 45.648438 43.8125 Z M 45.648438 43.8125 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_26a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_26a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_26a.svg	(revision 36424)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="38px" height="50px" viewBox="0 0 38 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 1.777344 0 C 0.796875 0 0 0.792969 0 1.773438 L 0 48.226562 C 0 49.207031 0.796875 50 1.777344 50 L 36.222656 50 C 37.203125 50 38 49.207031 38 48.226562 L 38 1.773438 C 38 0.792969 37.203125 0 36.222656 0 Z M 1.777344 0 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(23.529412%,38.82353%,72.156864%);fill-opacity:1;" d="M 2.964844 1.1875 C 1.984375 1.1875 1.1875 1.980469 1.1875 2.960938 L 1.1875 47.039062 C 1.1875 48.019531 1.984375 48.8125 2.964844 48.8125 L 35.035156 48.8125 C 36.015625 48.8125 36.8125 48.019531 36.8125 47.039062 L 36.8125 2.960938 C 36.8125 1.980469 36.015625 1.1875 35.035156 1.1875 Z M 2.964844 1.1875 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 7.472656 44.265625 C 7.363281 44.238281 7.257812 44.195312 7.148438 44.148438 L 6.957031 44.503906 C 7.09375 44.574219 7.230469 44.625 7.375 44.660156 C 7.519531 44.699219 7.683594 44.714844 7.867188 44.714844 C 8.046875 44.714844 8.203125 44.691406 8.339844 44.644531 C 8.476562 44.597656 8.585938 44.535156 8.675781 44.457031 C 8.765625 44.375 8.832031 44.28125 8.875 44.167969 C 8.921875 44.058594 8.941406 43.9375 8.941406 43.808594 C 8.941406 43.660156 8.917969 43.53125 8.867188 43.425781 C 8.816406 43.320312 8.753906 43.230469 8.675781 43.15625 C 8.597656 43.085938 8.511719 43.023438 8.414062 42.976562 C 8.316406 42.929688 8.21875 42.886719 8.125 42.847656 C 8.054688 42.816406 7.984375 42.785156 7.914062 42.753906 C 7.847656 42.71875 7.785156 42.683594 7.730469 42.640625 C 7.679688 42.601562 7.632812 42.554688 7.601562 42.5 C 7.570312 42.449219 7.554688 42.386719 7.554688 42.316406 C 7.554688 42.183594 7.601562 42.082031 7.695312 42.007812 C 7.789062 41.9375 7.898438 41.902344 8.027344 41.902344 C 8.160156 41.902344 8.277344 41.917969 8.386719 41.949219 C 8.496094 41.980469 8.605469 42.019531 8.714844 42.066406 L 8.894531 41.71875 C 8.859375 41.699219 8.8125 41.679688 8.753906 41.65625 C 8.695312 41.632812 8.628906 41.613281 8.554688 41.59375 C 8.484375 41.574219 8.402344 41.558594 8.320312 41.542969 C 8.234375 41.527344 8.144531 41.519531 8.054688 41.519531 C 7.941406 41.519531 7.820312 41.535156 7.695312 41.5625 C 7.574219 41.589844 7.457031 41.636719 7.355469 41.699219 C 7.253906 41.765625 7.167969 41.847656 7.101562 41.953125 C 7.035156 42.054688 7.003906 42.183594 7.003906 42.335938 C 7.003906 42.46875 7.023438 42.582031 7.070312 42.671875 C 7.113281 42.761719 7.171875 42.839844 7.242188 42.902344 C 7.3125 42.96875 7.390625 43.023438 7.480469 43.0625 C 7.570312 43.105469 7.65625 43.144531 7.75 43.183594 C 7.828125 43.21875 7.90625 43.253906 7.980469 43.289062 C 8.054688 43.324219 8.121094 43.367188 8.179688 43.410156 C 8.238281 43.457031 8.285156 43.515625 8.320312 43.578125 C 8.355469 43.640625 8.375 43.71875 8.375 43.808594 C 8.375 43.992188 8.324219 44.121094 8.222656 44.199219 C 8.117188 44.273438 7.992188 44.3125 7.839844 44.3125 C 7.703125 44.3125 7.582031 44.296875 7.472656 44.265625 M 10.289062 44.324219 C 10.238281 44.308594 10.191406 44.273438 10.148438 44.21875 C 10.109375 44.160156 10.074219 44.082031 10.050781 43.972656 C 10.023438 43.867188 10.011719 43.722656 10.011719 43.542969 C 10.011719 43.363281 10.023438 43.21875 10.042969 43.109375 C 10.066406 43 10.09375 42.914062 10.132812 42.859375 C 10.171875 42.800781 10.21875 42.765625 10.269531 42.746094 C 10.324219 42.730469 10.382812 42.71875 10.449219 42.71875 C 10.519531 42.71875 10.589844 42.726562 10.652344 42.738281 C 10.714844 42.75 10.796875 42.777344 10.898438 42.816406 L 11.058594 42.484375 C 10.976562 42.449219 10.882812 42.417969 10.769531 42.390625 C 10.660156 42.367188 10.542969 42.351562 10.417969 42.351562 C 10.097656 42.351562 9.855469 42.445312 9.699219 42.636719 C 9.542969 42.824219 9.464844 43.125 9.464844 43.542969 C 9.464844 43.789062 9.488281 43.988281 9.539062 44.140625 C 9.585938 44.292969 9.652344 44.414062 9.738281 44.496094 C 9.824219 44.582031 9.921875 44.640625 10.039062 44.667969 C 10.152344 44.699219 10.277344 44.714844 10.410156 44.714844 C 10.539062 44.714844 10.65625 44.703125 10.761719 44.675781 C 10.871094 44.648438 10.96875 44.617188 11.058594 44.582031 L 10.898438 44.257812 C 10.796875 44.292969 10.714844 44.316406 10.652344 44.328125 C 10.589844 44.34375 10.519531 44.347656 10.445312 44.347656 C 10.390625 44.347656 10.335938 44.339844 10.289062 44.324219 M 12.144531 44.671875 L 12.144531 43.199219 C 12.144531 43.105469 12.15625 43.023438 12.1875 42.960938 C 12.214844 42.898438 12.25 42.84375 12.296875 42.804688 C 12.339844 42.765625 12.386719 42.738281 12.445312 42.722656 C 12.5 42.707031 12.554688 42.699219 12.609375 42.699219 C 12.703125 42.699219 12.777344 42.726562 12.832031 42.78125 C 12.890625 42.832031 12.917969 42.9375 12.917969 43.09375 L 12.917969 44.671875 L 13.445312 44.671875 L 13.445312 43.113281 C 13.445312 42.84375 13.382812 42.648438 13.261719 42.53125 C 13.136719 42.410156 12.957031 42.351562 12.722656 42.351562 C 12.484375 42.351562 12.292969 42.441406 12.144531 42.621094 L 12.144531 41.609375 L 11.613281 41.609375 L 11.613281 44.671875 Z M 14.171875 42.398438 L 14.171875 43.953125 C 14.171875 44.207031 14.226562 44.398438 14.339844 44.527344 C 14.453125 44.652344 14.640625 44.714844 14.902344 44.714844 C 15.027344 44.714844 15.140625 44.691406 15.246094 44.640625 C 15.351562 44.589844 15.4375 44.511719 15.507812 44.414062 L 15.597656 44.671875 L 15.964844 44.671875 L 15.964844 42.398438 L 15.4375 42.398438 L 15.4375 43.882812 C 15.4375 44.058594 15.394531 44.183594 15.3125 44.257812 C 15.226562 44.332031 15.125 44.371094 15.003906 44.371094 C 14.898438 44.371094 14.820312 44.339844 14.773438 44.277344 C 14.726562 44.214844 14.699219 44.097656 14.699219 43.933594 L 14.699219 42.398438 Z M 17.515625 44.300781 C 17.46875 44.3125 17.417969 44.316406 17.363281 44.316406 C 17.316406 44.316406 17.28125 44.304688 17.261719 44.28125 C 17.238281 44.257812 17.230469 44.210938 17.230469 44.144531 L 17.230469 41.609375 L 16.699219 41.609375 L 16.699219 44.175781 C 16.699219 44.363281 16.75 44.496094 16.851562 44.574219 C 16.957031 44.65625 17.078125 44.695312 17.222656 44.695312 C 17.289062 44.695312 17.351562 44.6875 17.417969 44.679688 C 17.484375 44.667969 17.550781 44.65625 17.617188 44.636719 Z M 19.171875 44.675781 C 19.28125 44.648438 19.378906 44.609375 19.464844 44.550781 C 19.546875 44.496094 19.617188 44.421875 19.667969 44.332031 C 19.722656 44.242188 19.746094 44.136719 19.746094 44.011719 C 19.746094 43.902344 19.726562 43.8125 19.683594 43.738281 C 19.644531 43.664062 19.589844 43.597656 19.523438 43.542969 C 19.457031 43.488281 19.382812 43.441406 19.300781 43.402344 C 19.21875 43.367188 19.140625 43.332031 19.066406 43.296875 C 18.949219 43.25 18.851562 43.203125 18.769531 43.15625 C 18.683594 43.109375 18.644531 43.046875 18.644531 42.96875 C 18.644531 42.894531 18.675781 42.832031 18.734375 42.785156 C 18.796875 42.738281 18.875 42.714844 18.96875 42.714844 C 19.058594 42.714844 19.148438 42.726562 19.238281 42.75 C 19.328125 42.769531 19.429688 42.808594 19.546875 42.859375 L 19.726562 42.53125 C 19.660156 42.496094 19.566406 42.453125 19.4375 42.414062 C 19.3125 42.375 19.152344 42.351562 18.957031 42.351562 C 18.867188 42.351562 18.773438 42.363281 18.671875 42.382812 C 18.574219 42.402344 18.484375 42.4375 18.402344 42.484375 C 18.316406 42.535156 18.25 42.597656 18.195312 42.679688 C 18.140625 42.757812 18.113281 42.859375 18.113281 42.984375 C 18.113281 43.082031 18.132812 43.167969 18.171875 43.238281 C 18.207031 43.308594 18.257812 43.367188 18.316406 43.417969 C 18.375 43.46875 18.441406 43.511719 18.515625 43.546875 C 18.585938 43.578125 18.660156 43.609375 18.730469 43.640625 C 18.792969 43.664062 18.851562 43.691406 18.90625 43.714844 C 18.960938 43.742188 19.011719 43.769531 19.054688 43.800781 C 19.097656 43.828125 19.132812 43.863281 19.15625 43.902344 C 19.183594 43.945312 19.195312 43.992188 19.195312 44.046875 C 19.195312 44.148438 19.160156 44.222656 19.089844 44.273438 C 19.019531 44.320312 18.925781 44.34375 18.804688 44.34375 C 18.722656 44.34375 18.636719 44.335938 18.542969 44.320312 C 18.453125 44.304688 18.347656 44.269531 18.234375 44.222656 L 18.058594 44.550781 C 18.132812 44.585938 18.234375 44.625 18.367188 44.660156 C 18.496094 44.699219 18.65625 44.714844 18.839844 44.714844 C 18.949219 44.714844 19.0625 44.703125 19.171875 44.675781 M 20.601562 44.101562 C 20.601562 44.28125 20.652344 44.429688 20.757812 44.542969 C 20.863281 44.660156 21.03125 44.714844 21.261719 44.714844 C 21.355469 44.714844 21.445312 44.707031 21.535156 44.691406 C 21.621094 44.671875 21.710938 44.648438 21.800781 44.617188 L 21.667969 44.300781 C 21.605469 44.320312 21.550781 44.335938 21.507812 44.34375 C 21.460938 44.347656 21.414062 44.351562 21.367188 44.351562 C 21.28125 44.351562 21.222656 44.328125 21.183594 44.28125 C 21.148438 44.234375 21.132812 44.171875 21.132812 44.085938 L 21.132812 42.746094 L 21.714844 42.746094 L 21.714844 42.398438 L 21.132812 42.398438 L 21.132812 41.914062 L 20.601562 41.914062 L 20.601562 42.398438 L 20.261719 42.398438 L 20.210938 42.746094 L 20.601562 42.746094 Z M 23.386719 42.773438 C 23.4375 42.78125 23.496094 42.796875 23.558594 42.820312 L 23.671875 42.40625 C 23.617188 42.390625 23.566406 42.378906 23.519531 42.367188 C 23.472656 42.359375 23.414062 42.351562 23.34375 42.351562 C 23.1875 42.351562 23.066406 42.390625 22.976562 42.46875 C 22.890625 42.546875 22.820312 42.640625 22.769531 42.75 L 22.683594 42.398438 L 22.316406 42.398438 L 22.316406 44.671875 L 22.84375 44.671875 L 22.84375 43.386719 C 22.84375 43.203125 22.875 43.054688 22.9375 42.9375 C 23 42.824219 23.101562 42.765625 23.25 42.765625 C 23.289062 42.765625 23.335938 42.769531 23.386719 42.773438 M 25.132812 42.734375 C 25.1875 42.742188 25.230469 42.757812 25.269531 42.785156 C 25.304688 42.8125 25.332031 42.851562 25.347656 42.902344 C 25.367188 42.953125 25.375 43.019531 25.375 43.105469 L 25.375 43.277344 L 25.089844 43.277344 C 24.738281 43.277344 24.484375 43.332031 24.320312 43.445312 C 24.15625 43.558594 24.074219 43.742188 24.074219 44 C 24.074219 44.136719 24.089844 44.25 24.128906 44.339844 C 24.167969 44.429688 24.21875 44.503906 24.289062 44.5625 C 24.355469 44.617188 24.4375 44.65625 24.53125 44.679688 C 24.625 44.703125 24.726562 44.714844 24.835938 44.714844 C 25 44.714844 25.132812 44.6875 25.226562 44.628906 C 25.324219 44.570312 25.394531 44.5 25.445312 44.414062 L 25.539062 44.671875 L 25.898438 44.671875 L 25.898438 43.078125 C 25.898438 42.832031 25.832031 42.648438 25.699219 42.53125 C 25.566406 42.410156 25.332031 42.351562 24.996094 42.351562 C 24.855469 42.351562 24.714844 42.367188 24.566406 42.390625 C 24.421875 42.417969 24.296875 42.449219 24.191406 42.484375 L 24.328125 42.816406 C 24.449219 42.78125 24.5625 42.757812 24.671875 42.742188 C 24.777344 42.726562 24.867188 42.71875 24.941406 42.71875 C 25.015625 42.71875 25.078125 42.726562 25.132812 42.734375 M 25.375 43.929688 C 25.375 43.972656 25.367188 44.019531 25.351562 44.070312 C 25.335938 44.121094 25.308594 44.167969 25.277344 44.210938 C 25.242188 44.253906 25.195312 44.289062 25.136719 44.316406 C 25.082031 44.347656 25.011719 44.363281 24.925781 44.363281 C 24.8125 44.363281 24.730469 44.328125 24.683594 44.265625 C 24.636719 44.199219 24.613281 44.101562 24.613281 43.972656 C 24.613281 43.832031 24.648438 43.730469 24.71875 43.671875 C 24.789062 43.609375 24.90625 43.578125 25.066406 43.578125 L 25.375 43.578125 Z M 28.59375 43.714844 C 28.550781 43.636719 28.5 43.570312 28.441406 43.515625 C 28.382812 43.457031 28.316406 43.40625 28.242188 43.363281 C 28.171875 43.320312 28.105469 43.277344 28.046875 43.238281 C 27.988281 43.199219 27.9375 43.160156 27.894531 43.121094 C 27.851562 43.082031 27.832031 43.035156 27.832031 42.988281 C 27.832031 42.910156 27.859375 42.84375 27.910156 42.796875 C 27.964844 42.75 28.019531 42.699219 28.082031 42.652344 C 28.140625 42.601562 28.199219 42.539062 28.25 42.46875 C 28.304688 42.398438 28.328125 42.296875 28.328125 42.171875 C 28.328125 41.972656 28.261719 41.808594 28.125 41.683594 C 27.988281 41.558594 27.785156 41.496094 27.511719 41.496094 C 27.390625 41.496094 27.277344 41.507812 27.171875 41.539062 C 27.0625 41.566406 26.972656 41.617188 26.890625 41.679688 C 26.8125 41.746094 26.75 41.832031 26.703125 41.933594 C 26.65625 42.035156 26.632812 42.15625 26.632812 42.300781 L 26.632812 44.671875 L 27.160156 44.671875 L 27.160156 42.3125 C 27.160156 42.210938 27.171875 42.128906 27.195312 42.070312 C 27.214844 42.011719 27.246094 41.964844 27.28125 41.933594 C 27.316406 41.90625 27.355469 41.882812 27.398438 41.875 C 27.441406 41.867188 27.484375 41.863281 27.523438 41.863281 C 27.644531 41.863281 27.726562 41.894531 27.777344 41.957031 C 27.828125 42.023438 27.855469 42.101562 27.855469 42.195312 C 27.855469 42.289062 27.828125 42.367188 27.769531 42.425781 C 27.714844 42.484375 27.652344 42.539062 27.589844 42.59375 C 27.523438 42.644531 27.464844 42.703125 27.40625 42.761719 C 27.351562 42.820312 27.324219 42.898438 27.324219 42.992188 C 27.324219 43.085938 27.34375 43.164062 27.382812 43.230469 C 27.421875 43.296875 27.472656 43.355469 27.53125 43.402344 C 27.585938 43.453125 27.648438 43.496094 27.71875 43.539062 C 27.789062 43.578125 27.851562 43.621094 27.910156 43.664062 C 27.964844 43.710938 28.015625 43.757812 28.054688 43.808594 C 28.09375 43.863281 28.113281 43.925781 28.113281 44.003906 C 28.113281 44.121094 28.089844 44.203125 28.039062 44.257812 C 27.992188 44.308594 27.921875 44.335938 27.828125 44.335938 C 27.757812 44.335938 27.699219 44.332031 27.644531 44.320312 C 27.589844 44.308594 27.53125 44.292969 27.46875 44.273438 L 27.324219 44.59375 C 27.394531 44.625 27.480469 44.652344 27.582031 44.671875 C 27.679688 44.691406 27.777344 44.703125 27.871094 44.703125 C 27.980469 44.703125 28.082031 44.691406 28.175781 44.664062 C 28.269531 44.640625 28.355469 44.601562 28.425781 44.542969 C 28.496094 44.484375 28.550781 44.410156 28.59375 44.320312 C 28.632812 44.226562 28.65625 44.117188 28.65625 43.984375 C 28.65625 43.878906 28.632812 43.789062 28.59375 43.714844 M 31.046875 43.679688 L 31.046875 43.429688 C 31.046875 43.257812 31.03125 43.105469 31.003906 42.96875 C 30.972656 42.835938 30.921875 42.722656 30.851562 42.628906 C 30.78125 42.539062 30.6875 42.46875 30.574219 42.421875 C 30.457031 42.375 30.316406 42.351562 30.144531 42.351562 C 29.808594 42.351562 29.566406 42.449219 29.410156 42.644531 C 29.253906 42.839844 29.179688 43.148438 29.179688 43.578125 C 29.179688 43.8125 29.207031 44.007812 29.265625 44.15625 C 29.328125 44.304688 29.40625 44.421875 29.503906 44.503906 C 29.597656 44.585938 29.710938 44.644531 29.835938 44.671875 C 29.964844 44.703125 30.09375 44.714844 30.226562 44.714844 C 30.378906 44.714844 30.523438 44.699219 30.660156 44.664062 C 30.796875 44.628906 30.90625 44.59375 30.988281 44.554688 L 30.832031 44.234375 C 30.625 44.316406 30.4375 44.355469 30.257812 44.355469 C 30.183594 44.355469 30.113281 44.351562 30.046875 44.34375 C 29.984375 44.332031 29.925781 44.304688 29.878906 44.257812 C 29.828125 44.214844 29.789062 44.144531 29.757812 44.054688 C 29.726562 43.964844 29.710938 43.839844 29.707031 43.679688 Z M 30.324219 42.730469 C 30.375 42.75 30.414062 42.785156 30.449219 42.835938 C 30.480469 42.882812 30.503906 42.953125 30.519531 43.042969 C 30.539062 43.132812 30.546875 43.242188 30.550781 43.375 L 29.710938 43.375 C 29.71875 43.226562 29.734375 43.109375 29.757812 43.019531 C 29.78125 42.925781 29.8125 42.859375 29.847656 42.8125 C 29.882812 42.765625 29.925781 42.734375 29.976562 42.71875 C 30.023438 42.707031 30.078125 42.699219 30.132812 42.699219 C 30.210938 42.699219 30.273438 42.707031 30.324219 42.730469 "/>
+<path style="fill:none;stroke-width:0.171;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:5.104;" d="M 0.000831143 0.00727612 C -0.467063 0.12437 -0.918247 0.308374 -1.386142 0.509106 L -2.204957 -1.013111 C -1.620089 -1.314209 -1.035221 -1.531668 -0.416932 -1.682217 C 0.201357 -1.849494 0.903199 -1.916404 1.688593 -1.916404 C 2.457277 -1.916404 3.125698 -1.816038 3.710566 -1.615306 C 4.295434 -1.414575 4.763328 -1.146932 5.14767 -0.812379 C 5.532012 -0.461098 5.816091 -0.0596345 5.999907 0.425468 C 6.200433 0.893842 6.283985 1.412399 6.283985 1.964412 C 6.283985 2.600063 6.183722 3.152075 5.966486 3.603722 C 5.749249 4.055369 5.481881 4.440105 5.14767 4.75793 C 4.81346 5.059028 4.445829 5.326671 4.028066 5.527402 C 3.610303 5.728134 3.19254 5.912139 2.791487 6.079415 C 2.490698 6.213236 2.189909 6.347058 1.88912 6.480879 C 1.605041 6.631428 1.337672 6.781977 1.103725 6.965981 C 0.886489 7.133257 0.685962 7.333989 0.552278 7.568176 C 0.418594 7.785636 0.351752 8.053278 0.351752 8.354376 C 0.351752 8.923116 0.552278 9.358036 0.953331 9.675861 C 1.354383 9.976959 1.822277 10.127508 2.373724 10.127508 C 2.941882 10.127508 3.443198 10.060597 3.911092 9.926776 C 4.378986 9.792955 4.846881 9.625678 5.314775 9.424946 L 6.083459 10.913707 C 5.933064 10.997346 5.732538 11.080984 5.481881 11.18135 C 5.231223 11.281716 4.947144 11.365354 4.629644 11.448992 C 4.328855 11.532631 3.977934 11.599541 3.627013 11.666452 C 3.259382 11.733363 2.87504 11.766818 2.490698 11.766818 C 2.006093 11.766818 1.488067 11.699907 0.953331 11.582814 C 0.435305 11.46572 -0.0660109 11.264988 -0.500484 10.997346 C -0.934958 10.712976 -1.302589 10.361695 -1.586668 9.910048 C -1.870747 9.475129 -2.004431 8.923116 -2.004431 8.270738 C -2.004431 7.701998 -1.920878 7.216896 -1.720352 6.83216 C -1.536536 6.447423 -1.285879 6.11287 -0.985089 5.845228 C -0.6843 5.560858 -0.35009 5.326671 0.0342522 5.159394 C 0.418594 4.97539 0.786225 4.808113 1.187278 4.640837 C 1.521488 4.490288 1.855698 4.339739 2.173198 4.18919 C 2.490698 4.038641 2.774777 3.854637 3.025435 3.670633 C 3.276092 3.469901 3.476619 3.218986 3.627013 2.951343 C 3.777408 2.683701 3.86096 2.349148 3.86096 1.964412 C 3.86096 1.178212 3.643724 0.626199 3.20925 0.291646 C 2.758066 -0.0261792 2.22333 -0.193456 1.57162 -0.193456 C 0.986752 -0.193456 0.468726 -0.126545 0.000831143 0.00727612 Z M 12.049114 -0.243639 C 11.831877 -0.176728 11.631351 -0.0261792 11.447535 0.208008 C 11.28043 0.458923 11.130035 0.793476 11.029772 1.26185 C 10.912798 1.713497 10.862667 2.33242 10.862667 3.101892 C 10.862667 3.871365 10.912798 4.490288 10.996351 4.958662 C 11.096614 5.427036 11.213588 5.795045 11.380693 6.029232 C 11.547798 6.280147 11.748324 6.430696 11.965561 6.514334 C 12.199508 6.581245 12.450166 6.631428 12.734245 6.631428 C 13.035034 6.631428 13.335823 6.597972 13.603192 6.547789 C 13.87056 6.497606 14.221481 6.380513 14.655954 6.213236 L 15.341085 7.635087 C 14.990164 7.785636 14.589112 7.919457 14.104507 8.036551 C 13.636613 8.136917 13.135297 8.203827 12.600561 8.203827 C 11.230298 8.203827 10.194246 7.802364 9.525826 6.982708 C 8.857405 6.179781 8.523195 4.891752 8.523195 3.101892 C 8.523195 2.04805 8.623458 1.19494 8.840694 0.542561 C 9.041221 -0.109817 9.325299 -0.628375 9.692931 -0.979656 C 10.060562 -1.347664 10.478325 -1.598579 10.97964 -1.715672 C 11.464245 -1.849494 11.998982 -1.916404 12.56714 -1.916404 C 13.118587 -1.916404 13.619902 -1.866221 14.071086 -1.749128 C 14.53898 -1.632034 14.956743 -1.498213 15.341085 -1.347664 L 14.655954 0.0407314 C 14.221481 -0.109817 13.87056 -0.210183 13.603192 -0.260366 C 13.335823 -0.327277 13.035034 -0.344005 12.717534 -0.344005 C 12.483587 -0.344005 12.24964 -0.310549 12.049114 -0.243639 Z M 19.986609 -1.7324 L 19.986609 4.573926 C 19.986609 4.97539 20.03674 5.326671 20.170425 5.594313 C 20.287398 5.861956 20.437793 6.096143 20.638319 6.263419 C 20.822135 6.430696 21.022661 6.547789 21.273319 6.6147 C 21.507266 6.681611 21.741213 6.715066 21.97516 6.715066 C 22.376213 6.715066 22.693713 6.597972 22.92766 6.363785 C 23.178318 6.146326 23.295291 5.694679 23.295291 5.025573 L 23.295291 -1.7324 L 25.551211 -1.7324 L 25.551211 4.941934 C 25.551211 6.096143 25.283843 6.932525 24.765817 7.434355 C 24.23108 7.952912 23.462396 8.203827 22.459765 8.203827 C 21.440424 8.203827 20.621608 7.819091 19.986609 7.049619 L 19.986609 11.382082 L 17.713979 11.382082 L 17.713979 -1.7324 Z M 28.659367 8.003095 L 28.659367 1.345489 C 28.659367 0.258191 28.893314 -0.561464 29.377919 -1.113477 C 29.862524 -1.648762 30.664629 -1.916404 31.784233 -1.916404 C 32.31897 -1.916404 32.803575 -1.816038 33.254759 -1.598579 C 33.705943 -1.381119 34.073574 -1.046566 34.374364 -0.628375 L 34.758705 -1.7324 L 36.329494 -1.7324 L 36.329494 8.003095 L 34.073574 8.003095 L 34.073574 1.646586 C 34.073574 0.893842 33.889759 0.358557 33.538838 0.0407314 C 33.171206 -0.277094 32.736733 -0.444371 32.218707 -0.444371 C 31.767523 -0.444371 31.433313 -0.310549 31.232786 -0.0429068 C 31.03226 0.224736 30.915287 0.726565 30.915287 1.429127 L 30.915287 8.003095 Z M 42.963569 -0.143273 C 42.763043 -0.193456 42.545806 -0.210183 42.311859 -0.210183 C 42.111333 -0.210183 41.960938 -0.16 41.877385 -0.0596345 C 41.777122 0.0407314 41.743701 0.241463 41.743701 0.525833 L 41.743701 11.382082 L 39.471071 11.382082 L 39.471071 0.392012 C 39.471071 -0.410915 39.688308 -0.979656 40.122781 -1.314209 C 40.573965 -1.665489 41.091991 -1.832766 41.71028 -1.832766 C 41.994359 -1.832766 42.261727 -1.799311 42.545806 -1.765855 C 42.829885 -1.715672 43.113964 -1.665489 43.398042 -1.581851 Z M 50.048828 -1.749128 C 50.516722 -1.632034 50.934485 -1.464758 51.302117 -1.213843 C 51.653038 -0.979656 51.953827 -0.66183 52.171064 -0.277094 C 52.405011 0.107642 52.505274 0.559289 52.505274 1.094574 C 52.505274 1.562948 52.421721 1.947684 52.237906 2.26551 C 52.070801 2.583335 51.836853 2.867705 51.552774 3.101892 C 51.268696 3.33608 50.951196 3.536811 50.600275 3.704088 C 50.249354 3.854637 49.915144 4.005186 49.597644 4.155735 C 49.096329 4.356467 48.678566 4.557198 48.327645 4.75793 C 47.960013 4.958662 47.792908 5.226305 47.792908 5.560858 C 47.792908 5.878683 47.926592 6.146326 48.17725 6.347058 C 48.444618 6.547789 48.778829 6.648155 49.179881 6.648155 C 49.564223 6.648155 49.948565 6.597972 50.332907 6.497606 C 50.717249 6.413968 51.151722 6.246692 51.653038 6.029232 L 52.421721 7.434355 C 52.137643 7.584904 51.73659 7.768908 51.185143 7.936185 C 50.650407 8.103461 49.965275 8.203827 49.12975 8.203827 C 48.745408 8.203827 48.344355 8.153644 47.909882 8.070006 C 47.492119 7.986368 47.107777 7.835819 46.756856 7.635087 C 46.389225 7.417627 46.105146 7.149985 45.871199 6.798704 C 45.637252 6.464151 45.520278 6.029232 45.520278 5.493947 C 45.520278 5.075756 45.603831 4.707747 45.770936 4.40665 C 45.92133 4.105552 46.138567 3.854637 46.389225 3.637177 C 46.639883 3.419718 46.923961 3.235714 47.241461 3.085165 C 47.542251 2.951343 47.85975 2.817522 48.16054 2.683701 C 48.427908 2.583335 48.678566 2.466241 48.912513 2.365876 C 49.14646 2.248782 49.363697 2.131688 49.547513 1.997867 C 49.731328 1.880774 49.881723 1.730225 49.981986 1.562948 C 50.09896 1.378944 50.149091 1.178212 50.149091 0.944025 C 50.149091 0.509106 49.998696 0.19128 49.697907 -0.0261792 C 49.397118 -0.226911 48.996065 -0.327277 48.478039 -0.327277 C 48.127119 -0.327277 47.759487 -0.293822 47.358435 -0.226911 C 46.974093 -0.16 46.522909 -0.00945154 46.038304 0.19128 L 45.286331 -1.213843 C 45.603831 -1.364392 46.038304 -1.531668 46.606462 -1.682217 C 47.157909 -1.849494 47.84304 -1.916404 48.628434 -1.916404 C 49.096329 -1.916404 49.580934 -1.866221 50.048828 -1.749128 Z M 56.164877 0.709838 C 56.164877 -0.0596345 56.382114 -0.695285 56.833298 -1.180387 C 57.284482 -1.682217 58.003034 -1.916404 58.988954 -1.916404 C 59.390007 -1.916404 59.774349 -1.882949 60.15869 -1.816038 C 60.526322 -1.7324 60.910664 -1.632034 61.295006 -1.498213 L 60.726848 -0.143273 C 60.45948 -0.226911 60.225533 -0.293822 60.041717 -0.327277 C 59.841191 -0.344005 59.640664 -0.360732 59.440138 -0.360732 C 59.072507 -0.360732 58.821849 -0.260366 58.654744 -0.0596345 C 58.504349 0.141097 58.437507 0.40874 58.437507 0.776748 L 58.437507 6.514334 L 60.927374 6.514334 L 60.927374 8.003095 L 58.437507 8.003095 L 58.437507 10.077325 L 56.164877 10.077325 L 56.164877 8.003095 L 54.711062 8.003095 L 54.493825 6.514334 L 56.164877 6.514334 Z M 68.079475 6.397241 C 68.296712 6.363785 68.54737 6.296875 68.814738 6.196509 L 69.299343 7.96964 C 69.065396 8.036551 68.848159 8.086734 68.647633 8.136917 C 68.447107 8.170372 68.196449 8.203827 67.89566 8.203827 C 67.227239 8.203827 66.709213 8.036551 66.324871 7.701998 C 65.95724 7.367445 65.65645 6.965981 65.439214 6.497606 L 65.071582 8.003095 L 63.500794 8.003095 L 63.500794 -1.7324 L 65.756713 -1.7324 L 65.756713 3.770999 C 65.756713 4.557198 65.890398 5.192849 66.157766 5.694679 C 66.425134 6.179781 66.859608 6.430696 67.494607 6.430696 C 67.661712 6.430696 67.862239 6.413968 68.079475 6.397241 Z M 75.549076 6.564517 C 75.783023 6.531062 75.966839 6.464151 76.133944 6.347058 C 76.284339 6.229964 76.401312 6.062687 76.468155 5.845228 C 76.551707 5.627768 76.585128 5.343398 76.585128 4.97539 L 76.585128 4.239373 L 75.36526 4.239373 C 73.861314 4.239373 72.77513 4.005186 72.073289 3.520084 C 71.371447 3.034982 71.020526 2.248782 71.020526 1.144757 C 71.020526 0.559289 71.087368 0.0741867 71.254473 -0.310549 C 71.421579 -0.695285 71.638815 -1.013111 71.939605 -1.264026 C 72.223683 -1.498213 72.574604 -1.665489 72.975657 -1.765855 C 73.376709 -1.866221 73.811182 -1.916404 74.279077 -1.916404 C 74.980919 -1.916404 75.549076 -1.799311 75.950129 -1.548396 C 76.367891 -1.297481 76.668681 -0.996383 76.885917 -0.628375 L 77.28697 -1.7324 L 78.824337 -1.7324 L 78.824337 5.092483 C 78.824337 6.146326 78.540259 6.932525 77.972101 7.434355 C 77.403943 7.952912 76.401312 8.203827 74.964208 8.203827 C 74.362629 8.203827 73.761051 8.136917 73.126051 8.036551 C 72.507762 7.919457 71.973026 7.785636 71.521842 7.635087 L 72.10671 6.213236 C 72.624736 6.363785 73.109341 6.464151 73.577235 6.531062 C 74.028419 6.597972 74.412761 6.631428 74.730261 6.631428 C 75.047761 6.631428 75.315129 6.597972 75.549076 6.564517 Z M 76.585128 1.445854 C 76.585128 1.26185 76.551707 1.061118 76.484865 0.843659 C 76.418023 0.626199 76.301049 0.425468 76.167365 0.241463 C 76.016971 0.0574591 75.816444 -0.0930898 75.565787 -0.210183 C 75.331839 -0.344005 75.03105 -0.410915 74.663419 -0.410915 C 74.178814 -0.410915 73.827893 -0.260366 73.627367 0.00727612 C 73.426841 0.291646 73.326577 0.709838 73.326577 1.26185 C 73.326577 1.864046 73.476972 2.298965 73.777761 2.54988 C 74.078551 2.817522 74.579866 2.951343 75.264997 2.951343 L 76.585128 2.951343 Z M 90.354594 2.365876 C 90.170778 2.700429 89.953541 2.984799 89.702884 3.218986 C 89.452226 3.469901 89.168147 3.68736 88.850647 3.871365 C 88.549858 4.055369 88.265779 4.239373 88.015121 4.40665 C 87.764464 4.573926 87.547227 4.741203 87.363411 4.908479 C 87.179596 5.075756 87.096043 5.276488 87.096043 5.477219 C 87.096043 5.811773 87.213017 6.096143 87.430253 6.296875 C 87.664201 6.497606 87.898148 6.715066 88.165516 6.915798 C 88.416174 7.133257 88.666832 7.4009 88.884068 7.701998 C 89.118016 8.003095 89.218279 8.438014 89.218279 8.973299 C 89.218279 9.82641 88.9342 10.528971 88.349332 11.064256 C 87.764464 11.599541 86.895517 11.867184 85.725781 11.867184 C 85.207755 11.867184 84.72315 11.817001 84.271966 11.68318 C 83.804071 11.566086 83.419729 11.348627 83.068809 11.080984 C 82.734598 10.796614 82.46723 10.428605 82.266704 9.993686 C 82.066178 9.558767 81.965914 9.04021 81.965914 8.421287 L 81.965914 -1.7324 L 84.221834 -1.7324 L 84.221834 8.371104 C 84.221834 8.806023 84.271966 9.157304 84.372229 9.408218 C 84.455781 9.659133 84.589466 9.859865 84.73986 9.993686 C 84.890255 10.11078 85.05736 10.211146 85.241176 10.244601 C 85.424991 10.278057 85.608807 10.294784 85.775912 10.294784 C 86.293938 10.294784 86.644859 10.160963 86.862096 9.893321 C 87.079333 9.60895 87.196306 9.274397 87.196306 8.872934 C 87.196306 8.47147 87.079333 8.136917 86.828675 7.886002 C 86.594728 7.635087 86.327359 7.4009 86.059991 7.166713 C 85.775912 6.949253 85.525254 6.698338 85.274597 6.447423 C 85.04065 6.196509 84.923676 5.861956 84.923676 5.460492 C 84.923676 5.059028 85.007228 4.724475 85.174334 4.440105 C 85.341439 4.155735 85.558676 3.90482 85.809333 3.704088 C 86.043281 3.486628 86.310649 3.302624 86.611438 3.11862 C 86.912227 2.951343 87.179596 2.767339 87.430253 2.583335 C 87.664201 2.382603 87.881437 2.181871 88.048542 1.964412 C 88.215648 1.730225 88.2992 1.462582 88.2992 1.128029 C 88.2992 0.626199 88.198937 0.274919 87.9817 0.0407314 C 87.781174 -0.176728 87.480385 -0.293822 87.079333 -0.293822 C 86.778543 -0.293822 86.527885 -0.277094 86.293938 -0.226911 C 86.059991 -0.176728 85.809333 -0.109817 85.541965 -0.0261792 L 84.923676 -1.397847 C 85.224465 -1.531668 85.592097 -1.648762 86.02657 -1.7324 C 86.444333 -1.816038 86.862096 -1.866221 87.263148 -1.866221 C 87.731043 -1.866221 88.165516 -1.816038 88.566568 -1.698945 C 88.967621 -1.598579 89.335252 -1.431302 89.636042 -1.180387 C 89.936831 -0.929473 90.170778 -0.611647 90.354594 -0.226911 C 90.521699 0.174553 90.621962 0.642927 90.621962 1.211667 C 90.621962 1.663314 90.521699 2.04805 90.354594 2.365876 Z M 100.848798 2.516424 L 100.848798 3.586994 C 100.848798 4.323011 100.781956 4.97539 100.664982 5.560858 C 100.531298 6.129598 100.314062 6.6147 100.013272 7.016164 C 99.712483 7.4009 99.311431 7.701998 98.826826 7.90273 C 98.32551 8.103461 97.723932 8.203827 96.988669 8.203827 C 95.551564 8.203827 94.515512 7.785636 93.847092 6.949253 C 93.178671 6.11287 92.861171 4.791386 92.861171 2.951343 C 92.861171 1.947684 92.978145 1.111301 93.228803 0.47565 C 93.496171 -0.16 93.830381 -0.66183 94.248144 -1.013111 C 94.649196 -1.364392 95.133801 -1.615306 95.668538 -1.7324 C 96.219985 -1.866221 96.771432 -1.916404 97.33959 -1.916404 C 97.9913 -1.916404 98.609589 -1.849494 99.194457 -1.698945 C 99.779325 -1.548396 100.24722 -1.397847 100.59814 -1.23057 L 99.92972 0.141097 C 99.044062 -0.210183 98.241958 -0.37746 97.473274 -0.37746 C 97.155774 -0.37746 96.854985 -0.360732 96.570906 -0.327277 C 96.303538 -0.277094 96.05288 -0.16 95.852354 0.0407314 C 95.635117 0.224736 95.468012 0.525833 95.334328 0.91057 C 95.200644 1.295306 95.133801 1.830591 95.117091 2.516424 Z M 97.757353 6.581245 C 97.974589 6.497606 98.141694 6.347058 98.292089 6.129598 C 98.425773 5.928866 98.526036 5.627768 98.592878 5.243032 C 98.676431 4.858296 98.709852 4.389922 98.726563 3.821182 L 95.133801 3.821182 C 95.167223 4.456832 95.234065 4.958662 95.334328 5.343398 C 95.434591 5.744862 95.568275 6.029232 95.71867 6.229964 C 95.869064 6.430696 96.05288 6.564517 96.270117 6.631428 C 96.470643 6.681611 96.70459 6.715066 96.938537 6.715066 C 97.272748 6.715066 97.540116 6.681611 97.757353 6.581245 Z M 97.757353 6.581245 " transform="matrix(0.23376,0,0,-0.23352,7.472462,44.267324)"/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 6.828125 37.160156 L 31.171875 37.160156 L 31.171875 12.839844 L 6.828125 12.839844 Z M 6.828125 37.160156 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(13.725491%,12.156863%,12.54902%);fill-opacity:1;" d="M 27.953125 33.992188 L 24.273438 33.992188 C 24.546875 33.925781 24.835938 33.804688 25.125 33.648438 C 25.125 33.648438 25.269531 33.503906 25.550781 33.453125 C 25.832031 33.40625 26.074219 33.1875 26.097656 33.003906 C 26.121094 32.824219 25.867188 32.410156 25.707031 32.238281 C 25.550781 32.070312 24.527344 31.238281 24.371094 30.851562 C 24.210938 30.46875 22.945312 28.617188 23.042969 27.558594 C 23.140625 26.503906 23.386719 26.125 23.386719 26.125 C 23.386719 26.125 24.523438 26.257812 24.910156 25.675781 C 24.984375 25.566406 25.027344 25.339844 25.050781 25.050781 L 25.121094 25.050781 C 25.21875 25.050781 25.4375 24.972656 25.4375 24.875 L 25.433594 24.863281 L 25.445312 24.867188 C 25.445312 24.867188 25.496094 24.847656 25.480469 24.421875 C 25.460938 23.996094 25.339844 23.464844 25.339844 23.464844 L 25.332031 23.460938 C 25.328125 23.367188 25.199219 23.292969 25.105469 23.292969 L 25.007812 23.292969 C 24.929688 22.265625 24.789062 21.292969 24.742188 21.21875 C 24.644531 21.074219 24.390625 20.609375 24.066406 20.636719 C 24.070312 20.601562 24.078125 20.566406 24.082031 20.527344 C 24.148438 19.910156 23.824219 19.761719 23.664062 19.949219 C 23.503906 20.128906 23.5 20.441406 23.5 20.453125 C 23.425781 20.5 23.335938 20.5625 23.335938 20.5625 C 23.335938 20.5625 23.195312 20.277344 22.875 20.035156 C 22.714844 19.914062 22.550781 19.882812 22.34375 19.792969 C 22.191406 19.726562 22.21875 19.492188 22.21875 19.492188 C 22.21875 19.492188 23.066406 18.800781 22.824219 17.746094 C 22.824219 17.746094 23.246094 17.371094 23.246094 18.3125 C 23.246094 18.523438 23.183594 18.835938 23.246094 19.140625 C 23.34375 19.597656 24.210938 19.578125 24.210938 19.578125 C 24.210938 19.578125 23.933594 19.445312 23.878906 18.714844 C 23.808594 17.714844 23.53125 17.046875 22.726562 17.464844 L 22.554688 17.253906 C 22.554688 17.253906 21.839844 16.851562 21.257812 16.878906 C 20.671875 16.902344 20.113281 17.078125 20.101562 18.253906 C 20.101562 18.253906 20.199219 18.507812 19.96875 18.664062 C 19.796875 18.777344 19.882812 18.898438 19.980469 18.941406 C 20.046875 18.96875 19.9375 19.113281 19.9375 19.113281 C 19.9375 19.113281 19.929688 19.203125 19.996094 19.226562 L 20.042969 19.242188 C 19.992188 19.253906 19.949219 19.335938 20.011719 19.402344 C 20.070312 19.460938 20.046875 19.515625 20.046875 19.601562 C 20.046875 19.683594 20.179688 19.859375 20.554688 19.816406 C 20.910156 19.773438 21.164062 19.757812 21.019531 19.992188 C 21.003906 20.011719 20.839844 20.105469 20.824219 20.128906 C 20.675781 20.367188 20.472656 20.558594 20.40625 20.996094 C 20.375 21.203125 20.34375 21.933594 20.320312 22.726562 L 19 22.902344 L 19.128906 25.832031 L 20.46875 25.667969 C 20.574219 25.898438 20.722656 26.136719 20.929688 26.214844 C 20.929688 26.214844 20.941406 26.757812 20.597656 27.597656 C 20.257812 28.433594 20.113281 28.980469 20.160156 29.394531 C 20.210938 29.808594 20.199219 29.976562 20.125 30.085938 C 20.050781 30.199219 19.746094 30.691406 19.589844 31.460938 C 19.429688 32.230469 19.285156 32.96875 19.273438 33.066406 C 19.261719 33.15625 18.863281 33.390625 18.496094 33.351562 L 18.621094 33.164062 L 18.6875 33.070312 C 18.6875 33.070312 19.171875 32.441406 18.824219 32.273438 C 18.476562 32.101562 18.183594 32.128906 17.957031 31.988281 C 17.730469 31.84375 16.75 30.316406 15.804688 30.183594 C 15.804688 30.183594 16.699219 28.695312 16.578125 27.875 C 16.5 27.3125 16.386719 26.882812 16.316406 26.496094 C 16.597656 26.726562 17.066406 26.914062 17.257812 26.804688 C 17.539062 26.652344 18.535156 24.664062 18.445312 24.238281 C 18.351562 23.808594 18.253906 23.984375 18.253906 23.984375 L 18.199219 23.832031 L 18.464844 24.050781 C 18.464844 24.050781 18.597656 22.023438 16.828125 22.644531 C 16.828125 22.644531 16.46875 22.445312 16.472656 22.28125 C 16.480469 22.117188 15.976562 22.144531 16.089844 22.390625 C 16.203125 22.640625 16.308594 22.71875 16.308594 22.71875 L 16.160156 22.699219 C 16.121094 22.585938 16.074219 22.480469 16.035156 22.414062 C 16 22.359375 15.839844 22.222656 15.753906 22.238281 C 15.53125 22.277344 15.613281 22.21875 15.613281 22.21875 L 15.625 21.832031 C 15.625 21.832031 16.289062 21.4375 16.230469 20.535156 C 16.171875 19.6875 15.539062 19.277344 14.488281 19.585938 C 13.492188 19.878906 13.632812 20.828125 13.757812 20.992188 C 13.808594 21.0625 13.859375 21.171875 13.8125 21.269531 C 13.730469 21.4375 13.65625 21.507812 13.683594 21.566406 C 13.707031 21.621094 13.746094 21.617188 13.78125 21.628906 C 13.871094 21.65625 13.78125 21.777344 13.824219 21.804688 C 13.867188 21.835938 13.902344 21.820312 13.902344 21.820312 L 13.894531 21.835938 C 13.894531 21.835938 13.835938 21.914062 13.933594 21.960938 C 14.023438 21.996094 13.941406 22.238281 14.109375 22.246094 C 14.28125 22.25 14.582031 22.210938 14.582031 22.210938 L 14.558594 22.359375 C 14.558594 22.359375 14.277344 22.339844 13.898438 22.707031 L 13.894531 22.714844 C 13.78125 22.789062 13.6875 22.878906 13.648438 22.984375 C 13.527344 23.347656 13.4375 23.804688 13.386719 23.902344 C 13.332031 24 13.09375 24.601562 12.867188 24.773438 C 12.644531 24.945312 12.160156 25.558594 11.96875 25.796875 C 11.777344 26.035156 11.453125 26.265625 11.308594 26.261719 C 11.160156 26.253906 10.875 26.449219 10.855469 26.609375 C 10.839844 26.769531 10.949219 26.757812 10.992188 26.859375 C 11.039062 26.960938 11.277344 27.128906 11.402344 26.972656 C 11.53125 26.816406 11.632812 26.710938 11.707031 26.710938 C 11.777344 26.714844 11.851562 26.691406 11.941406 26.574219 C 12.03125 26.457031 12.890625 25.855469 13.105469 25.640625 C 13.222656 25.527344 13.425781 25.261719 13.613281 24.996094 C 13.601562 25.386719 13.683594 26.503906 13.6875 26.695312 C 13.691406 26.902344 13.363281 27.570312 13.703125 27.617188 C 14.042969 27.667969 13.96875 27.679688 13.96875 27.679688 C 13.96875 27.679688 13.566406 28.820312 13.582031 29.0625 C 13.597656 29.308594 13.632812 30.691406 13.769531 31.34375 C 13.902344 31.992188 14.160156 33.070312 13.558594 33.21875 C 12.957031 33.367188 12.46875 33.398438 12.402344 33.554688 C 12.359375 33.65625 12.449219 33.867188 12.78125 33.992188 L 10.046875 33.992188 L 10.046875 34.523438 L 27.953125 34.523438 Z M 16.578125 22.769531 C 16.578125 22.769531 16.179688 22.457031 16.289062 22.367188 C 16.398438 22.277344 16.492188 22.65625 16.582031 22.710938 C 16.671875 22.761719 16.578125 22.769531 16.578125 22.769531 M 16.261719 24.890625 C 16.277344 24.070312 16.300781 23.128906 16.300781 23.128906 C 16.300781 23.128906 16.292969 23.097656 16.277344 23.042969 L 16.394531 23.074219 C 16.394531 23.074219 16.597656 23.101562 16.5625 23.257812 C 16.542969 23.339844 16.386719 24.144531 16.261719 24.890625 M 23.847656 20.273438 C 23.855469 20.390625 23.859375 20.511719 23.859375 20.617188 C 23.777344 20.589844 23.722656 20.542969 23.683594 20.5 C 23.710938 20.445312 23.734375 20.390625 23.734375 20.339844 C 23.734375 20.214844 23.824219 19.949219 23.847656 20.273438 M 17.550781 33.15625 C 17.492188 33.464844 17.269531 33.875 17.269531 33.875 C 17.269531 33.875 17.253906 33.921875 17.238281 33.992188 L 14.917969 33.992188 C 14.910156 33.792969 14.730469 33.441406 14.730469 33.027344 C 14.734375 32.578125 15.0625 31.605469 14.792969 31 L 14.871094 30.761719 C 14.871094 30.761719 16.308594 31.855469 16.996094 32.304688 C 17.6875 32.753906 17.613281 32.84375 17.550781 33.15625 M 18.128906 33.898438 C 18.191406 33.929688 18.257812 33.960938 18.328125 33.992188 L 18.0625 33.992188 Z M 23.566406 33.992188 L 20.515625 33.992188 C 20.546875 33.820312 20.582031 33.609375 20.597656 33.429688 C 20.636719 33.054688 21.539062 30.257812 21.78125 29.871094 C 22.023438 29.488281 21.929688 29.640625 21.929688 29.640625 C 21.929688 29.640625 23.082031 31.847656 23.6875 32.191406 C 24.296875 32.535156 24.199219 32.6875 24.199219 32.6875 C 24.199219 32.6875 24.601562 32.847656 24.359375 33.101562 C 24.117188 33.355469 24.03125 33.476562 23.847656 33.539062 C 23.675781 33.597656 23.261719 33.867188 23.566406 33.992188 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9a.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9a.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9a.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="37px" height="50px" viewBox="0 0 37 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 1.484375 0.425781 C 0.996094 0.535156 0.605469 0.886719 0.445312 1.363281 L 0.390625 1.53125 L 0.371094 24.871094 C 0.359375 42.535156 0.359375 48.25 0.378906 48.382812 C 0.457031 48.949219 0.859375 49.40625 1.402344 49.546875 C 1.597656 49.597656 35.242188 49.589844 35.496094 49.539062 C 35.964844 49.449219 36.398438 49.019531 36.507812 48.550781 C 36.558594 48.324219 36.5625 1.628906 36.511719 1.441406 C 36.382812 0.960938 36.007812 0.589844 35.515625 0.441406 C 35.351562 0.394531 1.703125 0.378906 1.484375 0.425781 M 34.996094 25.003906 C 35.003906 37.652344 35.007812 48.007812 35 48.023438 C 34.992188 48.046875 32.039062 48.050781 18.480469 48.050781 L 1.96875 48.050781 L 1.96875 37.449219 C 1.96875 31.621094 1.976562 21.257812 1.984375 14.425781 L 1.996094 2 L 18.488281 2.003906 L 34.976562 2.011719 L 34.996094 25.003906 M 16.363281 13.496094 C 11.820312 13.5 8.667969 13.511719 8.660156 13.523438 C 8.648438 13.53125 8.644531 18.195312 8.65625 25.035156 L 8.671875 36.527344 L 16.574219 36.527344 C 20.925781 36.527344 25.339844 36.523438 26.386719 36.515625 L 28.292969 36.5 L 28.292969 13.480469 L 26.171875 13.488281 C 25.003906 13.488281 20.589844 13.496094 16.363281 13.496094 M 14.160156 14.304688 C 15.105469 14.507812 15.402344 15.222656 14.976562 16.273438 C 14.789062 16.738281 14.785156 16.753906 14.777344 16.976562 C 14.773438 17.160156 14.777344 17.179688 14.8125 17.1875 C 15.027344 17.230469 15.878906 17.523438 16.074219 17.625 C 16.433594 17.808594 16.714844 18.230469 17.09375 19.160156 C 17.351562 19.789062 17.660156 20.4375 17.828125 20.699219 C 18.03125 21.019531 18.011719 21.347656 17.761719 21.816406 C 17.699219 21.9375 17.59375 22.140625 17.53125 22.265625 C 17.46875 22.390625 17.34375 22.644531 17.253906 22.828125 C 16.972656 23.40625 16.835938 23.785156 16.753906 24.226562 L 16.722656 24.398438 L 16.816406 24.664062 C 16.871094 24.8125 16.96875 25.085938 17.035156 25.273438 C 17.101562 25.460938 17.152344 25.621094 17.148438 25.628906 C 17.144531 25.636719 17 25.671875 16.835938 25.703125 L 16.53125 25.765625 L 16.542969 26.035156 C 16.558594 26.308594 16.625 27.054688 16.703125 27.734375 C 16.746094 28.125 16.847656 28.667969 16.960938 29.101562 C 17 29.25 17.050781 29.464844 17.074219 29.578125 C 17.285156 30.664062 17.582031 31.671875 17.972656 32.636719 C 17.984375 32.664062 17.9375 32.703125 17.765625 32.824219 C 17.425781 33.058594 17.441406 33.035156 17.542969 33.085938 C 17.636719 33.132812 17.84375 33.175781 18.230469 33.226562 C 18.625 33.277344 18.933594 33.484375 18.933594 33.691406 C 18.933594 33.703125 18.683594 33.792969 18.382812 33.894531 C 17.675781 34.128906 17.4375 34.144531 16.949219 33.996094 C 16.921875 33.988281 16.910156 34.003906 16.898438 34.078125 C 16.890625 34.132812 16.878906 34.171875 16.871094 34.171875 C 16.804688 34.171875 16.050781 34.089844 16.046875 34.082031 C 16.039062 34.074219 16.03125 33.925781 16.023438 33.753906 L 16.011719 33.433594 L 15.855469 33.417969 C 15.664062 33.398438 15.6875 33.4375 15.636719 33.03125 C 15.613281 32.839844 15.570312 32.535156 15.546875 32.351562 C 15.523438 32.167969 15.472656 31.8125 15.441406 31.558594 C 15.375 31.070312 15.226562 30.125 15.140625 29.640625 C 15.113281 29.480469 15.0625 29.183594 15.027344 28.976562 C 14.996094 28.773438 14.941406 28.515625 14.914062 28.40625 C 14.804688 27.992188 14.589844 27.222656 14.578125 27.203125 C 14.558594 27.171875 14.3125 28.96875 14.285156 29.320312 C 14.273438 29.496094 14.25 29.875 14.234375 30.164062 C 14.214844 30.449219 14.183594 30.96875 14.160156 31.320312 C 14.140625 31.667969 14.109375 32.367188 14.097656 32.867188 C 14.089844 33.371094 14.074219 33.789062 14.070312 33.796875 C 14.0625 33.804688 13.988281 33.824219 13.902344 33.839844 C 13.707031 33.875 13.710938 33.847656 13.789062 34.28125 C 13.875 34.773438 13.886719 34.722656 13.660156 34.828125 L 13.46875 34.917969 L 13.378906 34.847656 L 13.292969 34.773438 L 13.058594 34.996094 C 12.714844 35.316406 12.734375 35.308594 12.117188 35.308594 C 11.753906 35.304688 11.578125 35.296875 11.496094 35.277344 L 11.382812 35.246094 L 11.375 35.066406 C 11.367188 34.761719 11.476562 34.582031 11.703125 34.527344 C 11.875 34.488281 11.945312 34.441406 12.144531 34.25 L 12.328125 34.070312 L 12.089844 33.957031 C 11.957031 33.894531 11.847656 33.832031 11.847656 33.820312 C 11.847656 33.808594 11.882812 33.609375 11.929688 33.378906 C 12.179688 32.078125 12.300781 30.734375 12.300781 29.246094 C 12.300781 28.84375 12.3125 28.457031 12.324219 28.382812 C 12.332031 28.304688 12.355469 27.988281 12.375 27.671875 C 12.390625 27.355469 12.414062 26.941406 12.425781 26.746094 C 12.449219 26.429688 12.441406 25.660156 12.417969 25.636719 C 12.414062 25.632812 12.316406 25.59375 12.207031 25.550781 L 12 25.472656 L 12 25.246094 C 12 25.117188 12.007812 24.75 12.019531 24.421875 L 12.039062 23.828125 L 11.871094 23.640625 C 11.78125 23.539062 11.585938 23.34375 11.441406 23.210938 C 11.144531 22.9375 10.992188 22.773438 10.160156 21.832031 C 9.863281 21.5 9.765625 21.242188 9.828125 20.988281 C 9.90625 20.6875 10.472656 19.609375 11 18.753906 C 11.058594 18.65625 11.136719 18.53125 11.167969 18.476562 C 11.339844 18.1875 11.566406 17.933594 11.773438 17.804688 C 11.894531 17.730469 12.367188 17.523438 12.417969 17.523438 C 12.425781 17.523438 12.515625 17.484375 12.621094 17.4375 C 12.722656 17.386719 12.882812 17.328125 12.972656 17.304688 L 13.136719 17.257812 L 13.136719 17.074219 C 13.132812 16.769531 13.089844 16.632812 12.84375 16.195312 C 12.5625 15.695312 12.550781 15.347656 12.808594 14.835938 C 13.046875 14.355469 13.519531 14.167969 14.160156 14.304688 M 23.34375 16.441406 C 23.886719 16.609375 24.230469 17.070312 24.304688 17.730469 C 24.316406 17.835938 24.355469 18.050781 24.390625 18.203125 C 24.542969 18.890625 24.429688 19.277344 24.039062 19.425781 L 23.964844 19.453125 L 24.058594 19.507812 C 24.109375 19.539062 24.191406 19.574219 24.246094 19.585938 C 25.28125 19.863281 25.625 20.246094 26.058594 21.640625 C 26.417969 22.789062 26.472656 23.261719 26.300781 23.847656 C 26.261719 23.988281 26.195312 24.214844 26.15625 24.359375 C 26.113281 24.503906 25.996094 24.867188 25.894531 25.171875 C 25.792969 25.476562 25.703125 25.746094 25.699219 25.773438 C 25.6875 25.8125 25.703125 25.84375 25.777344 25.917969 C 25.828125 25.972656 25.90625 26.0625 25.949219 26.121094 C 26.085938 26.292969 26.414062 26.691406 26.585938 26.886719 C 26.671875 26.988281 26.746094 27.082031 26.746094 27.09375 C 26.746094 27.144531 26.472656 27.519531 26.304688 27.707031 L 26.1875 27.835938 L 26.25 28.007812 C 26.28125 28.101562 26.308594 28.183594 26.308594 28.1875 C 26.308594 28.199219 25.933594 28.382812 25.710938 28.476562 C 25.359375 28.621094 24.980469 28.742188 24.59375 28.828125 C 24.40625 28.871094 24.226562 28.914062 24.191406 28.921875 C 24.15625 28.933594 24.109375 28.945312 24.085938 28.945312 C 23.960938 28.945312 23.980469 29.003906 24.164062 29.179688 C 24.539062 29.542969 24.730469 30.230469 24.640625 30.910156 C 24.519531 31.847656 24.628906 32.515625 24.980469 32.984375 C 25.234375 33.328125 25.289062 33.488281 25.3125 33.984375 C 25.355469 34.902344 25.003906 34.957031 24.417969 34.128906 C 23.949219 33.457031 23.941406 33.421875 23.972656 32.746094 C 23.976562 32.621094 23.96875 32.574219 23.914062 32.421875 C 23.878906 32.324219 23.757812 31.980469 23.644531 31.652344 C 23.535156 31.324219 23.394531 30.933594 23.335938 30.777344 C 23.027344 29.980469 22.960938 29.695312 22.996094 29.316406 L 23.007812 29.15625 L 22.886719 29.140625 C 22.820312 29.132812 22.730469 29.117188 22.683594 29.109375 C 22.550781 29.078125 22.550781 29.078125 22.621094 29.253906 C 22.851562 29.800781 22.894531 30.226562 22.78125 30.859375 C 22.703125 31.3125 22.667969 31.753906 22.667969 32.277344 C 22.667969 32.953125 22.6875 33.046875 22.941406 33.417969 C 23.285156 33.917969 23.117188 34.382812 22.273438 35.253906 C 21.902344 35.640625 21.574219 35.710938 21.398438 35.449219 C 21.296875 35.292969 21.3125 35.113281 21.472656 34.710938 C 21.898438 33.640625 21.90625 33.554688 21.660156 32.4375 C 21.617188 32.234375 21.53125 31.8125 21.476562 31.5 C 21.417969 31.1875 21.335938 30.765625 21.289062 30.558594 C 21.199219 30.136719 21.082031 29.390625 21.027344 28.902344 L 20.992188 28.578125 L 20.773438 28.507812 C 20.609375 28.453125 20.128906 28.253906 20.097656 28.226562 C 20.089844 28.21875 20.183594 27.652344 20.246094 27.324219 C 20.316406 26.96875 20.464844 26.390625 20.582031 26.003906 C 20.617188 25.894531 20.691406 25.652344 20.75 25.460938 L 20.859375 25.117188 L 20.699219 24.847656 C 20.464844 24.449219 20.125 23.941406 19.847656 23.574219 C 19.523438 23.144531 19.535156 23.164062 19.535156 22.90625 C 19.53125 22.667969 19.523438 22.703125 19.8125 21.816406 C 20.308594 20.285156 20.410156 20.117188 21.019531 19.867188 C 21.152344 19.8125 21.300781 19.75 21.351562 19.722656 C 21.402344 19.695312 21.566406 19.625 21.714844 19.566406 C 22.035156 19.433594 22.019531 19.449219 21.929688 19.382812 C 21.496094 19.050781 21.441406 18.929688 21.476562 18.335938 C 21.527344 17.339844 21.636719 17.03125 22.027344 16.734375 C 22.460938 16.40625 22.90625 16.308594 23.34375 16.441406 M 15.734375 19.914062 C 15.785156 20.472656 16.082031 21.714844 16.164062 21.710938 C 16.171875 21.710938 16.269531 21.519531 16.378906 21.285156 C 16.613281 20.796875 16.613281 20.835938 16.429688 20.609375 C 16.378906 20.546875 16.273438 20.40625 16.195312 20.296875 C 16.046875 20.089844 15.753906 19.734375 15.730469 19.734375 C 15.722656 19.734375 15.726562 19.816406 15.734375 19.914062 M 11.980469 19.992188 C 11.957031 20.027344 11.8125 20.253906 11.664062 20.496094 L 11.390625 20.9375 L 11.71875 21.433594 L 12.042969 21.933594 L 12.046875 21.839844 C 12.050781 21.785156 12.046875 21.335938 12.039062 20.835938 L 12.023438 19.929688 L 11.980469 19.992188 M 24.632812 22.105469 C 24.546875 22.660156 24.652344 23.679688 24.851562 24.246094 L 24.878906 24.328125 L 24.890625 24.246094 C 24.914062 24.109375 24.941406 23.820312 24.957031 23.621094 C 24.964844 23.515625 24.988281 23.277344 25.011719 23.085938 C 25.0625 22.679688 25.070312 22.726562 24.84375 22.246094 C 24.660156 21.867188 24.667969 21.871094 24.632812 22.105469 M 21.140625 22.265625 C 21.035156 22.492188 20.96875 22.695312 20.917969 22.953125 L 20.875 23.171875 L 21.046875 23.421875 C 21.175781 23.609375 21.21875 23.660156 21.230469 23.632812 C 21.25 23.589844 21.25 22.539062 21.230469 22.285156 L 21.21875 22.101562 L 21.140625 22.265625 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(10.980392%,29.019609%,59.607846%);fill-opacity:1;" d="M 0.769531 0.800781 C 0.722656 0.855469 0.683594 0.894531 0.691406 0.894531 C 0.695312 0.894531 0.742188 0.855469 0.792969 0.800781 C 0.84375 0.75 0.878906 0.707031 0.871094 0.707031 C 0.867188 0.707031 0.820312 0.75 0.769531 0.800781 M 36.386719 1.136719 C 36.40625 1.175781 36.425781 1.203125 36.429688 1.199219 C 36.441406 1.191406 36.375 1.0625 36.363281 1.0625 C 36.359375 1.0625 36.367188 1.09375 36.386719 1.136719 M 36.542969 1.625 C 36.542969 1.664062 36.546875 1.683594 36.554688 1.660156 C 36.558594 1.640625 36.558594 1.609375 36.554688 1.589844 C 36.546875 1.570312 36.542969 1.585938 36.542969 1.625 M 1.984375 14.425781 C 1.976562 21.257812 1.96875 31.621094 1.96875 37.449219 L 1.96875 48.050781 L 18.480469 48.050781 C 32.039062 48.050781 34.992188 48.046875 35 48.023438 C 35.007812 48.007812 35.003906 37.652344 34.996094 25.003906 L 34.976562 2.011719 L 18.488281 2.003906 L 1.996094 2 L 1.984375 14.425781 M 0.367188 15.691406 C 0.367188 22.984375 0.371094 25.96875 0.375 22.324219 C 0.375 18.675781 0.375 12.707031 0.375 9.058594 C 0.371094 5.410156 0.367188 8.394531 0.367188 15.691406 M 28.292969 24.992188 L 28.292969 36.5 L 26.386719 36.515625 C 25.339844 36.523438 20.925781 36.527344 16.574219 36.527344 L 8.671875 36.527344 L 8.65625 25.035156 C 8.644531 18.195312 8.648438 13.53125 8.660156 13.523438 C 8.667969 13.511719 11.820312 13.5 16.363281 13.496094 C 20.589844 13.496094 25.003906 13.488281 26.171875 13.488281 L 28.292969 13.480469 L 28.292969 24.992188 M 12.980469 14.558594 L 12.910156 14.636719 L 12.988281 14.566406 C 13.058594 14.5 13.074219 14.480469 13.058594 14.480469 C 13.054688 14.480469 13.019531 14.515625 12.980469 14.558594 M 15.007812 14.867188 C 15.007812 14.878906 15.023438 14.910156 15.039062 14.941406 C 15.054688 14.96875 15.070312 14.984375 15.070312 14.972656 C 15.070312 14.960938 15.054688 14.925781 15.039062 14.898438 C 15.023438 14.871094 15.007812 14.855469 15.007812 14.867188 M 22.980469 16.394531 C 23.003906 16.398438 23.042969 16.398438 23.0625 16.394531 C 23.082031 16.386719 23.058594 16.382812 23.015625 16.382812 C 22.96875 16.382812 22.953125 16.386719 22.980469 16.394531 M 13.121094 16.847656 C 13.128906 16.90625 13.136719 16.957031 13.140625 16.960938 C 13.15625 16.976562 13.144531 16.847656 13.125 16.796875 C 13.113281 16.761719 13.113281 16.777344 13.121094 16.847656 M 21.867188 16.875 L 21.796875 16.953125 L 21.875 16.878906 C 21.914062 16.839844 21.949219 16.804688 21.949219 16.800781 C 21.949219 16.785156 21.933594 16.800781 21.867188 16.875 M 14.765625 17.015625 C 14.765625 17.09375 14.769531 17.125 14.773438 17.082031 C 14.78125 17.039062 14.78125 16.972656 14.773438 16.933594 C 14.769531 16.898438 14.765625 16.933594 14.765625 17.015625 M 13.148438 17.144531 C 13.140625 17.214844 13.144531 17.265625 13.15625 17.253906 C 13.164062 17.246094 13.167969 17.1875 13.164062 17.125 L 13.15625 17.015625 L 13.148438 17.144531 M 16.339844 17.835938 C 16.386719 17.882812 16.425781 17.921875 16.433594 17.921875 C 16.4375 17.921875 16.40625 17.882812 16.363281 17.835938 C 16.316406 17.792969 16.277344 17.753906 16.269531 17.753906 C 16.265625 17.753906 16.296875 17.792969 16.339844 17.835938 M 11.527344 18.007812 L 11.402344 18.140625 L 11.53125 18.015625 C 11.601562 17.945312 11.660156 17.886719 11.660156 17.882812 C 11.660156 17.871094 11.640625 17.886719 11.527344 18.007812 M 24.433594 18.515625 C 24.4375 18.558594 24.441406 18.578125 24.445312 18.550781 C 24.449219 18.523438 24.449219 18.488281 24.445312 18.46875 C 24.4375 18.445312 24.433594 18.46875 24.433594 18.515625 M 16.828125 18.578125 C 16.828125 18.589844 16.839844 18.621094 16.855469 18.648438 C 16.875 18.679688 16.886719 18.691406 16.886719 18.679688 C 16.886719 18.667969 16.875 18.636719 16.855469 18.609375 C 16.839844 18.578125 16.828125 18.566406 16.828125 18.578125 M 21.703125 19.179688 C 21.777344 19.253906 21.839844 19.316406 21.847656 19.316406 C 21.851562 19.316406 21.796875 19.253906 21.722656 19.179688 C 21.648438 19.105469 21.585938 19.046875 21.578125 19.046875 C 21.574219 19.046875 21.628906 19.105469 21.703125 19.179688 M 15.875 19.890625 C 15.914062 19.929688 15.949219 19.960938 15.957031 19.960938 C 15.960938 19.960938 15.933594 19.929688 15.898438 19.890625 C 15.859375 19.847656 15.820312 19.816406 15.816406 19.816406 C 15.808594 19.816406 15.835938 19.847656 15.875 19.890625 M 17.503906 20.117188 C 17.53125 20.179688 17.5625 20.230469 17.566406 20.222656 C 17.574219 20.214844 17.46875 20.003906 17.457031 20.003906 C 17.449219 20.003906 17.472656 20.054688 17.503906 20.117188 M 25.320312 20.117188 C 25.355469 20.160156 25.394531 20.191406 25.398438 20.191406 C 25.40625 20.191406 25.378906 20.160156 25.339844 20.117188 C 25.300781 20.078125 25.265625 20.046875 25.257812 20.046875 C 25.253906 20.046875 25.28125 20.078125 25.320312 20.117188 M 16.101562 20.171875 C 16.128906 20.207031 16.152344 20.234375 16.15625 20.234375 C 16.164062 20.234375 16.148438 20.207031 16.125 20.171875 C 16.097656 20.136719 16.074219 20.109375 16.070312 20.109375 C 16.0625 20.109375 16.078125 20.136719 16.101562 20.171875 M 15.757812 20.210938 C 15.757812 20.253906 15.761719 20.269531 15.765625 20.25 C 15.769531 20.230469 15.769531 20.195312 15.765625 20.175781 C 15.761719 20.15625 15.757812 20.171875 15.757812 20.210938 M 12.042969 20.742188 C 12.042969 21.007812 12.042969 21.113281 12.046875 20.976562 C 12.050781 20.84375 12.050781 20.625 12.046875 20.496094 C 12.042969 20.371094 12.042969 20.480469 12.042969 20.742188 M 20.328125 20.421875 C 20.308594 20.457031 20.296875 20.492188 20.304688 20.496094 C 20.308594 20.5 20.328125 20.472656 20.34375 20.429688 C 20.386719 20.339844 20.375 20.335938 20.328125 20.421875 M 9.808594 21.148438 C 9.808594 21.203125 9.8125 21.222656 9.816406 21.195312 C 9.820312 21.171875 9.820312 21.128906 9.816406 21.101562 C 9.8125 21.078125 9.808594 21.097656 9.808594 21.148438 M 16.4375 21.160156 C 16.414062 21.210938 16.398438 21.253906 16.402344 21.253906 C 16.417969 21.253906 16.5 21.085938 16.492188 21.074219 C 16.488281 21.070312 16.460938 21.109375 16.4375 21.160156 M 19.988281 21.257812 C 19.976562 21.292969 19.96875 21.328125 19.976562 21.332031 C 19.980469 21.335938 19.992188 21.308594 20.007812 21.273438 C 20.019531 21.234375 20.027344 21.203125 20.019531 21.199219 C 20.015625 21.195312 20.003906 21.21875 19.988281 21.257812 M 16.304688 21.433594 C 16.253906 21.535156 16.261719 21.550781 16.3125 21.457031 C 16.335938 21.410156 16.351562 21.371094 16.347656 21.367188 C 16.339844 21.363281 16.320312 21.390625 16.304688 21.433594 M 12.058594 21.707031 C 12.054688 21.875 12.046875 21.921875 12.027344 21.910156 C 12.007812 21.898438 12.007812 21.898438 12.027344 21.921875 C 12.070312 21.96875 12.074219 21.9375 12.070312 21.710938 L 12.0625 21.492188 L 12.058594 21.707031 M 10.339844 22.035156 C 10.398438 22.097656 10.457031 22.152344 10.460938 22.152344 C 10.464844 22.152344 10.421875 22.097656 10.359375 22.035156 C 10.296875 21.972656 10.242188 21.921875 10.238281 21.921875 C 10.230469 21.921875 10.277344 21.972656 10.339844 22.035156 M 24.742188 22.035156 C 24.742188 22.046875 24.753906 22.082031 24.769531 22.109375 C 24.789062 22.136719 24.800781 22.152344 24.800781 22.140625 C 24.800781 22.128906 24.789062 22.097656 24.769531 22.066406 C 24.753906 22.039062 24.742188 22.023438 24.742188 22.035156 M 21.183594 22.128906 C 21.171875 22.15625 21.167969 22.179688 21.171875 22.183594 C 21.179688 22.191406 21.191406 22.171875 21.199219 22.148438 C 21.210938 22.109375 21.21875 22.140625 21.230469 22.265625 L 21.242188 22.433594 L 21.246094 22.273438 C 21.25 22.105469 21.226562 22.054688 21.183594 22.128906 M 17.53125 22.222656 C 17.496094 22.300781 17.503906 22.316406 17.542969 22.246094 C 17.558594 22.214844 17.570312 22.183594 17.566406 22.179688 C 17.558594 22.175781 17.546875 22.195312 17.53125 22.222656 M 24.601562 22.296875 C 24.601562 22.347656 24.605469 22.367188 24.609375 22.34375 C 24.613281 22.316406 24.613281 22.273438 24.609375 22.25 C 24.605469 22.222656 24.601562 22.246094 24.601562 22.296875 M 24.921875 22.410156 C 24.949219 22.472656 24.980469 22.519531 24.984375 22.515625 C 24.992188 22.507812 24.886719 22.296875 24.875 22.296875 C 24.867188 22.296875 24.890625 22.347656 24.921875 22.410156 M 19.628906 22.371094 C 19.621094 22.402344 19.617188 22.429688 19.621094 22.433594 C 19.628906 22.441406 19.636719 22.417969 19.644531 22.386719 C 19.652344 22.359375 19.65625 22.328125 19.648438 22.324219 C 19.644531 22.320312 19.636719 22.339844 19.628906 22.371094 M 24.582031 22.652344 C 24.582031 22.769531 24.585938 22.820312 24.589844 22.761719 C 24.59375 22.699219 24.59375 22.601562 24.589844 22.542969 C 24.585938 22.480469 24.582031 22.53125 24.582031 22.652344 M 17.378906 22.535156 C 17.328125 22.640625 17.335938 22.65625 17.386719 22.558594 C 17.410156 22.515625 17.425781 22.476562 17.421875 22.472656 C 17.414062 22.46875 17.398438 22.496094 17.378906 22.535156 M 10.875 22.636719 C 10.960938 22.726562 10.980469 22.742188 10.980469 22.726562 C 10.980469 22.722656 10.933594 22.679688 10.878906 22.628906 L 10.78125 22.535156 L 10.875 22.636719 M 21.257812 23.015625 C 21.257812 23.257812 21.261719 23.351562 21.261719 23.226562 C 21.265625 23.105469 21.265625 22.90625 21.261719 22.789062 C 21.261719 22.671875 21.257812 22.773438 21.257812 23.015625 M 11.15625 22.941406 C 11.234375 23.023438 11.300781 23.089844 11.308594 23.089844 C 11.3125 23.089844 11.253906 23.023438 11.175781 22.941406 C 11.097656 22.863281 11.027344 22.796875 11.019531 22.796875 C 11.015625 22.796875 11.074219 22.863281 11.15625 22.941406 M 24.601562 23.003906 C 24.601562 23.054688 24.605469 23.078125 24.609375 23.050781 C 24.613281 23.027344 24.613281 22.984375 24.609375 22.957031 C 24.605469 22.933594 24.601562 22.953125 24.601562 23.003906 M 11.476562 23.246094 C 11.511719 23.285156 11.550781 23.316406 11.554688 23.316406 C 11.5625 23.316406 11.535156 23.285156 11.496094 23.246094 C 11.457031 23.203125 11.421875 23.171875 11.414062 23.171875 C 11.410156 23.171875 11.4375 23.203125 11.476562 23.246094 M 26.378906 23.441406 C 26.378906 23.484375 26.382812 23.5 26.386719 23.480469 C 26.390625 23.457031 26.390625 23.425781 26.386719 23.40625 C 26.382812 23.386719 26.378906 23.402344 26.378906 23.441406 M 24.953125 23.722656 C 24.953125 23.792969 24.957031 23.816406 24.960938 23.78125 C 24.964844 23.742188 24.964844 23.6875 24.960938 23.65625 C 24.957031 23.625 24.953125 23.65625 24.953125 23.722656 M 19.96875 23.734375 C 19.992188 23.769531 20.015625 23.796875 20.023438 23.796875 C 20.027344 23.796875 20.011719 23.769531 19.988281 23.734375 C 19.964844 23.699219 19.9375 23.671875 19.933594 23.671875 C 19.925781 23.671875 19.941406 23.699219 19.96875 23.734375 M 12.007812 23.796875 C 12.019531 23.816406 12.035156 23.917969 12.039062 24.039062 L 12.042969 24.246094 L 12.050781 24.035156 C 12.050781 23.855469 12.046875 23.816406 12.015625 23.792969 C 11.984375 23.769531 11.984375 23.769531 12.007812 23.796875 M 24.929688 23.953125 C 24.929688 24 24.9375 24.015625 24.941406 23.988281 C 24.945312 23.964844 24.945312 23.925781 24.941406 23.90625 C 24.933594 23.886719 24.929688 23.90625 24.929688 23.953125 M 20.171875 24.027344 C 20.199219 24.058594 20.222656 24.089844 20.226562 24.089844 C 20.234375 24.089844 20.21875 24.058594 20.195312 24.027344 C 20.171875 23.992188 20.144531 23.964844 20.140625 23.964844 C 20.132812 23.964844 20.148438 23.992188 20.171875 24.027344 M 24.910156 24.128906 C 24.910156 24.171875 24.914062 24.1875 24.917969 24.167969 C 24.925781 24.148438 24.925781 24.113281 24.917969 24.09375 C 24.914062 24.074219 24.910156 24.089844 24.910156 24.128906 M 20.335938 24.265625 C 20.347656 24.289062 20.371094 24.324219 20.390625 24.347656 L 20.425781 24.390625 L 20.402344 24.347656 C 20.390625 24.324219 20.367188 24.289062 20.351562 24.265625 L 20.316406 24.222656 L 20.335938 24.265625 M 12.019531 24.589844 C 12.019531 24.664062 12.023438 24.695312 12.027344 24.65625 C 12.03125 24.617188 12.03125 24.558594 12.027344 24.519531 C 12.023438 24.484375 12.019531 24.515625 12.019531 24.589844 M 11.996094 25.121094 C 11.996094 25.175781 12 25.199219 12.007812 25.167969 C 12.011719 25.136719 12.011719 25.089844 12.003906 25.0625 C 12 25.035156 11.996094 25.0625 11.996094 25.121094 M 20.691406 25.632812 C 20.679688 25.679688 20.671875 25.722656 20.675781 25.726562 C 20.679688 25.730469 20.695312 25.695312 20.710938 25.648438 C 20.722656 25.601562 20.730469 25.558594 20.726562 25.554688 C 20.722656 25.550781 20.707031 25.585938 20.691406 25.632812 M 12.429688 25.746094 C 12.433594 25.8125 12.4375 25.839844 12.441406 25.800781 C 12.445312 25.765625 12.445312 25.707031 12.441406 25.675781 C 12.433594 25.644531 12.429688 25.675781 12.429688 25.746094 M 16.523438 25.859375 C 16.523438 25.921875 16.527344 25.949219 16.53125 25.917969 C 16.535156 25.886719 16.535156 25.832031 16.53125 25.800781 C 16.527344 25.769531 16.523438 25.796875 16.523438 25.859375 M 25.753906 25.90625 C 25.753906 25.910156 25.78125 25.941406 25.820312 25.976562 L 25.886719 26.035156 L 25.828125 25.96875 C 25.769531 25.90625 25.753906 25.890625 25.753906 25.90625 M 12.453125 26.246094 C 12.453125 26.359375 12.457031 26.402344 12.460938 26.34375 C 12.464844 26.28125 12.464844 26.1875 12.460938 26.136719 C 12.457031 26.082031 12.453125 26.128906 12.453125 26.246094 M 12.433594 26.734375 C 12.433594 26.820312 12.4375 26.855469 12.441406 26.8125 C 12.445312 26.769531 12.445312 26.699219 12.441406 26.65625 C 12.4375 26.613281 12.433594 26.648438 12.433594 26.734375 M 20.351562 26.828125 C 20.34375 26.859375 20.339844 26.890625 20.347656 26.894531 C 20.351562 26.898438 20.359375 26.878906 20.367188 26.847656 C 20.375 26.816406 20.378906 26.789062 20.375 26.785156 C 20.367188 26.777344 20.359375 26.800781 20.351562 26.828125 M 26.578125 26.90625 C 26.578125 26.910156 26.609375 26.941406 26.644531 26.976562 L 26.714844 27.035156 L 26.652344 26.96875 C 26.597656 26.90625 26.578125 26.890625 26.578125 26.90625 M 12.410156 27.058594 C 12.410156 27.113281 12.414062 27.136719 12.417969 27.105469 C 12.425781 27.074219 12.425781 27.027344 12.417969 27 C 12.414062 26.972656 12.410156 27 12.410156 27.058594 M 16.625 27.121094 C 16.625 27.167969 16.628906 27.183594 16.632812 27.15625 C 16.640625 27.128906 16.640625 27.09375 16.632812 27.074219 C 16.628906 27.054688 16.625 27.074219 16.625 27.121094 M 12.390625 27.339844 C 12.390625 27.414062 12.394531 27.445312 12.398438 27.40625 C 12.402344 27.371094 12.402344 27.308594 12.398438 27.269531 C 12.394531 27.234375 12.390625 27.265625 12.390625 27.339844 M 16.644531 27.328125 C 16.644531 27.375 16.648438 27.390625 16.65625 27.363281 C 16.660156 27.339844 16.660156 27.300781 16.65625 27.28125 C 16.648438 27.261719 16.644531 27.28125 16.644531 27.328125 M 14.515625 27.441406 C 14.515625 27.484375 14.519531 27.5 14.527344 27.480469 C 14.53125 27.460938 14.53125 27.425781 14.527344 27.40625 C 14.519531 27.386719 14.515625 27.402344 14.515625 27.441406 M 16.667969 27.515625 C 16.667969 27.5625 16.671875 27.578125 16.675781 27.550781 C 16.679688 27.527344 16.679688 27.488281 16.675781 27.46875 C 16.671875 27.449219 16.667969 27.46875 16.667969 27.515625 M 14.679688 27.546875 C 14.679688 27.566406 14.6875 27.597656 14.699219 27.621094 C 14.710938 27.648438 14.714844 27.652344 14.714844 27.628906 C 14.714844 27.613281 14.707031 27.582031 14.699219 27.558594 C 14.6875 27.53125 14.679688 27.527344 14.679688 27.546875 M 16.6875 27.691406 C 16.6875 27.734375 16.691406 27.75 16.695312 27.730469 C 16.699219 27.710938 16.699219 27.675781 16.695312 27.65625 C 16.691406 27.636719 16.6875 27.652344 16.6875 27.691406 M 12.371094 27.796875 C 12.371094 27.871094 12.375 27.902344 12.378906 27.867188 C 12.382812 27.828125 12.382812 27.765625 12.378906 27.730469 C 12.375 27.691406 12.371094 27.722656 12.371094 27.796875 M 25.410156 28.578125 C 25.359375 28.605469 25.359375 28.609375 25.402344 28.597656 C 25.460938 28.582031 25.527344 28.546875 25.496094 28.550781 C 25.484375 28.550781 25.445312 28.5625 25.410156 28.578125 M 21.003906 28.671875 C 21.003906 28.710938 21.007812 28.730469 21.015625 28.710938 C 21.019531 28.6875 21.019531 28.65625 21.015625 28.636719 C 21.007812 28.617188 21.003906 28.632812 21.003906 28.671875 M 21.027344 28.871094 C 21.027344 28.917969 21.03125 28.933594 21.035156 28.90625 C 21.039062 28.882812 21.039062 28.84375 21.035156 28.824219 C 21.03125 28.804688 21.027344 28.824219 21.027344 28.871094 M 21.046875 29.046875 C 21.046875 29.089844 21.050781 29.105469 21.054688 29.085938 C 21.0625 29.0625 21.0625 29.03125 21.054688 29.011719 C 21.050781 28.992188 21.046875 29.007812 21.046875 29.046875 M 24.070312 29.109375 C 24.113281 29.15625 24.152344 29.195312 24.160156 29.195312 C 24.164062 29.195312 24.132812 29.15625 24.089844 29.109375 C 24.042969 29.0625 24.003906 29.027344 24 29.027344 C 23.992188 29.027344 24.023438 29.0625 24.070312 29.109375 M 22.957031 29.144531 C 22.984375 29.152344 23.003906 29.171875 23.011719 29.207031 C 23.019531 29.25 23.019531 29.25 23.015625 29.199219 C 23.015625 29.152344 23.003906 29.140625 22.964844 29.140625 C 22.921875 29.136719 22.917969 29.140625 22.957031 29.144531 M 21.066406 29.214844 C 21.066406 29.253906 21.070312 29.269531 21.078125 29.25 C 21.082031 29.230469 21.082031 29.199219 21.078125 29.179688 C 21.070312 29.15625 21.066406 29.175781 21.066406 29.214844 M 22.992188 29.453125 C 22.992188 29.535156 22.996094 29.566406 23 29.519531 C 23.003906 29.476562 23.003906 29.414062 23 29.375 C 22.996094 29.339844 22.992188 29.375 22.992188 29.453125 M 36.546875 39.019531 C 36.546875 44.199219 36.550781 46.316406 36.554688 43.722656 C 36.558594 41.128906 36.558594 36.890625 36.554688 34.300781 C 36.550781 31.714844 36.546875 33.839844 36.546875 39.019531 M 14.25 29.757812 C 14.25 29.808594 14.253906 29.828125 14.257812 29.804688 C 14.261719 29.777344 14.261719 29.734375 14.257812 29.710938 C 14.253906 29.683594 14.25 29.703125 14.25 29.757812 M 23.007812 29.746094 C 23.011719 29.792969 23.015625 29.808594 23.019531 29.78125 C 23.023438 29.757812 23.023438 29.71875 23.019531 29.699219 C 23.011719 29.679688 23.007812 29.699219 23.007812 29.746094 M 22.828125 30.214844 C 22.828125 30.378906 22.828125 30.449219 22.832031 30.367188 C 22.835938 30.28125 22.835938 30.148438 22.832031 30.0625 C 22.828125 29.980469 22.828125 30.046875 22.828125 30.214844 M 14.226562 30.132812 C 14.226562 30.183594 14.234375 30.203125 14.238281 30.179688 C 14.242188 30.152344 14.242188 30.109375 14.238281 30.085938 C 14.234375 30.058594 14.226562 30.078125 14.226562 30.132812 M 12.289062 30.296875 C 12.289062 30.394531 12.292969 30.433594 12.296875 30.386719 C 12.300781 30.339844 12.300781 30.257812 12.296875 30.210938 C 12.292969 30.160156 12.289062 30.199219 12.289062 30.296875 M 14.207031 30.433594 C 14.207031 30.503906 14.210938 30.527344 14.21875 30.492188 C 14.222656 30.453125 14.222656 30.398438 14.21875 30.367188 C 14.210938 30.335938 14.207031 30.363281 14.207031 30.433594 M 22.804688 30.621094 C 22.804688 30.667969 22.808594 30.683594 22.8125 30.65625 C 22.816406 30.632812 22.816406 30.59375 22.8125 30.574219 C 22.808594 30.554688 22.804688 30.574219 22.804688 30.621094 M 14.1875 30.726562 C 14.1875 30.792969 14.191406 30.820312 14.195312 30.78125 C 14.199219 30.746094 14.199219 30.6875 14.195312 30.65625 C 14.191406 30.625 14.1875 30.65625 14.1875 30.726562 M 12.265625 30.734375 C 12.265625 30.796875 12.269531 30.824219 12.273438 30.792969 C 12.28125 30.761719 12.28125 30.710938 12.273438 30.679688 C 12.269531 30.648438 12.265625 30.671875 12.265625 30.734375 M 12.246094 31.015625 C 12.246094 31.074219 12.25 31.09375 12.253906 31.0625 C 12.257812 31.03125 12.257812 30.984375 12.253906 30.960938 C 12.25 30.933594 12.246094 30.960938 12.246094 31.015625 M 14.167969 31.039062 C 14.167969 31.105469 14.171875 31.132812 14.175781 31.09375 C 14.179688 31.058594 14.179688 31 14.175781 30.96875 C 14.171875 30.9375 14.167969 30.96875 14.167969 31.039062 M 24.601562 31.214844 C 24.601562 31.265625 24.605469 31.289062 24.609375 31.261719 C 24.613281 31.234375 24.613281 31.195312 24.609375 31.167969 C 24.605469 31.140625 24.601562 31.164062 24.601562 31.214844 M 12.222656 31.234375 C 12.222656 31.289062 12.226562 31.308594 12.234375 31.28125 C 12.238281 31.257812 12.238281 31.214844 12.234375 31.1875 C 12.226562 31.164062 12.222656 31.183594 12.222656 31.234375 M 12.203125 31.464844 C 12.203125 31.503906 12.207031 31.519531 12.210938 31.5 C 12.21875 31.480469 12.21875 31.449219 12.210938 31.429688 C 12.207031 31.410156 12.203125 31.425781 12.203125 31.464844 M 24.582031 31.589844 C 24.582031 31.6875 24.585938 31.726562 24.589844 31.679688 C 24.59375 31.628906 24.59375 31.550781 24.589844 31.5 C 24.585938 31.453125 24.582031 31.492188 24.582031 31.589844 M 22.679688 31.609375 C 22.679688 31.652344 22.683594 31.667969 22.6875 31.648438 C 22.691406 31.628906 22.691406 31.59375 22.6875 31.574219 C 22.683594 31.554688 22.679688 31.570312 22.679688 31.609375 M 23.667969 31.714844 C 23.667969 31.730469 23.679688 31.773438 23.695312 31.808594 C 23.734375 31.890625 23.734375 31.851562 23.695312 31.757812 C 23.679688 31.714844 23.667969 31.699219 23.667969 31.714844 M 22.660156 31.859375 C 22.660156 31.925781 22.664062 31.949219 22.667969 31.917969 C 22.671875 31.886719 22.671875 31.835938 22.667969 31.804688 C 22.664062 31.773438 22.660156 31.796875 22.660156 31.859375 M 24.601562 31.933594 C 24.601562 31.992188 24.605469 32.011719 24.609375 31.980469 C 24.613281 31.949219 24.613281 31.902344 24.609375 31.875 C 24.605469 31.851562 24.601562 31.875 24.601562 31.933594 M 22.640625 32.277344 C 22.640625 32.410156 22.644531 32.464844 22.648438 32.398438 C 22.652344 32.332031 22.652344 32.222656 22.648438 32.15625 C 22.644531 32.09375 22.640625 32.144531 22.640625 32.277344 M 14.105469 32.257812 C 14.105469 32.34375 14.109375 32.378906 14.113281 32.335938 C 14.117188 32.292969 14.117188 32.222656 14.113281 32.179688 C 14.109375 32.136719 14.105469 32.171875 14.105469 32.257812 M 22.660156 32.695312 C 22.660156 32.746094 22.664062 32.765625 22.667969 32.742188 C 22.671875 32.714844 22.671875 32.671875 22.667969 32.648438 C 22.664062 32.621094 22.660156 32.644531 22.660156 32.695312 M 15.613281 32.796875 C 15.613281 32.839844 15.617188 32.855469 15.621094 32.835938 C 15.625 32.816406 15.625 32.78125 15.621094 32.761719 C 15.617188 32.742188 15.613281 32.757812 15.613281 32.796875 M 14.085938 33.214844 C 14.085938 33.335938 14.089844 33.386719 14.09375 33.324219 C 14.097656 33.265625 14.097656 33.167969 14.09375 33.105469 C 14.089844 33.046875 14.085938 33.09375 14.085938 33.214844 M 17.96875 33.207031 C 17.988281 33.214844 18.019531 33.214844 18.039062 33.207031 C 18.058594 33.203125 18.042969 33.199219 18.003906 33.199219 C 17.964844 33.199219 17.949219 33.203125 17.96875 33.207031 M 15.8125 33.414062 C 15.886719 33.429688 16.015625 33.433594 16.007812 33.417969 C 16 33.410156 15.949219 33.402344 15.890625 33.40625 C 15.832031 33.40625 15.796875 33.410156 15.8125 33.414062 M 25.28125 33.757812 C 25.28125 33.796875 25.285156 33.8125 25.292969 33.792969 C 25.296875 33.773438 25.296875 33.742188 25.292969 33.71875 C 25.285156 33.699219 25.28125 33.71875 25.28125 33.757812 M 16.027344 33.871094 C 16.027344 33.917969 16.03125 33.933594 16.035156 33.90625 C 16.039062 33.882812 16.039062 33.84375 16.035156 33.824219 C 16.03125 33.804688 16.027344 33.824219 16.027344 33.871094 M 25.304688 34.089844 C 25.304688 34.222656 25.308594 34.277344 25.3125 34.210938 C 25.316406 34.144531 25.316406 34.035156 25.3125 33.972656 C 25.308594 33.90625 25.304688 33.957031 25.304688 34.089844 M 12.011719 33.921875 C 12.050781 33.945312 12.09375 33.964844 12.105469 33.964844 C 12.117188 33.964844 12.09375 33.945312 12.054688 33.921875 C 12.011719 33.902344 11.972656 33.882812 11.960938 33.882812 C 11.949219 33.882812 11.972656 33.902344 12.011719 33.921875 M 18.242188 33.921875 C 18.214844 33.933594 18.210938 33.941406 18.230469 33.941406 C 18.25 33.941406 18.28125 33.933594 18.304688 33.921875 C 18.328125 33.914062 18.332031 33.90625 18.3125 33.90625 C 18.296875 33.90625 18.265625 33.914062 18.242188 33.921875 M 24.367188 34.050781 C 24.390625 34.082031 24.417969 34.113281 24.421875 34.113281 C 24.429688 34.113281 24.414062 34.082031 24.390625 34.050781 C 24.363281 34.015625 24.339844 33.984375 24.335938 33.984375 C 24.328125 33.984375 24.34375 34.015625 24.367188 34.050781 M 17.667969 34.085938 C 17.695312 34.089844 17.730469 34.089844 17.75 34.085938 C 17.769531 34.078125 17.75 34.074219 17.703125 34.074219 C 17.660156 34.074219 17.644531 34.078125 17.667969 34.085938 M 16.179688 34.105469 C 16.207031 34.109375 16.246094 34.109375 16.273438 34.105469 C 16.300781 34.101562 16.277344 34.097656 16.226562 34.097656 C 16.175781 34.097656 16.15625 34.101562 16.179688 34.105469 M 16.386719 34.125 C 16.414062 34.132812 16.449219 34.132812 16.46875 34.125 C 16.488281 34.121094 16.46875 34.117188 16.421875 34.117188 C 16.378906 34.117188 16.363281 34.121094 16.386719 34.125 M 12.074219 34.316406 L 12 34.394531 L 12.078125 34.320312 C 12.152344 34.253906 12.167969 34.238281 12.148438 34.238281 C 12.148438 34.238281 12.113281 34.273438 12.074219 34.316406 M 25.28125 34.425781 C 25.28125 34.464844 25.285156 34.480469 25.292969 34.460938 C 25.296875 34.441406 25.296875 34.40625 25.292969 34.386719 C 25.285156 34.367188 25.28125 34.382812 25.28125 34.425781 M 24.71875 34.519531 C 24.78125 34.582031 24.835938 34.632812 24.84375 34.632812 C 24.847656 34.632812 24.800781 34.582031 24.738281 34.519531 C 24.679688 34.453125 24.625 34.402344 24.617188 34.402344 C 24.613281 34.402344 24.65625 34.453125 24.71875 34.519531 M 11.503906 34.636719 L 11.445312 34.707031 L 11.511719 34.644531 C 11.546875 34.609375 11.578125 34.578125 11.578125 34.578125 C 11.578125 34.558594 11.5625 34.574219 11.503906 34.636719 M 13.167969 34.878906 L 13.054688 34.996094 L 13.171875 34.882812 L 13.292969 34.769531 L 13.347656 34.820312 L 13.40625 34.871094 L 13.355469 34.816406 C 13.292969 34.742188 13.300781 34.738281 13.167969 34.878906 M 13.707031 34.789062 C 13.679688 34.804688 13.664062 34.816406 13.675781 34.816406 C 13.6875 34.816406 13.71875 34.804688 13.746094 34.789062 C 13.777344 34.773438 13.789062 34.757812 13.777344 34.757812 C 13.765625 34.757812 13.734375 34.773438 13.707031 34.789062 M 11.375 35.042969 C 11.371094 35.148438 11.378906 35.238281 11.386719 35.242188 C 11.394531 35.25 11.398438 35.191406 11.398438 35.113281 C 11.386719 34.875 11.378906 34.84375 11.375 35.042969 M 22.382812 35.128906 L 22.269531 35.246094 L 22.390625 35.132812 C 22.5 35.027344 22.519531 35.007812 22.503906 35.007812 C 22.5 35.007812 22.445312 35.0625 22.382812 35.128906 M 21.335938 35.195312 C 21.335938 35.246094 21.339844 35.265625 21.34375 35.242188 C 21.351562 35.214844 21.351562 35.171875 21.34375 35.148438 C 21.339844 35.121094 21.335938 35.144531 21.335938 35.195312 M 11.933594 35.316406 C 12.046875 35.316406 12.226562 35.316406 12.335938 35.316406 C 12.449219 35.3125 12.359375 35.308594 12.136719 35.308594 C 11.914062 35.308594 11.824219 35.3125 11.933594 35.316406 M 0.75 49.183594 C 0.835938 49.273438 0.855469 49.289062 0.855469 49.273438 C 0.855469 49.273438 0.808594 49.226562 0.757812 49.175781 L 0.65625 49.082031 L 0.75 49.183594 M 36.144531 49.191406 L 36.074219 49.269531 L 36.152344 49.199219 C 36.195312 49.160156 36.230469 49.125 36.230469 49.121094 C 36.230469 49.105469 36.210938 49.121094 36.144531 49.191406 M 1.632812 49.589844 C 1.695312 49.59375 1.789062 49.59375 1.839844 49.589844 C 1.894531 49.582031 1.847656 49.582031 1.730469 49.582031 C 1.617188 49.582031 1.574219 49.585938 1.632812 49.589844 M 19.765625 49.589844 C 22.628906 49.589844 27.304688 49.589844 30.160156 49.589844 C 33.015625 49.585938 30.671875 49.582031 24.957031 49.582031 C 19.242188 49.582031 16.90625 49.585938 19.765625 49.589844 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 1.359375 0.03125 C 0.703125 0.199219 0.207031 0.699219 0.0390625 1.351562 C -0.0195312 1.570312 -0.0078125 48.578125 0.046875 48.765625 C 0.226562 49.347656 0.640625 49.769531 1.226562 49.964844 L 1.359375 50.011719 L 18.480469 50.003906 L 35.597656 50 L 35.746094 49.945312 C 35.832031 49.914062 35.917969 49.875 35.945312 49.855469 C 35.96875 49.835938 36.003906 49.824219 36.019531 49.824219 C 36.171875 49.824219 36.808594 49.167969 36.808594 49.007812 C 36.808594 48.992188 36.816406 48.96875 36.828125 48.957031 C 36.859375 48.925781 36.945312 48.664062 36.972656 48.519531 C 36.988281 48.429688 36.992188 42.332031 36.988281 24.941406 L 36.984375 1.488281 L 36.9375 1.363281 C 36.800781 0.976562 36.675781 0.765625 36.457031 0.539062 C 36.332031 0.414062 36.027344 0.1875 35.984375 0.1875 C 35.972656 0.1875 35.90625 0.160156 35.832031 0.125 C 35.757812 0.09375 35.644531 0.0507812 35.574219 0.03125 C 35.402344 -0.0117188 1.535156 -0.015625 1.359375 0.03125 M 35.59375 0.453125 C 36.039062 0.625 36.324219 0.898438 36.480469 1.3125 L 36.550781 1.488281 L 36.554688 24.941406 C 36.558594 48.089844 36.558594 48.394531 36.519531 48.539062 C 36.371094 49.085938 35.984375 49.453125 35.453125 49.5625 C 35.304688 49.589844 33.796875 49.59375 18.367188 49.589844 L 1.441406 49.582031 L 1.324219 49.539062 C 0.824219 49.34375 0.503906 49 0.398438 48.542969 L 0.355469 48.355469 L 0.363281 24.972656 L 0.367188 1.59375 L 0.414062 1.429688 C 0.558594 0.921875 1.011719 0.492188 1.496094 0.410156 C 1.523438 0.40625 9.179688 0.402344 18.511719 0.402344 L 35.472656 0.40625 L 35.59375 0.453125 M 13.578125 14.28125 C 13.097656 14.421875 12.964844 14.527344 12.785156 14.910156 C 12.550781 15.402344 12.574219 15.703125 12.882812 16.253906 C 13.089844 16.617188 13.144531 16.789062 13.152344 17.054688 L 13.160156 17.261719 L 12.96875 17.316406 C 12.867188 17.347656 12.714844 17.402344 12.628906 17.445312 C 12.546875 17.488281 12.410156 17.542969 12.332031 17.566406 C 11.742188 17.757812 11.496094 17.96875 11.082031 18.640625 C 10.976562 18.8125 10.867188 18.988281 10.839844 19.03125 C 10.625 19.375 10.167969 20.226562 9.953125 20.691406 C 9.722656 21.1875 9.78125 21.417969 10.273438 21.945312 C 10.371094 22.054688 10.53125 22.234375 10.628906 22.347656 C 10.824219 22.574219 11.320312 23.089844 11.597656 23.351562 C 11.695312 23.441406 11.839844 23.589844 11.917969 23.675781 L 12.058594 23.839844 L 12.035156 24.4375 C 12.023438 24.765625 12.003906 25.128906 12 25.246094 L 11.984375 25.457031 L 12.210938 25.542969 L 12.441406 25.628906 L 12.453125 25.957031 C 12.464844 26.25 12.445312 26.894531 12.414062 27.152344 C 12.410156 27.203125 12.394531 27.441406 12.382812 27.683594 C 12.371094 27.925781 12.347656 28.226562 12.332031 28.351562 C 12.308594 28.519531 12.300781 28.8125 12.300781 29.453125 C 12.300781 30.605469 12.28125 30.910156 12.144531 32.039062 C 12.082031 32.550781 11.996094 33.105469 11.898438 33.609375 C 11.851562 33.84375 11.839844 33.824219 12.09375 33.945312 C 12.363281 34.074219 12.363281 34.054688 12.125 34.285156 C 11.949219 34.453125 11.925781 34.46875 11.761719 34.519531 C 11.464844 34.613281 11.386719 34.726562 11.394531 35.042969 L 11.402344 35.246094 L 11.546875 35.273438 C 11.644531 35.292969 11.84375 35.296875 12.175781 35.292969 C 12.761719 35.289062 12.734375 35.296875 13.066406 34.972656 L 13.292969 34.75 L 13.375 34.832031 L 13.457031 34.910156 L 13.648438 34.820312 C 13.753906 34.769531 13.84375 34.726562 13.84375 34.726562 C 13.851562 34.722656 13.792969 34.347656 13.75 34.113281 C 13.703125 33.855469 13.695312 33.875 13.902344 33.832031 C 13.992188 33.8125 14.066406 33.796875 14.070312 33.792969 C 14.070312 33.789062 14.082031 33.347656 14.09375 32.808594 C 14.117188 31.832031 14.125 31.679688 14.203125 30.484375 C 14.226562 30.136719 14.253906 29.695312 14.265625 29.507812 C 14.289062 29.109375 14.351562 28.558594 14.40625 28.214844 C 14.453125 27.945312 14.503906 27.582031 14.523438 27.382812 C 14.539062 27.21875 14.566406 27.128906 14.582031 27.171875 C 14.601562 27.222656 14.730469 27.675781 14.828125 28.046875 C 14.945312 28.472656 15.011719 28.785156 15.070312 29.152344 C 15.09375 29.308594 15.144531 29.605469 15.183594 29.820312 C 15.222656 30.03125 15.257812 30.257812 15.265625 30.320312 C 15.273438 30.382812 15.3125 30.625 15.351562 30.859375 C 15.390625 31.09375 15.445312 31.484375 15.472656 31.726562 C 15.5 31.964844 15.546875 32.3125 15.574219 32.496094 C 15.601562 32.679688 15.640625 32.949219 15.65625 33.097656 C 15.695312 33.414062 15.675781 33.390625 15.863281 33.402344 L 16.011719 33.414062 L 16.027344 33.734375 C 16.035156 33.914062 16.046875 34.0625 16.050781 34.066406 C 16.054688 34.070312 16.214844 34.089844 16.40625 34.113281 C 16.597656 34.132812 16.785156 34.15625 16.820312 34.160156 L 16.886719 34.171875 L 16.886719 34.078125 C 16.886719 34.027344 16.898438 33.984375 16.90625 33.984375 C 16.917969 33.984375 17.011719 34.003906 17.117188 34.027344 C 17.585938 34.121094 17.691406 34.109375 18.386719 33.878906 C 18.671875 33.785156 18.910156 33.707031 18.917969 33.703125 C 18.945312 33.6875 18.851562 33.527344 18.765625 33.445312 C 18.621094 33.304688 18.507812 33.261719 18.164062 33.226562 C 17.765625 33.1875 17.417969 33.089844 17.453125 33.03125 C 17.460938 33.023438 17.570312 32.941406 17.703125 32.851562 C 17.835938 32.761719 17.949219 32.683594 17.953125 32.671875 C 17.960938 32.660156 17.910156 32.503906 17.839844 32.324219 C 17.496094 31.414062 17.335938 30.855469 17.085938 29.695312 C 17.054688 29.550781 16.980469 29.222656 16.917969 28.964844 C 16.734375 28.191406 16.652344 27.574219 16.535156 26.070312 C 16.507812 25.726562 16.496094 25.75 16.707031 25.714844 C 16.789062 25.703125 16.925781 25.675781 17.007812 25.660156 L 17.15625 25.625 L 17.101562 25.488281 C 16.707031 24.441406 16.703125 24.417969 16.773438 24.085938 C 16.875 23.625 16.945312 23.4375 17.34375 22.621094 C 17.449219 22.402344 17.605469 22.085938 17.695312 21.921875 C 18 21.351562 18.03125 21.0625 17.828125 20.722656 C 17.667969 20.460938 17.175781 19.453125 17.175781 19.390625 C 17.175781 19.367188 16.917969 18.773438 16.800781 18.523438 C 16.613281 18.128906 16.386719 17.835938 16.164062 17.691406 C 15.972656 17.566406 15.230469 17.296875 14.8125 17.203125 L 14.753906 17.1875 L 14.765625 16.972656 C 14.777344 16.792969 14.789062 16.726562 14.851562 16.566406 C 14.890625 16.464844 14.957031 16.292969 15 16.1875 C 15.230469 15.589844 15.207031 15.15625 14.921875 14.726562 C 14.71875 14.425781 13.957031 14.171875 13.578125 14.28125 M 22.792969 16.402344 C 22.316406 16.46875 21.792969 16.851562 21.644531 17.242188 C 21.519531 17.570312 21.417969 18.617188 21.484375 18.851562 C 21.519531 18.96875 21.71875 19.203125 21.910156 19.351562 C 22.042969 19.453125 22.058594 19.433594 21.71875 19.574219 C 21.554688 19.644531 21.335938 19.738281 21.234375 19.789062 C 21.128906 19.839844 21.03125 19.878906 21.019531 19.878906 C 20.949219 19.878906 20.628906 20.066406 20.535156 20.160156 C 20.355469 20.339844 20.167969 20.769531 19.882812 21.632812 C 19.804688 21.875 19.695312 22.207031 19.644531 22.371094 C 19.472656 22.894531 19.484375 23.078125 19.714844 23.375 C 20.070312 23.832031 20.359375 24.261719 20.691406 24.816406 L 20.871094 25.117188 L 20.8125 25.296875 C 20.753906 25.480469 20.613281 25.941406 20.507812 26.308594 C 20.390625 26.703125 20.257812 27.289062 20.183594 27.730469 C 20.097656 28.265625 20.09375 28.222656 20.1875 28.261719 C 20.640625 28.449219 20.78125 28.503906 20.882812 28.527344 C 21.019531 28.558594 21 28.488281 21.074219 29.148438 C 21.125 29.605469 21.273438 30.488281 21.351562 30.800781 C 21.375 30.890625 21.410156 31.078125 21.433594 31.21875 C 21.484375 31.523438 21.644531 32.332031 21.703125 32.574219 C 21.753906 32.78125 21.824219 33.214844 21.839844 33.40625 C 21.859375 33.640625 21.746094 34.054688 21.441406 34.820312 C 21.269531 35.257812 21.359375 35.558594 21.671875 35.585938 C 21.875 35.601562 22.027344 35.507812 22.34375 35.171875 C 23.167969 34.285156 23.28125 33.875 22.855469 33.304688 C 22.605469 32.972656 22.574219 32.175781 22.757812 30.945312 C 22.863281 30.253906 22.835938 29.824219 22.664062 29.386719 C 22.53125 29.054688 22.53125 29.0625 22.617188 29.082031 C 22.652344 29.089844 22.757812 29.105469 22.847656 29.121094 L 23.007812 29.144531 L 23.015625 29.507812 L 23.019531 29.871094 L 23.105469 30.132812 C 23.15625 30.273438 23.21875 30.449219 23.246094 30.515625 C 23.351562 30.769531 23.671875 31.667969 23.925781 32.441406 C 24 32.660156 24 32.660156 23.976562 32.871094 C 23.9375 33.289062 23.988281 33.496094 24.222656 33.820312 C 24.289062 33.917969 24.414062 34.09375 24.5 34.214844 C 25.066406 35.03125 25.425781 34.773438 25.265625 33.660156 C 25.226562 33.371094 25.1875 33.28125 24.988281 33.015625 C 24.613281 32.515625 24.5 31.875 24.628906 30.980469 C 24.730469 30.28125 24.535156 29.546875 24.160156 29.195312 C 23.925781 28.972656 23.933594 28.953125 24.273438 28.890625 C 24.875 28.78125 25.640625 28.523438 26.164062 28.257812 C 26.308594 28.183594 26.308594 28.183594 26.230469 27.992188 L 26.171875 27.84375 L 26.261719 27.742188 C 26.382812 27.609375 26.574219 27.359375 26.667969 27.210938 L 26.742188 27.089844 L 26.59375 26.917969 C 26.425781 26.722656 26.222656 26.480469 26.007812 26.210938 C 25.929688 26.113281 25.824219 25.980469 25.769531 25.917969 L 25.671875 25.804688 L 25.792969 25.460938 C 25.972656 24.941406 26.277344 23.945312 26.339844 23.652344 C 26.445312 23.171875 26.351562 22.546875 26.015625 21.535156 C 25.578125 20.203125 25.289062 19.894531 24.199219 19.578125 C 23.988281 19.519531 23.929688 19.441406 24.0625 19.40625 C 24.414062 19.308594 24.519531 18.90625 24.378906 18.210938 C 24.347656 18.066406 24.3125 17.851562 24.292969 17.726562 C 24.1875 16.96875 23.746094 16.46875 23.132812 16.410156 C 23.066406 16.402344 22.992188 16.394531 22.964844 16.390625 C 22.933594 16.386719 22.859375 16.394531 22.792969 16.402344 M 15.832031 19.820312 C 15.964844 19.964844 16.09375 20.128906 16.214844 20.300781 C 16.265625 20.378906 16.359375 20.5 16.414062 20.570312 C 16.472656 20.644531 16.539062 20.738281 16.558594 20.78125 L 16.601562 20.859375 L 16.390625 21.289062 C 16.277344 21.527344 16.179688 21.726562 16.171875 21.734375 C 16.105469 21.800781 15.78125 20.542969 15.742188 20.078125 C 15.734375 19.996094 15.726562 19.882812 15.71875 19.820312 C 15.710938 19.761719 15.714844 19.710938 15.722656 19.710938 C 15.726562 19.710938 15.777344 19.761719 15.832031 19.820312 M 12.058594 21.164062 C 12.066406 21.59375 12.0625 21.941406 12.054688 21.941406 C 12.03125 21.941406 11.390625 20.972656 11.390625 20.9375 C 11.390625 20.914062 11.433594 20.84375 11.609375 20.566406 C 11.65625 20.492188 11.746094 20.351562 11.804688 20.253906 C 11.863281 20.15625 11.9375 20.039062 11.96875 19.996094 L 12.023438 19.914062 L 12.035156 20.152344 C 12.042969 20.28125 12.054688 20.738281 12.058594 21.164062 M 24.847656 22.230469 C 25.078125 22.710938 25.074219 22.683594 25 23.222656 C 24.984375 23.351562 24.96875 23.523438 24.96875 23.609375 C 24.96875 23.796875 24.910156 24.300781 24.882812 24.324219 C 24.84375 24.367188 24.699219 23.761719 24.625 23.246094 C 24.558594 22.808594 24.59375 21.898438 24.675781 21.902344 C 24.683594 21.902344 24.757812 22.046875 24.847656 22.230469 M 21.257812 22.640625 C 21.273438 23.140625 21.257812 23.691406 21.230469 23.691406 C 21.21875 23.691406 21.191406 23.65625 20.976562 23.339844 L 20.855469 23.160156 L 20.90625 22.941406 C 20.992188 22.566406 21.1875 22.058594 21.226562 22.101562 C 21.238281 22.109375 21.25 22.355469 21.257812 22.640625 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9c.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9c.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9c.svg	(revision 36424)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="63px" height="50px" viewBox="0 0 63 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 0 48.726562 C 0 49.066406 0.132812 49.386719 0.375 49.628906 C 0.613281 49.867188 0.9375 50 1.277344 50 L 61.722656 50 C 62.425781 50 63 49.429688 63 48.726562 L 63 1.269531 C 63 0.929688 62.867188 0.613281 62.625 0.371094 C 62.386719 0.132812 62.0625 0 61.722656 0 L 1.277344 0 C 0.9375 0 0.613281 0.132812 0.375 0.371094 C 0.132812 0.613281 0 0.929688 0 1.269531 Z M 0 48.726562 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 0.421875 1.269531 C 0.421875 0.800781 0.804688 0.417969 1.277344 0.417969 L 61.722656 0.417969 C 61.953125 0.417969 62.167969 0.507812 62.328125 0.667969 C 62.488281 0.828125 62.578125 1.042969 62.578125 1.269531 L 62.578125 48.726562 C 62.578125 48.957031 62.488281 49.167969 62.328125 49.332031 C 62.167969 49.492188 61.953125 49.582031 61.722656 49.582031 L 1.277344 49.582031 C 1.046875 49.582031 0.832031 49.492188 0.671875 49.332031 C 0.511719 49.167969 0.421875 48.957031 0.421875 48.726562 L 0.421875 1.269531 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 1.980469 1.964844 L 61.039062 1.964844 L 61.039062 48.042969 L 1.980469 48.042969 Z M 1.980469 1.964844 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 13.441406 18.433594 C 14.875 18.433594 16.039062 17.195312 16.039062 15.671875 C 16.039062 14.144531 14.875 12.90625 13.441406 12.90625 C 12.007812 12.90625 10.847656 14.144531 10.847656 15.671875 C 10.847656 17.195312 12.007812 18.433594 13.441406 18.433594 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 9.667969 28.957031 L 9.667969 31.351562 L 5.226562 38.238281 C 5.226562 38.238281 4.769531 38.824219 5.089844 39.3125 C 5.410156 39.800781 6.464844 41.558594 6.464844 41.558594 C 6.464844 41.558594 6.832031 41.898438 7.15625 41.558594 C 7.476562 41.214844 7.199219 40.921875 7.199219 40.921875 L 6.925781 40.238281 L 12.019531 32.453125 L 12.019531 40.238281 C 12.019531 41.070312 12.386719 41.167969 12.386719 41.167969 L 14.636719 42.78125 L 15.230469 42.09375 L 14.359375 41.019531 L 14.359375 28.957031 L 9.667969 28.957031 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 14.359375 28.515625 L 14.359375 26.226562 L 16.605469 27.636719 C 16.605469 27.636719 17.894531 28.078125 18.445312 27.441406 C 18.996094 26.808594 19.132812 26.613281 19.132812 26.613281 C 19.132812 26.613281 19.394531 26.257812 18.945312 25.96875 C 18.605469 25.75 15.746094 23.957031 14.359375 23.085938 L 14.359375 20.703125 C 14.359375 19.285156 13.210938 18.941406 13.210938 18.941406 L 11.882812 18.503906 C 11.332031 18.308594 11.007812 18.796875 11.007812 18.796875 C 11.007812 18.796875 6.007812 25.929688 5.320312 26.90625 C 4.628906 27.882812 5.136719 28.90625 5.136719 28.90625 L 5.914062 30.175781 L 9.667969 24.949219 L 9.667969 28.515625 L 14.359375 28.515625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 25.007812 42.164062 C 26.082031 42.164062 26.953125 41.238281 26.953125 40.09375 C 26.953125 38.949219 26.082031 38.019531 25.007812 38.019531 C 23.929688 38.019531 23.058594 38.949219 23.058594 40.09375 C 23.058594 41.238281 23.929688 42.164062 25.007812 42.164062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 35.929688 30.695312 C 36.933594 30.695312 37.746094 29.828125 37.746094 28.761719 C 37.746094 27.691406 36.933594 26.828125 35.929688 26.828125 C 34.925781 26.828125 34.113281 27.691406 34.113281 28.761719 C 34.113281 29.828125 34.925781 30.695312 35.929688 30.695312 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 31.652344 34.476562 L 34.351562 31.429688 C 34.351562 31.429688 34.667969 30.933594 35.25 30.933594 L 37.109375 30.933594 C 37.109375 30.933594 37.488281 30.96875 37.835938 31.363281 L 40.425781 34.40625 L 39.820312 35.84375 L 37.652344 33.296875 L 37.59375 35.148438 L 38.453125 37.382812 L 40.65625 37.453125 L 41.136719 39.140625 L 37.902344 38.992188 L 36.214844 37.308594 L 35.921875 42.363281 L 34.230469 42.488281 L 34.765625 33.222656 L 32.617188 35.648438 L 31.652344 34.476562 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 56.902344 41.65625 L 56.902344 38.089844 L 48.410156 30.46875 C 48.410156 30.46875 47.078125 29.445312 44.234375 25.636719 C 41.390625 21.824219 41.617188 17.625 41.617188 17.625 L 40.332031 17.625 C 40.332031 17.625 40.386719 23.382812 42.582031 26.660156 C 45.199219 30.566406 47.355469 32.523438 47.355469 32.523438 L 56.902344 41.65625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 51.964844 7.828125 L 51.734375 7.664062 L 50.539062 8.515625 L 50.539062 7.609375 L 49.578125 7.609375 L 49.578125 9.203125 L 45.261719 12.277344 L 45.722656 13.007812 L 46.914062 12.15625 L 46.914062 24.21875 L 56.597656 24.21875 L 56.597656 12.191406 L 57.746094 13.007812 L 58.203125 12.277344 Z M 56.046875 23.632812 L 47.464844 23.632812 L 47.464844 11.765625 L 51.734375 8.722656 L 56.046875 11.796875 L 56.046875 23.632812 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 48.246094 16.304688 L 50.957031 16.304688 L 50.957031 12.59375 L 48.246094 12.59375 Z M 48.246094 16.304688 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 52.238281 16.304688 L 54.949219 16.304688 L 54.949219 12.59375 L 52.238281 12.59375 Z M 52.238281 16.304688 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 50.015625 23.996094 L 53.136719 23.996094 L 53.136719 18.183594 L 50.015625 18.183594 Z M 50.015625 23.996094 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 28.472656 15.546875 C 27.347656 15.546875 24.945312 15.039062 24.632812 14.96875 L 24.632812 17.414062 C 24.632812 17.597656 24.492188 17.746094 24.320312 17.746094 L 22.675781 17.746094 C 22.5 17.746094 22.363281 17.597656 22.363281 17.414062 L 22.363281 15.046875 C 21.980469 14.832031 21.804688 14.570312 21.605469 13.9375 C 21.160156 12.515625 21.605469 11.335938 21.8125 10.933594 C 21.941406 10.675781 22.640625 10.476562 23.125 10.367188 L 25.09375 6.683594 L 31.917969 6.683594 L 33.886719 10.367188 C 34.371094 10.476562 35.066406 10.675781 35.199219 10.933594 C 35.40625 11.335938 35.851562 12.515625 35.40625 13.9375 C 35.207031 14.570312 35.03125 14.832031 34.648438 15.046875 L 34.648438 17.414062 C 34.648438 17.597656 34.507812 17.746094 34.335938 17.746094 L 32.691406 17.746094 C 32.515625 17.746094 32.378906 17.597656 32.378906 17.414062 L 32.378906 14.96875 C 32.066406 15.039062 29.664062 15.546875 28.539062 15.546875 Z M 33.203125 10.269531 L 31.597656 7.269531 L 25.414062 7.269531 L 23.808594 10.269531 Z M 23.1875 13.390625 C 23.78125 13.390625 24.257812 12.882812 24.257812 12.25 C 24.257812 11.621094 23.78125 11.113281 23.1875 11.113281 C 22.597656 11.113281 22.117188 11.621094 22.117188 12.25 C 22.117188 12.882812 22.597656 13.390625 23.1875 13.390625 Z M 34.894531 12.25 C 34.894531 11.621094 34.414062 11.113281 33.824219 11.113281 C 33.230469 11.113281 32.753906 11.621094 32.753906 12.25 C 32.753906 12.882812 33.230469 13.390625 33.824219 13.390625 C 34.414062 13.390625 34.894531 12.882812 34.894531 12.25 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9e.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9e.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_53_9e.svg	(revision 36424)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="40px" height="50px" viewBox="0 0 40 50" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 38.984375 50 C 39.253906 50 39.511719 49.894531 39.703125 49.703125 C 39.894531 49.511719 40 49.257812 40 48.988281 L 40 1.011719 C 40 0.742188 39.894531 0.488281 39.703125 0.296875 C 39.511719 0.105469 39.253906 0 38.984375 0 L 1.015625 0 C 0.457031 0 0 0.453125 0 1.011719 L 0 48.988281 C 0 49.257812 0.105469 49.511719 0.296875 49.703125 C 0.488281 49.894531 0.746094 50 1.015625 50 Z M 38.984375 50 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 1.015625 49.664062 C 0.835938 49.664062 0.664062 49.59375 0.535156 49.464844 C 0.40625 49.339844 0.335938 49.167969 0.335938 48.988281 L 0.335938 1.011719 C 0.335938 0.832031 0.40625 0.660156 0.535156 0.535156 C 0.664062 0.40625 0.835938 0.335938 1.015625 0.335938 L 38.984375 0.335938 C 39.164062 0.335938 39.335938 0.40625 39.464844 0.535156 C 39.59375 0.660156 39.664062 0.832031 39.664062 1.011719 L 39.664062 48.988281 C 39.664062 49.359375 39.359375 49.664062 38.984375 49.664062 L 1.015625 49.664062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 28.628906 32.101562 C 28.628906 33.074219 29.472656 33.867188 30.515625 33.867188 C 31.558594 33.867188 32.40625 33.074219 32.40625 32.101562 L 32.40625 27.003906 C 32.40625 26.027344 31.558594 25.238281 30.515625 25.238281 C 29.472656 25.238281 28.628906 26.027344 28.628906 27.003906 Z M 31.144531 32.101562 C 31.144531 32.425781 30.863281 32.6875 30.515625 32.6875 C 30.167969 32.6875 29.886719 32.425781 29.886719 32.101562 L 29.886719 27.003906 C 29.886719 26.675781 30.167969 26.414062 30.515625 26.414062 C 30.863281 26.414062 31.144531 26.675781 31.144531 27.003906 L 31.144531 32.101562 "/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:2.1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:4;" d="M 604.687439 778.03125 L 656.156189 665.90625 L 656.156189 665.8125 C 658.218689 660.75 659.437439 655.21875 659.437439 649.40625 C 659.437439 626.4375 640.781189 607.78125 617.812439 607.78125 C 594.749939 607.78125 576.093689 626.4375 576.093689 649.40625 L 603.656189 649.40625 C 603.656189 641.625 610.031189 635.34375 617.812439 635.34375 C 625.593689 635.34375 631.874939 641.625 631.874939 649.40625 C 631.874939 649.40625 633.093689 653.625 631.031189 659.0625 L 576.749939 778.03125 L 576.749939 806.0625 L 661.218689 806.0625 L 661.218689 778.03125 L 604.687439 778.03125 " transform="matrix(0.0416667,0,0,0.0416667,0.00000254313,0)"/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 13.289062 19.554688 C 14.0625 19.554688 14.691406 18.882812 14.691406 18.054688 C 14.691406 17.226562 14.0625 16.554688 13.289062 16.554688 C 12.515625 16.554688 11.890625 17.226562 11.890625 18.054688 C 11.890625 18.882812 12.515625 19.554688 13.289062 19.554688 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 11.253906 25.273438 L 11.253906 26.574219 L 8.859375 30.320312 C 8.859375 30.320312 8.613281 30.636719 8.785156 30.902344 C 8.960938 31.167969 9.527344 32.125 9.527344 32.125 C 9.527344 32.125 9.726562 32.308594 9.898438 32.125 C 10.074219 31.9375 9.925781 31.777344 9.925781 31.777344 L 9.777344 31.40625 L 12.523438 27.175781 L 12.523438 31.40625 C 12.523438 31.859375 12.722656 31.910156 12.722656 31.910156 L 13.933594 32.789062 L 14.253906 32.414062 L 13.785156 31.832031 L 13.785156 25.273438 L 11.253906 25.273438 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 13.785156 25.035156 L 13.785156 23.792969 L 14.996094 24.558594 C 14.996094 24.558594 15.691406 24.796875 15.988281 24.453125 C 16.285156 24.105469 16.359375 24 16.359375 24 C 16.359375 24 16.5 23.808594 16.257812 23.652344 C 16.074219 23.53125 14.53125 22.558594 13.785156 22.085938 L 13.785156 20.789062 C 13.785156 20.019531 13.167969 19.832031 13.167969 19.832031 L 12.449219 19.59375 C 12.152344 19.488281 11.980469 19.753906 11.980469 19.753906 C 11.980469 19.753906 9.28125 23.628906 8.910156 24.160156 C 8.539062 24.691406 8.8125 25.25 8.8125 25.25 L 9.230469 25.9375 L 11.253906 23.097656 L 11.253906 25.035156 L 13.785156 25.035156 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 13.273438 13.015625 C 12.378906 13.015625 10.476562 12.609375 10.226562 12.554688 L 10.226562 14.507812 C 10.226562 14.65625 10.117188 14.777344 9.980469 14.777344 L 8.671875 14.777344 C 8.535156 14.777344 8.425781 14.65625 8.425781 14.507812 L 8.425781 12.617188 C 8.121094 12.445312 7.980469 12.234375 7.824219 11.726562 C 7.46875 10.589844 7.824219 9.648438 7.988281 9.324219 C 8.09375 9.117188 8.644531 8.960938 9.03125 8.871094 L 10.589844 5.925781 L 16.007812 5.925781 L 17.570312 8.871094 C 17.957031 8.960938 18.507812 9.117188 18.613281 9.324219 C 18.777344 9.648438 19.128906 10.589844 18.777344 11.726562 C 18.621094 12.234375 18.480469 12.445312 18.175781 12.617188 L 18.175781 14.507812 C 18.175781 14.65625 18.066406 14.777344 17.929688 14.777344 L 16.621094 14.777344 C 16.484375 14.777344 16.375 14.65625 16.375 14.507812 L 16.375 12.554688 C 16.125 12.609375 14.21875 13.015625 13.328125 13.015625 Z M 17.027344 8.796875 L 15.753906 6.394531 L 10.847656 6.394531 L 9.574219 8.796875 Z M 9.078125 11.292969 C 9.550781 11.292969 9.929688 10.882812 9.929688 10.378906 C 9.929688 9.875 9.550781 9.46875 9.078125 9.46875 C 8.609375 9.46875 8.230469 9.875 8.230469 10.378906 C 8.230469 10.882812 8.609375 11.292969 9.078125 11.292969 Z M 18.371094 10.378906 C 18.371094 9.875 17.988281 9.46875 17.519531 9.46875 C 17.050781 9.46875 16.671875 9.875 16.671875 10.378906 C 16.671875 10.882812 17.050781 11.292969 17.519531 11.292969 C 17.988281 11.292969 18.371094 10.882812 18.371094 10.378906 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(93.333334%,10.980392%,13.725491%);fill-opacity:1;" d="M 18.304688 29.632812 C 18.304688 24.660156 22.621094 20.628906 27.941406 20.628906 C 33.261719 20.628906 37.578125 24.660156 37.578125 29.632812 C 37.578125 34.605469 33.261719 38.636719 27.941406 38.636719 C 22.621094 38.636719 18.304688 34.605469 18.304688 29.632812 Z M 27.941406 36.308594 C 31.886719 36.308594 35.085938 33.320312 35.085938 29.632812 C 35.085938 25.945312 31.886719 22.957031 27.941406 22.957031 C 23.996094 22.957031 20.796875 25.945312 20.796875 29.632812 C 20.796875 33.320312 23.996094 36.308594 27.941406 36.308594 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 1.671875 1.4375 L 38.445312 1.4375 L 38.445312 4.761719 L 1.671875 4.761719 Z M 1.671875 1.4375 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 1.671875 1.4375 L 6.003906 1.4375 L 6.003906 48.328125 L 1.671875 48.328125 Z M 1.671875 1.4375 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 34.171875 1.4375 L 38.503906 1.4375 L 38.503906 48.328125 L 34.171875 48.328125 Z M 34.171875 1.4375 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(9.019608%,43.529412%,75.686276%);fill-opacity:1;" d="M 1.671875 36.4375 L 38.445312 36.4375 L 38.445312 48.425781 L 1.671875 48.425781 Z M 1.671875 36.4375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 27.851562 43.617188 L 27.851562 44.289062 C 27.851562 44.636719 28.097656 44.832031 28.5 44.832031 C 29.007812 44.832031 29.125 44.589844 29.148438 44.355469 L 30.46875 44.355469 C 30.46875 44.808594 30.277344 45.15625 29.9375 45.445312 C 29.589844 45.75 29.109375 45.933594 28.5 45.933594 C 27.699219 45.933594 27.089844 45.621094 26.777344 45.144531 C 26.597656 44.863281 26.53125 44.472656 26.53125 44.03125 L 26.53125 42.226562 C 26.53125 41.78125 26.597656 41.394531 26.777344 41.113281 C 27.089844 40.636719 27.699219 40.324219 28.5 40.324219 C 29.71875 40.324219 30.46875 41.070312 30.46875 42.03125 L 30.46875 43.617188 Z M 27.851562 42.679688 L 29.148438 42.679688 L 29.148438 42.050781 C 29.148438 41.640625 28.902344 41.425781 28.5 41.425781 C 28.097656 41.425781 27.851562 41.640625 27.851562 42.050781 L 27.851562 42.679688 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 21.175781 40.414062 L 22.5 40.414062 L 22.5 40.679688 L 22.523438 40.679688 C 22.980469 40.300781 22.980469 40.300781 23.585938 40.300781 C 24.246094 40.300781 25.128906 40.703125 25.128906 41.6875 L 25.128906 45.894531 L 23.808594 45.894531 L 23.808594 42.097656 C 23.808594 41.699219 23.574219 41.449219 23.160156 41.449219 C 22.667969 41.449219 22.5 41.722656 22.5 42.207031 L 22.5 45.894531 L 21.175781 45.894531 L 21.175781 40.414062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 15.867188 42.222656 C 15.867188 41.78125 15.929688 41.390625 16.113281 41.109375 C 16.421875 40.632812 17.078125 40.320312 17.878906 40.320312 C 18.683594 40.320312 19.335938 40.632812 19.648438 41.109375 C 19.828125 41.390625 19.894531 41.777344 19.894531 42.222656 L 19.894531 44.027344 C 19.894531 44.472656 19.828125 44.859375 19.648438 45.140625 C 19.335938 45.617188 18.683594 45.929688 17.878906 45.929688 C 17.078125 45.929688 16.421875 45.617188 16.113281 45.140625 C 15.929688 44.859375 15.867188 44.472656 15.867188 44.027344 Z M 17.1875 44.199219 C 17.1875 44.613281 17.476562 44.828125 17.878906 44.828125 C 18.28125 44.828125 18.570312 44.613281 18.570312 44.199219 L 18.570312 42.050781 C 18.570312 41.640625 18.28125 41.421875 17.878906 41.421875 C 17.476562 41.421875 17.1875 41.640625 17.1875 42.050781 L 17.1875 44.199219 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 10.449219 44.929688 L 13.429688 39.242188 L 10.847656 39.242188 L 10.847656 38.203125 L 14.867188 38.203125 L 14.867188 39.082031 L 11.835938 44.863281 L 15 44.863281 L 15 45.902344 L 10.449219 45.902344 L 10.449219 44.929688 "/>
+<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 27.710938 7.585938 C 27.140625 7.703125 26.914062 8.382812 27.300781 8.808594 C 27.585938 9.117188 28.050781 9.136719 28.359375 8.847656 C 28.890625 8.347656 28.421875 7.441406 27.710938 7.585938 M 28.554688 9.074219 C 28.199219 9.191406 28.019531 9.449219 28.015625 9.859375 L 28.011719 10.097656 L 27.8125 10.554688 L 27.617188 11.011719 L 27.304688 11.089844 C 27.136719 11.132812 26.777344 11.222656 26.511719 11.285156 C 26.003906 11.402344 25.941406 11.429688 25.890625 11.527344 L 25.859375 11.585938 L 25.488281 11.585938 C 25.113281 11.589844 24.976562 11.609375 24.9375 11.671875 C 24.902344 11.726562 24.964844 11.820312 25.070312 11.878906 C 25.34375 12.027344 25.375 12.152344 25.25 12.578125 C 25.1875 12.785156 24.835938 13.886719 24.828125 13.894531 C 24.824219 13.898438 24.726562 13.878906 24.605469 13.847656 C 23.136719 13.480469 21.832031 14.523438 21.886719 16.023438 C 21.933594 17.378906 23.160156 18.308594 24.53125 18.027344 C 26.066406 17.710938 26.730469 15.746094 25.707031 14.558594 C 25.621094 14.457031 25.523438 14.371094 25.136719 14.054688 L 25.082031 14.011719 L 25.160156 13.789062 C 25.203125 13.664062 25.25 13.566406 25.261719 13.566406 C 25.304688 13.566406 25.863281 14.164062 26.582031 14.980469 C 27.199219 15.6875 27.160156 15.636719 27.132812 15.710938 C 27.042969 15.96875 27.214844 16.40625 27.449219 16.53125 C 27.515625 16.566406 27.527344 16.582031 27.527344 16.648438 C 27.527344 16.742188 27.617188 16.925781 27.691406 16.980469 C 27.9375 17.152344 28.183594 17.023438 28.304688 16.65625 L 28.355469 16.511719 L 28.59375 16.507812 C 28.875 16.5 28.847656 16.480469 28.960938 16.757812 C 29.710938 18.589844 32.378906 18.484375 33.003906 16.59375 C 33.179688 16.074219 33.160156 15.570312 32.945312 15.070312 C 32.496094 14.015625 31.421875 13.554688 30.203125 13.890625 C 30.164062 13.898438 30.152344 13.882812 30.109375 13.78125 C 30.085938 13.714844 30 13.53125 29.921875 13.371094 C 29.84375 13.214844 29.777344 13.070312 29.777344 13.050781 C 29.777344 12.996094 30 12.761719 30.148438 12.660156 C 30.390625 12.5 30.46875 12.382812 30.511719 12.121094 C 30.554688 11.839844 30.535156 11.777344 30.128906 10.847656 C 30.007812 10.570312 29.828125 10.164062 29.730469 9.9375 C 29.480469 9.359375 29.394531 9.242188 29.148438 9.113281 C 29.015625 9.046875 28.703125 9.027344 28.554688 9.074219 M 28.636719 11.484375 C 28.761719 11.785156 28.859375 12.03125 28.855469 12.035156 C 28.851562 12.039062 28.535156 12.070312 28.152344 12.105469 C 27.21875 12.195312 27.1875 12.199219 27.113281 12.25 C 27 12.332031 26.945312 12.414062 26.945312 12.503906 L 26.945312 12.585938 L 25.570312 12.585938 L 25.601562 12.496094 C 25.644531 12.382812 25.644531 12.085938 25.601562 11.964844 L 25.570312 11.878906 L 25.738281 11.878906 C 25.875 11.878906 25.914062 11.886719 25.960938 11.921875 C 26.054688 11.988281 26.207031 11.976562 26.808594 11.847656 C 27.285156 11.742188 28.042969 11.585938 28.0625 11.585938 C 28.066406 11.585938 28.140625 11.4375 28.230469 11.253906 C 28.316406 11.070312 28.394531 10.925781 28.398438 10.929688 C 28.402344 10.933594 28.511719 11.183594 28.636719 11.484375 M 26.617188 12.917969 C 26.84375 12.925781 27.035156 12.941406 27.042969 12.953125 C 27.054688 12.960938 27.21875 13.363281 27.410156 13.839844 L 27.757812 14.710938 L 27.703125 15.296875 L 27.570312 15.335938 C 27.496094 15.355469 27.414062 15.378906 27.390625 15.386719 C 27.351562 15.398438 27.316406 15.371094 27.171875 15.207031 C 26.742188 14.726562 26.089844 14 25.972656 13.878906 C 25.902344 13.804688 25.738281 13.617188 25.601562 13.464844 L 25.355469 13.1875 L 25.410156 13.03125 L 25.46875 12.875 L 25.835938 12.886719 C 26.039062 12.894531 26.390625 12.910156 26.617188 12.917969 M 28.734375 12.949219 C 28.734375 12.957031 28.625 13.117188 28.492188 13.308594 L 28.25 13.65625 L 28.199219 13.59375 C 28.097656 13.464844 27.914062 13.027344 27.945312 12.992188 C 27.964844 12.972656 28.734375 12.929688 28.734375 12.949219 M 29.726562 13.679688 C 29.890625 14.078125 29.890625 14.03125 29.710938 14.167969 C 29.289062 14.488281 28.996094 14.882812 28.902344 15.265625 L 28.878906 15.355469 L 28.734375 15.359375 C 28.65625 15.363281 28.570312 15.363281 28.542969 15.363281 C 28.488281 15.367188 28.488281 15.382812 28.539062 14.941406 C 28.578125 14.617188 28.5625 14.652344 28.910156 14.179688 C 29.476562 13.414062 29.554688 13.3125 29.570312 13.332031 C 29.582031 13.339844 29.652344 13.496094 29.726562 13.679688 M 31.332031 14.242188 C 32.542969 14.570312 33.046875 15.890625 32.34375 16.910156 C 31.640625 17.9375 29.972656 17.8125 29.433594 16.6875 C 29.3125 16.433594 29.210938 16.46875 30.296875 16.386719 C 31.117188 16.324219 31.199219 16.300781 31.300781 16.101562 C 31.421875 15.863281 31.324219 15.652344 31.027344 15.5 C 30.957031 15.46875 30.890625 15.417969 30.875 15.390625 C 30.839844 15.335938 30.363281 14.308594 30.363281 14.289062 C 30.363281 14.28125 30.480469 14.246094 30.664062 14.203125 C 30.75 14.179688 31.210938 14.207031 31.332031 14.242188 M 24.394531 14.25 C 24.535156 14.269531 24.65625 14.292969 24.664062 14.300781 C 24.746094 14.382812 24.355469 15.300781 24.117188 15.59375 C 23.875 15.894531 23.847656 15.960938 23.929688 16.054688 C 24.085938 16.242188 24.527344 15.679688 24.785156 14.957031 C 24.890625 14.664062 24.960938 14.503906 24.976562 14.503906 C 25.011719 14.503906 25.207031 14.664062 25.3125 14.78125 C 26.148438 15.691406 25.734375 17.195312 24.546875 17.566406 C 24.296875 17.644531 23.707031 17.640625 23.484375 17.554688 C 22.039062 17.011719 21.90625 15.082031 23.265625 14.398438 C 23.640625 14.210938 23.894531 14.175781 24.394531 14.25 M 30.332031 14.921875 C 30.457031 15.199219 30.5625 15.433594 30.566406 15.445312 C 30.570312 15.457031 30.523438 15.460938 30.441406 15.453125 C 30.367188 15.445312 30.121094 15.429688 29.890625 15.417969 C 29.664062 15.40625 29.4375 15.390625 29.386719 15.386719 L 29.300781 15.375 L 29.335938 15.277344 C 29.425781 15.007812 29.945312 14.417969 30.089844 14.417969 C 30.097656 14.417969 30.203125 14.644531 30.332031 14.921875 M 28.792969 15.558594 C 28.8125 15.574219 28.8125 15.617188 28.792969 15.761719 C 28.777344 15.894531 28.777344 15.996094 28.789062 16.101562 C 28.816406 16.285156 28.820312 16.28125 28.542969 16.304688 C 28.375 16.316406 28.359375 16.316406 28.359375 16.28125 C 28.359375 16.234375 28.417969 15.734375 28.433594 15.621094 L 28.449219 15.542969 L 28.605469 15.542969 C 28.695312 15.542969 28.777344 15.550781 28.792969 15.558594 M 27.644531 15.632812 C 27.636719 15.667969 27.617188 15.816406 27.601562 15.960938 C 27.582031 16.101562 27.5625 16.242188 27.554688 16.269531 L 27.546875 16.320312 L 27.492188 16.269531 C 27.289062 16.082031 27.300781 15.800781 27.523438 15.632812 C 27.636719 15.546875 27.660156 15.546875 27.644531 15.632812 M 29.589844 15.625 C 29.746094 15.636719 30.105469 15.660156 30.394531 15.679688 C 31.050781 15.722656 31.132812 15.746094 31.132812 15.910156 C 31.132812 16.105469 31 16.148438 30.332031 16.171875 C 30.042969 16.179688 29.6875 16.195312 29.539062 16.207031 C 29.371094 16.21875 29.257812 16.21875 29.246094 16.207031 C 29.222656 16.183594 29.21875 15.699219 29.242188 15.640625 C 29.257812 15.601562 29.234375 15.601562 29.589844 15.625 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_54_f.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_54_f.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_54_f.svg	(revision 36424)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="122px" height="80px" viewBox="0 0 122 80" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 120.484375 1.507812 C 119.503906 0.53125 118.207031 0 116.828125 0 L 5.179688 0 C 2.320312 0 0 2.300781 0 5.132812 L 0 74.867188 C 0 76.238281 0.539062 77.523438 1.515625 78.5 C 2.496094 79.46875 3.792969 80 5.179688 80 L 116.828125 80 C 118.207031 80 119.503906 79.46875 120.484375 78.5 C 121.460938 77.523438 122 76.238281 122 74.867188 L 122 5.132812 C 122 3.761719 121.460938 2.476562 120.484375 1.507812 Z M 120.484375 1.507812 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 120.910156 74.867188 C 120.910156 77.101562 119.078125 78.917969 116.828125 78.917969 L 5.179688 78.917969 C 4.082031 78.917969 3.058594 78.5 2.28125 77.730469 C 1.511719 76.96875 1.089844 75.949219 1.089844 74.867188 L 1.089844 5.132812 C 1.089844 4.050781 1.511719 3.03125 2.28125 2.269531 C 3.058594 1.5 4.082031 1.082031 5.179688 1.082031 L 116.828125 1.082031 C 117.917969 1.082031 118.941406 1.5 119.710938 2.269531 C 120.488281 3.03125 120.910156 4.050781 120.910156 5.132812 L 120.910156 74.867188 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 92.164062 46.042969 L 89.714844 41.832031 L 80.042969 47.367188 L 67.171875 40 L 80.042969 32.632812 L 89.714844 38.167969 L 92.164062 33.957031 L 84.949219 29.824219 L 91.984375 25.800781 L 88.898438 20.5 L 81.863281 24.53125 L 81.855469 16.269531 L 76.957031 16.269531 L 76.957031 27.332031 L 64.085938 34.699219 L 64.085938 19.96875 L 73.753906 14.429688 L 71.300781 10.226562 L 64.085938 14.355469 L 64.085938 6.300781 L 57.914062 6.300781 L 57.914062 14.355469 L 50.699219 10.226562 L 48.246094 14.429688 L 57.914062 19.96875 L 57.914062 34.699219 L 45.042969 27.332031 L 45.042969 16.269531 L 40.136719 16.269531 L 40.136719 24.53125 L 33.101562 20.5 L 30.015625 25.800781 L 37.050781 29.824219 L 29.835938 33.957031 L 32.285156 38.167969 L 41.957031 32.632812 L 54.828125 40 L 41.957031 47.367188 L 32.285156 41.832031 L 29.835938 46.042969 L 37.050781 50.175781 L 30.015625 54.199219 L 33.101562 59.5 L 40.144531 55.46875 L 40.144531 63.730469 L 45.042969 63.730469 L 45.042969 52.667969 L 57.914062 45.300781 L 57.914062 60.03125 L 48.246094 65.570312 L 50.699219 69.773438 L 57.914062 65.644531 L 57.914062 73.699219 L 64.085938 73.699219 L 64.085938 65.644531 L 71.300781 69.773438 L 73.753906 65.570312 L 64.085938 60.03125 L 64.085938 45.300781 L 76.957031 52.667969 L 76.957031 63.730469 L 81.863281 63.730469 L 81.863281 55.46875 L 88.898438 59.5 L 91.984375 54.199219 L 84.949219 50.175781 L 92.164062 46.042969 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_54_g.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_54_g.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_54_g.svg	(revision 36424)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="122px" height="80px" viewBox="0 0 122 80" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 120.484375 1.5 C 119.503906 0.53125 118.207031 0 116.828125 0 L 5.171875 0 C 2.320312 0 0 2.300781 0 5.132812 L 0 74.867188 C 0 76.238281 0.539062 77.523438 1.515625 78.492188 C 2.496094 79.46875 3.792969 80 5.171875 80 L 116.828125 80 C 118.207031 80 119.503906 79.46875 120.484375 78.492188 C 121.460938 77.523438 122 76.238281 122 74.867188 L 122 5.132812 C 122 3.761719 121.460938 2.46875 120.484375 1.5 Z M 120.484375 1.5 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 120.910156 74.867188 C 120.910156 77.101562 119.078125 78.917969 116.828125 78.917969 L 5.171875 78.917969 C 4.082031 78.917969 3.058594 78.5 2.289062 77.730469 C 1.515625 76.96875 1.089844 75.949219 1.089844 74.867188 L 1.089844 5.132812 C 1.089844 4.050781 1.515625 3.03125 2.289062 2.269531 C 3.058594 1.5 4.082031 1.082031 5.171875 1.082031 L 116.828125 1.082031 C 117.917969 1.082031 118.941406 1.5 119.710938 2.269531 C 120.484375 3.03125 120.910156 4.050781 120.910156 5.132812 L 120.910156 74.867188 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 32.035156 46.613281 L 28.09375 44.78125 L 18.878906 64.25 L 22.824219 66.082031 L 32.035156 46.613281 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 40.859375 46.257812 L 36.914062 44.417969 L 27.539062 64.238281 L 31.484375 66.070312 L 40.859375 46.257812 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 47.886719 49.667969 L 43.945312 47.835938 L 36.207031 64.1875 L 40.152344 66.023438 L 47.886719 49.667969 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 54.691406 53.613281 L 50.746094 51.773438 L 44.808594 64.320312 L 48.753906 66.15625 L 54.691406 53.613281 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 63.601562 52.949219 L 59.65625 51.113281 L 53.394531 64.351562 L 57.339844 66.179688 L 63.601562 52.949219 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 74.105469 49.09375 L 70.15625 47.257812 L 62.089844 64.304688 L 66.035156 66.136719 L 74.105469 49.09375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 82.722656 49.164062 L 78.777344 47.324219 L 70.714844 64.367188 L 74.65625 66.207031 L 82.722656 49.164062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 91.242188 49.414062 L 87.296875 47.574219 L 79.398438 64.273438 L 83.34375 66.113281 L 91.242188 49.414062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 42.289062 24.9375 L 38.34375 23.105469 L 29.132812 42.582031 L 33.078125 44.414062 L 42.289062 24.9375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 51.054688 24.707031 L 47.109375 22.867188 L 37.898438 42.34375 L 41.84375 44.175781 L 51.054688 24.707031 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 55.796875 32.949219 L 52.890625 28.914062 L 45.253906 45.0625 L 49.199219 46.898438 L 55.796875 32.949219 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 62.960938 36.132812 L 58.855469 34.636719 L 51.5625 50.042969 L 55.507812 51.882812 L 62.960938 36.132812 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 72.015625 35.15625 L 73.960938 31.050781 L 67.03125 35.519531 L 60.804688 48.6875 L 64.75 50.523438 L 72.015625 35.15625 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 84.628906 26.851562 L 80.683594 25.019531 L 71.472656 44.488281 L 75.417969 46.320312 L 84.628906 26.851562 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 93.25 26.917969 L 89.300781 25.082031 L 80.085938 44.554688 L 84.03125 46.386719 L 93.25 26.917969 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 101.765625 27.167969 L 97.820312 25.332031 L 88.609375 44.804688 L 92.554688 46.636719 L 101.765625 27.167969 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 118.4375 13.230469 L 116.910156 13.230469 L 111.992188 13.226562 C 111.992188 13.226562 110.011719 13.226562 110.011719 13.226562 L 110.449219 14.96875 C 110.410156 15.363281 110.136719 16.019531 108.109375 16.019531 C 107.394531 16.019531 106.171875 15.917969 105.847656 15.289062 C 105.789062 14.9375 105.777344 14.769531 105.773438 14.726562 L 105.773438 13.226562 L 97.921875 13.226562 L 97.871094 14.707031 C 97.863281 14.882812 97.878906 15.15625 97.925781 15.988281 L 97.957031 16.507812 C 97.957031 16.507812 97.957031 16.539062 97.957031 16.539062 L 97.957031 16.5625 C 98.210938 19.144531 97.972656 22.488281 96.585938 24.136719 C 96.132812 24.667969 95.300781 25.375 93.222656 25.375 C 91.519531 25.375 90.277344 24.90625 89.316406 23.90625 C 86.898438 21.363281 86.835938 16.324219 86.847656 15.304688 C 86.859375 15.019531 86.859375 14.835938 86.859375 14.789062 L 86.871094 13.25 L 85.324219 13.242188 L 80.40625 13.226562 L 78.953125 13.21875 L 78.863281 14.664062 C 78.859375 14.730469 78.859375 14.789062 78.859375 14.863281 L 78.859375 15.1875 C 78.71875 18.179688 77.410156 32.757812 65.082031 32.757812 C 61.683594 32.757812 59.085938 31.757812 57.144531 29.707031 C 52.398438 24.699219 52.898438 14.945312 52.90625 14.851562 L 53.011719 13.226562 L 51.363281 13.226562 L 46.371094 13.238281 L 45.234375 13.238281 L 44.898438 14.3125 C 44.296875 16.230469 42.300781 20.695312 36.765625 20.695312 C 34.320312 20.695312 32.652344 19.875 31.667969 18.195312 C 30.839844 16.773438 30.757812 15.195312 30.75 14.738281 L 30.730469 13.226562 L 29.203125 13.226562 L 24.292969 13.230469 L 23 13.238281 L 22.773438 14.492188 C 22.585938 15.53125 21.722656 17.273438 18.066406 17.273438 C 14.367188 17.273438 13.398438 15.488281 13.148438 14.417969 L 12.878906 13.230469 L 11.644531 13.230469 L 6.671875 13.226562 L 5.023438 13.226562 L 5.128906 14.863281 C 5.398438 18.855469 9.148438 25.195312 18.066406 25.195312 C 20.976562 25.195312 23.484375 24.550781 25.546875 23.273438 C 28.03125 26.730469 31.949219 28.617188 36.765625 28.617188 C 40.292969 28.617188 43.511719 27.59375 46.195312 25.648438 C 47.28125 29.488281 48.992188 32.667969 51.304688 35.113281 C 54.792969 38.800781 59.425781 40.675781 65.082031 40.675781 C 73.347656 40.675781 79.628906 36.71875 83.386719 29.199219 C 83.417969 29.242188 83.453125 29.28125 83.492188 29.324219 C 85.996094 31.957031 89.269531 33.292969 93.222656 33.292969 C 97.195312 33.292969 100.484375 31.875 102.730469 29.195312 C 103.984375 27.699219 104.882812 25.851562 105.433594 23.6875 C 106.273438 23.851562 107.171875 23.9375 108.109375 23.9375 C 111.410156 23.9375 114.035156 22.957031 115.925781 21.011719 C 118.292969 18.574219 118.457031 15.605469 118.449219 14.75 L 118.4375 13.230469 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 116.910156 14.761719 L 111.992188 14.757812 C 112.003906 14.804688 112.003906 14.804688 112.003906 14.804688 C 112.003906 15.832031 111.496094 17.550781 108.109375 17.550781 C 105.628906 17.550781 104.6875 16.617188 104.355469 15.71875 C 104.230469 15 104.230469 14.757812 104.230469 14.757812 L 99.414062 14.757812 C 99.40625 14.898438 99.449219 15.523438 99.5 16.417969 C 99.726562 18.792969 99.664062 22.867188 97.769531 25.117188 C 96.753906 26.320312 95.269531 26.90625 93.222656 26.90625 C 91.09375 26.90625 89.441406 26.269531 88.195312 24.957031 C 85.40625 22.03125 85.28125 16.707031 85.304688 15.269531 C 85.3125 14.988281 85.316406 14.8125 85.316406 14.773438 L 80.402344 14.757812 C 80.402344 14.804688 80.402344 14.882812 80.402344 15.230469 C 80.261719 18.320312 78.878906 34.28125 65.082031 34.28125 C 61.238281 34.28125 58.273438 33.132812 56.019531 30.757812 C 50.777344 25.230469 51.363281 14.863281 51.367188 14.757812 L 46.378906 14.769531 C 45.8125 16.554688 43.5 22.226562 36.765625 22.226562 C 29.671875 22.226562 29.222656 16.007812 29.207031 14.757812 L 24.292969 14.761719 C 24.097656 15.8125 23.105469 18.804688 18.066406 18.804688 C 13.0625 18.804688 11.90625 15.886719 11.644531 14.761719 L 6.671875 14.757812 C 6.878906 17.78125 9.871094 23.664062 18.066406 23.664062 C 21.695312 23.664062 24.242188 22.554688 25.980469 21.0625 C 28.0625 24.949219 31.878906 27.085938 36.765625 27.085938 C 41.40625 27.085938 44.773438 25.226562 47.109375 22.851562 C 47.84375 26.554688 49.363281 30.820312 52.433594 34.070312 C 55.613281 37.4375 59.871094 39.144531 65.082031 39.144531 C 73.367188 39.144531 79.511719 34.824219 82.851562 26.648438 C 82.914062 26.492188 82.972656 26.335938 83.035156 26.1875 C 83.480469 26.925781 84.007812 27.632812 84.613281 28.273438 C 86.816406 30.585938 89.714844 31.761719 93.222656 31.761719 C 96.722656 31.761719 99.601562 30.539062 101.546875 28.210938 C 103.125 26.332031 103.902344 24 104.253906 21.78125 C 105.375 22.195312 106.667969 22.40625 108.109375 22.40625 C 110.976562 22.40625 113.226562 21.582031 114.8125 19.957031 C 116.808594 17.898438 116.910156 15.351562 116.910156 14.761719 "/>
+</g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/AT/AT_FKV_1_9.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/AT/AT_FKV_1_9.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/AT/AT_FKV_1_9.svg	(revision 36424)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="13.229166mm"
+   height="13.229166mm"
+   viewBox="0 0 13.229166 13.229166"
+   version="1.1"
+   id="svg8"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
+   sodipodi:docname="Zeichnung.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.959798"
+     inkscape:cx="-3.5277981"
+     inkscape:cy="42.463169"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     inkscape:document-rotation="0"
+     showgrid="false"
+     inkscape:window-width="1294"
+     inkscape:window-height="1040"
+     inkscape:window-x="2154"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     lock-margins="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata5">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-4.4495653,-5.0861458)">
+    <g
+       id="surface1"
+       transform="matrix(0.26458333,0,0,0.26458333,4.4495653,5.0861458)">
+      <path
+         style="fill:#ee1921;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="M 0,25 C 0,11.195312 11.191406,0 25,0 38.808594,0 50,11.195312 50,25 50,38.808594 38.808594,50 25,50 11.191406,50 0,38.808594 0,25 Z m 0,0"
+         id="path833" />
+      <path
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 24.953125,43.539062 c 10.210937,0 18.488281,-8.28125 18.488281,-18.492187 0,-10.210937 -8.277344,-18.488281 -18.488281,-18.488281 -10.210937,0 -18.492187,8.277344 -18.492187,18.488281 0,10.210937 8.28125,18.492187 18.492187,18.492187"
+         id="path835" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.46944px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="7.5955424"
+       y="11.255309"
+       id="text855"><tspan
+         sodipodi:role="line"
+         x="7.5955424"
+         y="11.255309"
+         style="font-size:2.46944px;stroke-width:0.264583"
+         id="tspan875">Forst-</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.46944px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="7.3222365"
+       y="13.803344"
+       id="text881"><tspan
+         sodipodi:role="line"
+         id="tspan879"
+         x="7.3222365"
+         y="13.803344"
+         style="font-size:2.46944px;stroke-width:0.264583">straße</tspan></text>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1010-51.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1010-51.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1010-51.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 90 50" width="90pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m89.425781 0h.574219v50h-.574219zm0 0"/></clipPath><path d="m6 .046875c-3.285156 0-5.953125 2.699219-5.953125 6.015625v37.878906c0 3.316406 2.667969 6.011719 5.953125 6.011719h78c3.285156 0 5.953125-2.695313 5.953125-6.011719v-37.878906c0-3.316406-2.667969-6.015625-5.953125-6.015625" fill="#fff"/><path d="m6 49.910156c-3.261719 0-5.9101562-2.679687-5.9101562-5.96875v-37.878906c0-3.292969 2.6484372-5.9726562 5.9101562-5.9726562h78c3.261719 0 5.910156 2.6796872 5.910156 5.9726562v37.878906c0 3.289063-2.648437 5.96875-5.910156 5.96875zm78-49.910156h-78c-3.316406 0-6 2.714844-6 6.0625v37.878906c0 3.34375 2.683594 6.058594 6 6.058594h78c3.3125 0 6-2.714844 6-6.058594v-37.878906c0-3.347656-2.6875-6.0625-6-6.0625"/><path d="m6 46.210938h78c1.242188 0 2.25-1.015626 2.25-2.269532v-37.878906c0-1.257812-1.007812-2.273438-2.25-2.273438h-78c-1.242188 0-2.25 1.015626-2.25 2.273438v37.878906c0 1.253906 1.007812 2.269532 2.25 2.269532zm0 2.273437c-2.488281 0-4.5-2.035156-4.5-4.542969v-37.878906c0-2.511719 2.011719-4.546875 4.5-4.546875h78c2.488281 0 4.5 2.035156 4.5 4.546875v37.878906c0 2.507813-2.011719 4.542969-4.5 4.542969"/><path d="m34.773438 11.363281v19.285157h39.542968v-19.285157zm-2.726563 4.820313-11.816406.746094c-.539063.035156-1.003907.386718-1.191407.894531l-3.011718 8.101562c-.226563.617188-.34375 1.273438-.34375 1.933594v7.609375c0 .761719.609375 1.378906 1.363281 1.378906h.679687c0-3.425781 2.746094-6.199218 6.136719-6.199218s6.136719 2.773437 6.136719 6.199218h24.546875c0-1.871094.839844-3.640625 2.277344-4.820312h-24.777344zm-4.773437 2.414062v6.882813l-9.050782 1.078125c-.027344.003906-.054687.003906-.082031.003906-.375 0-.683594-.308594-.683594-.691406 0-.082032.019531-.160156.046875-.238282l2.285156-6.15625c.09375-.253906.324219-.429687.59375-.445312zm-3.410157 13.429688c-2.632812 0-4.769531 2.15625-4.769531 4.820312 0 2.660156 2.136719 4.820313 4.769531 4.820313 2.636719 0 4.773438-2.160157 4.773438-4.820313 0-2.664062-2.136719-4.820312-4.773438-4.820312zm36.820313 0c-2.632813 0-4.773438 2.15625-4.773438 4.820312 0 2.660156 2.140625 4.820313 4.773438 4.820313 2.636718 0 4.773437-2.160157 4.773437-4.820313 0-2.664062-2.136719-4.820312-4.773437-4.820312zm3.855468 0c1.441407 1.179687 2.28125 2.949218 2.28125 4.820312h3.40625l4.089844-1.378906v-3.441406zm0 0"/><g clip-path="url(#a)" fill="none" stroke-miterlimit="10"><path d="m476.791667 530.475v11.34375m-8.5-19.861875h-11.333334m615.125 8.518125v11.34375m8.5-19.861875h11.333334m-615.125-850.389375v-11.34375m-8.5 19.84125h-11.333334m615.125-8.4975v-11.34375m8.5 19.84125h11.333334" stroke="#fff" stroke-width=".5" transform="matrix(.1875 0 0 -.189394 0 50)"/><path d="m476.791667 530.475v11.34375m-8.5-19.861875h-11.333334m615.125 8.518125v11.34375m8.5-19.861875h11.333334m-615.125-850.389375v-11.34375m-8.5 19.84125h-11.333334m615.125-8.4975v-11.34375m8.5 19.84125h11.333334" stroke="#000" stroke-width=".25" transform="matrix(.1875 0 0 -.189394 0 50)"/><path d="m750.4375 542.47875h48m-48-882.915h48m-342.145833 465.465v-48.015m636.291666 48.015v-48.015m-318.145833 477.448125v-23.986875m0-858.9075v-24.0075m-330.145833 453.46125h24m612.291666 0h24m-330.145833 441.4575h6c0-3.320625-2.6875-6.001875-6-6.001875s-6 2.68125-6 6.001875c0 3.3 2.6875 5.98125 6 5.98125s6-2.68125 6-5.98125m-6-882.915h6c0-3.3-2.6875-6.001875-6-6.001875s-6 2.701875-6 6.001875c0 3.320625 2.6875 6.001875 6 6.001875s6-2.68125 6-6.001875m-324.145833 441.4575h6c0-3.320625-2.6875-6.001875-6-6.001875s-6 2.68125-6 6.001875 2.6875 6.001875 6 6.001875 6-2.68125 6-6.001875m630.291666 0h6c0-3.320625-2.6875-6.001875-6-6.001875s-6 2.68125-6 6.001875 2.6875 6.001875 6 6.001875 6-2.68125 6-6.001875" stroke="#fff" stroke-width=".5" transform="matrix(.1875 0 0 -.189394 0 50)"/><path d="m750.4375 542.47875h48m-48-882.915h48m-342.145833 465.465v-48.015m636.291666 48.015v-48.015m-318.145833 477.448125v-23.986875m0-858.9075v-24.0075m-330.145833 453.46125h24m612.291666 0h24m-330.145833 441.4575h6c0-3.320625-2.6875-6.001875-6-6.001875s-6 2.68125-6 6.001875c0 3.3 2.6875 5.98125 6 5.98125s6-2.68125 6-5.98125m-6-882.915h6c0-3.3-2.6875-6.001875-6-6.001875s-6 2.701875-6 6.001875c0 3.320625 2.6875 6.001875 6 6.001875s6-2.68125 6-6.001875m-324.145833 441.4575h6c0-3.320625-2.6875-6.001875-6-6.001875s-6 2.68125-6 6.001875 2.6875 6.001875 6 6.001875 6-2.68125 6-6.001875m630.291666 0h6c0-3.320625-2.6875-6.001875-6-6.001875s-6 2.68125-6 6.001875 2.6875 6.001875 6 6.001875 6-2.68125 6-6.001875" stroke="#000" stroke-width=".25" transform="matrix(.1875 0 0 -.189394 0 50)"/></g></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-12.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg"><path d="m4.398438.03125c-2.40625 0-4.3632818 1.980469-4.3632818 4.414062v41.109376c0 2.433593 1.9570318 4.414062 4.3632818 4.414062h57.203124c2.40625 0 4.367188-1.980469 4.367188-4.414062v-41.109376c0-2.433593-1.960938-4.414062-4.367188-4.414062" fill="#fff"/><path d="m4.398438 49.933594c-2.390626 0-4.3320318-1.960938-4.3320318-4.378906v-41.109376c0-2.414062 1.9414058-4.3789058 4.3320318-4.3789058h57.203124c2.390626 0 4.332032 1.9648438 4.332032 4.3789058v41.109376c0 2.417968-1.941406 4.378906-4.332032 4.378906zm57.203124-49.933594h-57.203124c-2.429688 0-4.398438 1.988281-4.398438 4.445312v41.109376c0 2.457031 1.96875 4.445312 4.398438 4.445312h57.203124c2.429688 0 4.398438-1.988281 4.398438-4.445312v-41.109376c0-2.457031-1.96875-4.445312-4.398438-4.445312"/><path d="m4.398438 1.109375c-1.820313 0-3.296876 1.492187-3.296876 3.335937v41.109376c0 1.839843 1.476563 3.335937 3.296876 3.335937h57.203124c1.820313 0 3.300782-1.496094 3.300782-3.335937v-41.109376c0-1.84375-1.480469-3.335937-3.300782-3.335937zm0 1.667969h57.203124c.910157 0 1.648438.746094 1.648438 1.667968v41.109376c0 .921874-.738281 1.667968-1.648438 1.667968h-57.203124c-.910157 0-1.648438-.746094-1.648438-1.667968v-41.109376c0-.921874.738281-1.667968 1.648438-1.667968zm0 0"/><path d="m19.09375 6.167969c-.847656 0-1.597656.554687-1.847656 1.375l-1.40625 4.585937c-2.257813-.460937-4.523438.746094-5.421875 2.886719-1.039063 2.488281.113281 5.355469 2.574219 6.410156 2.460937 1.050781 5.300781-.109375 6.34375-2.597656 1.039062-2.488281-.109376-5.355469-2.570313-6.40625l.382813-1.257813 5.722656 6.414063c.183594.203125.445312.324219.71875.324219h2.035156c.035156.179687.085938.359375.140625.535156.828125 2.566406 3.558594 3.972656 6.101563 3.132812 2.542968-.835937 3.929687-3.597656 3.101562-6.164062s-3.558594-3.96875-6.101562-3.132812l-1.40625-3.175782.367187-.976562h1.085937v-.976563h-4.113281c-.109375 0-.210937.078125-.234375.1875-.03125.128907.046875.261719.175782.292969l2.050781.496094-.363281.976562h-8.648438l.390625-1.265625c.125-.410156.5-.6875.921875-.6875h1.59375v-.976562zm-1.613281 3.910156h8.585937l-2.523437 6.792969zm9.5.324219 1.003906 2.265625c-1.519531.867187-2.457031 2.496093-2.457031 4.253906h-.96875zm-12.078125 2.609375c.214844 0 .429687.019531.648437.058593l-1.132812 3.707032c-.082031.257812.0625.53125.316406.613281.257813.078125.527344-.066406.605469-.324219l1.136718-3.707031c1.949219.890625 2.8125 3.210937 1.929688 5.175781-.882812 1.96875-3.179688 2.839844-5.125 1.949219-1.949219-.890625-2.816406-3.207031-1.929688-5.179687.636719-1.421876 2.042969-2.304688 3.550782-2.292969zm15.132812.011719c1.796875-.15625 3.511719.972656 4.042969 2.785156.609375 2.070312-.558594 4.25-2.605469 4.863281-2.050781.613281-4.207031-.566406-4.816406-2.636719-.011719-.042968-.027344-.089844-.039062-.132812h3.992187c.269531 0 .484375-.222656.484375-.492188 0-.066406-.015625-.136718-.042969-.199218l-1.785156-4.039063c.253906-.078125.515625-.125.769531-.148437zm-1.65625.542968 1.484375 3.355469h-3.367187c0-1.375.714844-2.648437 1.882812-3.355469zm0 0"/><path d="m28.050781 39.25v-.839844h-1.074219v-.785156c0-.398438.191407-.632812.597657-.632812h.476562v-.9375h-.679687c-1.011719 0-1.480469.730468-1.480469 1.515624v.839844h-.617187v.839844h.617187v4.519531h1.085937v-4.519531zm0 0"/><path d="m33.003906 38.765625c-.371094-.375-.765625-.515625-1.285156-.515625-.609375 0-1.164062.269531-1.441406.65625v-.59375h-1.0625v5.457031h1.085937v-3.316406c0-.75.488281-1.226563 1.074219-1.226563.375 0 .566406.121094.808594.367188zm0 0"/><path d="m38.175781 41.359375v-.484375c0-1.550781-.839843-2.625-2.289062-2.625-1.386719 0-2.289063 1.019531-2.289063 2.785156 0 2.078125 1.074219 2.796875 2.425782 2.796875.949218 0 1.472656-.289062 2.023437-.847656l-.691406-.65625c-.382813.386719-.703125.558594-1.308594.558594-.886719 0-1.375-.59375-1.375-1.527344zm-1.074219-.765625h-2.429687c.011719-.332031.03125-.496094.140625-.742188.167969-.410156.5625-.6875 1.074219-.6875s.894531.277344 1.066406.6875c.105469.246094.136719.410157.148437.742188zm0 0"/><path d="m40.734375 37.238281v-1.160156h-1.152344v1.160156zm-.035156 6.53125v-5.457031h-1.085938v5.457031zm0 0"/><path d="m43.957031 21.75v-5.492188h-1.09375v3.34375c0 .847657-.515625 1.226563-1.125 1.226563-.613281 0-1.09375-.367187-1.09375-1.226563v-3.34375h-1.09375v3.507813c0 .617187.128907 1.136719.542969 1.550781.324219.3125.785156.496094 1.34375.496094.546875 0 1.070312-.207031 1.445312-.617188v.554688zm0 0"/><path d="m50.105469 21.75v-3.511719c0-.617187-.128907-1.136719-.546875-1.550781-.320313-.3125-.785156-.496094-1.339844-.496094-.546875 0-1.074219.207032-1.449219.617188v-.550782h-1.070312v5.492188h1.09375v-3.347656c0-.847656.511719-1.226563 1.125-1.226563.609375 0 1.09375.371094 1.09375 1.226563v3.347656zm0 0"/><path d="m55.964844 21.75v-7.714844h-1.09375v2.773438c-.394532-.476563-.847656-.617188-1.425782-.617188-.546874 0-1.019531.183594-1.320312.488282-.546875.550781-.609375 1.484374-.609375 2.316406 0 .835937.0625 1.777344.609375 2.328125.300781.304687.785156.488281 1.332031.488281.589844 0 1.027344-.152344 1.4375-.648438v.585938zm-1.09375-2.753906c0 .976562-.140625 1.832031-1.125 1.832031-.988282 0-1.136719-.855469-1.136719-1.832031 0-.976563.148437-1.820313 1.136719-1.820313.984375 0 1.125.84375 1.125 1.820313zm0 0"/><path d="m19.023438 32.742188-2.800782-7.710938h-.933594l-2.796874 7.710938h1.234374l.523438-1.546876h3.015625l.523437 1.546876zm-2.082032-2.542969h-2.347656l1.191406-3.425781zm0 0"/><path d="m24.386719 32.742188v-3.507813c0-.617187-.128907-1.140625-.546875-1.550781-.324219-.3125-.785156-.496094-1.34375-.496094-.546875 0-1.070313.203125-1.445313.617188v-.554688h-1.074219v5.492188h1.09375v-3.347657c0-.84375.515626-1.222656 1.128907-1.222656.609375 0 1.09375.367187 1.09375 1.222656v3.347657zm0 0"/><path d="m28.1875 32.742188v-.941407h-.484375c-.441406 0-.589844-.214843-.589844-.640625v-6.128906h-1.09375v6.195312c0 .8125.449219 1.515626 1.492188 1.515626zm0 0"/><path d="m30.507812 26.167969v-1.171875h-1.15625v1.171875zm-.03125 6.574219v-5.492188h-1.09375v5.492188zm0 0"/><path d="m36.542969 30.316406v-.488281c0-1.558594-.847657-2.640625-2.304688-2.640625-1.394531 0-2.308593 1.027344-2.308593 2.804688 0 2.089843 1.085937 2.816406 2.445312 2.816406.957031 0 1.480469-.292969 2.039062-.855469l-.699218-.660156c-.382813.386719-.707032.5625-1.316406.5625-.890626 0-1.382813-.597657-1.382813-1.539063zm-1.082031-.769531h-2.445313c.007813-.335937.03125-.496094.136719-.746094.171875-.414062.570312-.695312 1.085937-.695312.511719 0 .898438.28125 1.070313.695312.109375.25.140625.410157.152344.746094zm0 0"/><path d="m42.140625 32.710938v-5.460938h-1.0625v.585938c-.40625-.5-.847656-.648438-1.425781-.648438-.546875 0-1.007813.171875-1.308594.476562-.523438.527344-.609375 1.296876-.609375 2.230469 0 .929688.085937 1.699219.609375 2.230469.300781.304688.75.488281 1.296875.488281.558594 0 1.011719-.152343 1.40625-.628906v.703125c0 .738281-.351563 1.398438-1.277344 1.398438-.535156 0-.835937-.164063-1.179687-.488282l-.695313.707032c.566407.53125 1.09375.722656 1.917969.722656 1.449219 0 2.328125-.972656 2.328125-2.316406zm-1.09375-2.816407c0 .867188-.117187 1.722657-1.105469 1.722657-.984375 0-1.113281-.855469-1.113281-1.722657 0-.867187.128906-1.722656 1.113281-1.722656.988282 0 1.105469.855469 1.105469 1.722656zm0 0"/><path d="m48.210938 30.316406v-.488281c0-1.558594-.847657-2.640625-2.308594-2.640625-1.394532 0-2.304688 1.027344-2.304688 2.804688 0 2.089843 1.082032 2.816406 2.445313 2.816406.953125 0 1.480469-.292969 2.039062-.855469l-.699219-.660156c-.386718.386719-.707031.5625-1.316406.5625-.890625 0-1.386718-.597657-1.386718-1.539063zm-1.085938-.769531h-2.445312c.011718-.335937.035156-.496094.140624-.746094.171876-.414062.570313-.695312 1.082032-.695312.515625 0 .902344.28125 1.074218.695312.105469.25.136719.410157.148438.746094zm0 0"/><path d="m53.476562 27.707031c-.375-.378906-.773437-.519531-1.296874-.519531-.613282 0-1.171876.269531-1.449219.660156v-.597656h-1.074219v5.492188h1.09375v-3.335938c0-.757812.496094-1.234375 1.085938-1.234375.375 0 .566406.117187.8125.367187zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-13.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-13.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-13.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 90 50" width="90pt" xmlns="http://www.w3.org/2000/svg"><path d="m6.054688.105469c-3.28125 0-5.949219 2.683593-5.949219 5.976562v37.835938c0 3.292969 2.667969 5.972656 5.949219 5.972656h77.890624c3.28125 0 5.945313-2.679687 5.945313-5.972656v-37.835938c0-3.292969-2.664063-5.976562-5.945313-5.976562zm0 0" fill="#fff"/><path d="m6.054688 0c-3.339844 0-6.054688 2.730469-6.054688 6.082031v37.835938c0 3.355469 2.714844 6.082031 6.054688 6.082031h77.890624c3.339844 0 6.054688-2.726562 6.054688-6.082031v-37.835938c0-3.351562-2.714844-6.082031-6.054688-6.082031zm0 .105469h77.890624c3.28125 0 5.945313 2.683593 5.945313 5.976562v37.835938c0 3.292969-2.664063 5.972656-5.945313 5.972656h-77.890624c-3.28125 0-5.949219-2.679687-5.949219-5.972656v-37.835938c0-3.292969 2.667969-5.976562 5.949219-5.976562zm0 0"/><path d="m6.050781 46.195312h77.894531c1.242188 0 2.246094-1.007812 2.246094-2.253906v-37.878906c0-1.25-1.003906-2.257812-2.246094-2.257812h-77.894531c-1.242187 0-2.246093 1.007812-2.246093 2.257812v37.878906c0 1.246094 1.003906 2.253906 2.246093 2.253906zm.105469 2.152344c-2.480469 0-4.492188-2.019531-4.492188-4.515625v-37.664062c0-2.492188 2.011719-4.511719 4.492188-4.511719h77.703125c2.480469 0 4.492187 2.019531 4.492187 4.511719v37.664062c0 2.496094-2.011718 4.515625-4.492187 4.515625"/><path d="m45.070312 32.269531v-8.910156h-1.054687v-1.625h1.054687v-1.390625c0-.980469.269532-1.703125.808594-2.167969.535156-.460937 1.214844-.691406 2.035156-.691406h1.359376v1.988281h-1.191407c-.609375 0-.914062.289063-.914062.871094v1.390625h2.105469v1.625h-2.105469v8.910156zm6.527344 0v-10.535156h2.105469v1.128906h.042969c.648437-.832031 1.554687-1.25 2.71875-1.25.765625 0 1.492187.269531 2.183594.8125l-1.519532 1.824219c-.457031-.34375-.917968-.515625-1.390625-.515625-.515625 0-.984375.175781-1.40625.523437-.417969.347657-.628906.90625-.628906 1.679688v6.332031zm16.6875-4.464843h-6.507812c0 .867187.234375 1.515624.703125 1.949218.464843.433594 1.0625.648438 1.785156.648438.867187 0 1.632813-.335938 2.296875-1.015625l1.519531 1.3125c-.515625.609375-1.097656 1.042969-1.746093 1.300781-.648438.261719-1.324219.394531-2.03125.394531-1.074219 0-2.113282-.351562-3.121094-1.054687-1.007813-.699219-1.511719-2.132813-1.511719-4.296875 0-2.050781.464844-3.46875 1.394531-4.253907.933594-.785156 1.902344-1.175781 2.917969-1.175781 1.148437 0 2.152344.402344 3.011719 1.203125.859375.800782 1.289062 1.882813 1.289062 3.242188zm-6.507812-1.746094h4.414062c-.035156-.792969-.257812-1.398438-.664062-1.816406-.410156-.417969-.925782-.628907-1.542969-.628907-.625 0-1.144531.210938-1.558594.628907-.410156.417968-.628906 1.023437-.648437 1.816406zm9.355468 6.210937v-10.535156h2.101563v10.535156zm0-12.664062v-2.121094h2.101563v2.121094zm0 0"/><path d="m22.183594 9.230469c0 1.503906-1.210938 2.726562-2.703125 2.726562-1.496094 0-2.707031-1.222656-2.707031-2.726562 0-1.507813 1.210937-2.726563 2.707031-2.726563 1.492187 0 2.703125 1.21875 2.703125 2.726563zm0 0"/><path d="m22.953125 11.816406c-1.445313.003906-2.636719 1.152344-2.699219 2.613282.019532 1.699218.605469 4.175781.910156 6.144531l-3.914062 3.636719c-.308594.246093-.488281.621093-.488281 1.019531 0 .71875.578125 1.300781 1.292969 1.300781.222656 0 .4375-.058594.632812-.167969l.023438.039063 5.269531-4.710938 1.597656 2.339844 4.128906-3.953125c.773438-2.1875.816407-2.320313 1.394531-4.03125.128907-.519531.097657-.859375-.675781-1.195313-3.222656-1.417968-3.242187-1.417968-6.550781-2.871093-.289062-.105469-.597656-.164063-.921875-.164063zm3.960937 4.339844 1.890626.59375-.523438 1.398438zm0 0"/><path d="m30.171875 20.890625s-6.953125 6.417969-7.578125 7.085937c-.625.667969-.742188 1.574219-.390625 3.03125.605469 2.308594.601563 2.320313 1.882813 6.734376.238281.59375.804687.980468 1.4375.980468.859374 0 1.554687-.703125 1.554687-1.566406 0-.148438-.019531-.292969-.058594-.433594-1.0625-4.09375-1.070312-4.09375-1.613281-6.109375 0 0 .945312-.886719 1.78125-1.671875.1875.691406.667969 2.492188.882812 3.21875.496094.703125.46875.703125 2.984376 3.914063.292968.332031.746093.523437 1.1875.523437.859374 0 1.554687-.703125 1.554687-1.566406 0-.398438-.148437-.777344-.417969-1.070312-1.671875-2.207032-1.578125-2.121094-2.328125-3.070313l-1.175781-4.453125c.226562-.210938.523438-.484375.582031-.535156.652344-.546875 1.277344-2.296875.652344-3.359375s-.9375-1.652344-.9375-1.652344zm0 0"/><path d="m22.023438 42.339844c0 .636718-.515626 1.15625-1.148438 1.15625s-1.148438-.519532-1.148438-1.15625c0-.636719.515626-1.15625 1.148438-1.15625s1.148438.519531 1.148438 1.15625zm0 0"/><path d="m24.996094 42.339844c0 .636718-.515625 1.15625-1.148438 1.15625-.632812 0-1.144531-.519532-1.144531-1.15625 0-.636719.511719-1.15625 1.144531-1.15625.632813 0 1.148438.519531 1.148438 1.15625zm0 0"/><path d="m27.96875 42.339844c0 .636718-.511719 1.15625-1.148438 1.15625-.632812 0-1.144531-.519532-1.144531-1.15625 0-.636719.511719-1.15625 1.144531-1.15625.636719 0 1.148438.519531 1.148438 1.15625zm0 0"/><path d="m20.5 39.1875c-.582031 0-.769531.058594-.777344.742188-.007812.683593.171875.765624.699219.765624 1.933594.019532 3.898437.011719 5.867187.015626l-.027343-.011719 1.019531-.003907c.527344 0 .707031-.082031.699219-.765624-.007813-.683594-.195313-.742188-.777344-.742188-2.234375.019531-4.46875 0-6.703125 0zm0 0" fill-rule="evenodd"/><path d="m32.230469 40.890625c.246093.589844-.027344 1.269531-.613281 1.515625-.582032.246094-1.257813-.027344-1.5-.617188-.246094-.589843.027343-1.265624.609374-1.511718.585938-.25 1.257813.027344 1.503907.613281zm0 0"/><path d="m34.96875 39.730469c.246094.585937-.027344 1.265625-.609375 1.511719-.585937.25-1.257813-.027344-1.503906-.617188-.242188-.585938.027343-1.265625.613281-1.511719.582031-.25 1.257812.027344 1.5.617188zm0 0"/><path d="m37.710938 38.566406c.246093.589844-.027344 1.265625-.609376 1.511719-.585937.25-1.257812-.027344-1.503906-.613281-.246094-.589844.027344-1.265625.613282-1.515625.582031-.246094 1.253906.027343 1.5.617187zm0 0"/><path d="m29.613281 38.582031c-.535156.226563-.6875.355469-.429687.988281.253906.628907.453125.636719.9375.429688 1.792968-.738281 3.597656-1.515625 5.414062-2.277344l-.03125-.003906.941406-.398438c.484376-.207031.617188-.355468.347657-.980468-.265625-.625-.464844-.605469-1-.378906-2.050781.894531-4.121094 1.746093-6.179688 2.621093zm0 0" fill-rule="evenodd"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-30.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-30.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1020-30.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 90 50" width="90pt" xmlns="http://www.w3.org/2000/svg"><path d="m5.992188.0742188c-3.265626 0-5.9179692 2.6757812-5.9179692 5.9609372v37.914063c0 3.285156 2.6523432 5.957031 5.9179692 5.957031h77.964843c3.261719 0 5.914063-2.671875 5.914063-5.957031v-37.914063c0-3.285156-2.652344-5.9609372-5.914063-5.9609372zm0 0" fill="#fff"/><path d="m5.988281 46.222656h77.964844c1.234375 0 2.238281-1.007812 2.238281-2.25v-37.960937c0-1.242188-1.003906-2.25-2.238281-2.25h-77.964844c-1.234375 0-2.234375 1.007812-2.234375 2.25v37.960937c0 1.242188 1 2.25 2.234375 2.25zm.105469 2.144532c-2.46875 0-4.46875-2.015626-4.46875-4.503907v-37.742187c0-2.488282 2-4.503906 4.46875-4.503906h77.773438c2.472656 0 4.472656 2.015624 4.472656 4.503906v37.742187c0 2.488281-2 4.503907-4.472656 4.503907"/><path d="m5.992188 0c-3.304688 0-5.992188 2.707031-5.992188 6.035156v37.871094c0 3.324219 2.6875 6.03125 5.992188 6.03125h77.964843c3.300781 0 5.988281-2.707031 5.988281-6.03125v-37.871094c0-3.328125-2.683593-6.035156-5.988281-6.035156zm0 .0742188h77.964843c3.261719 0 5.914063 2.6757812 5.914063 5.9609372v37.871094c0 3.28125-2.652344 5.953125-5.914063 5.953125h-77.964843c-3.265626 0-5.9179692-2.671875-5.9179692-5.953125v-37.871094c0-3.285156 2.6523432-5.9609372 5.9179692-5.9609372zm0 0"/><path d="m72.40625 22.265625v-9.085937h1.800781v1.023437c1.050781-1.316406 2.964844-1.523437 4.265625-.457031.003906.003906.003906.003906.003906.003906l-1.277343 1.59375c-.742188-.667969-1.878907-.601562-2.539063.148438-.292968.332031-.453125.761718-.453125 1.207031v5.566406zm-8.09375-5.453125h3.820312c0-1.066406-.855468-1.929688-1.910156-1.929688-1.054687 0-1.910156.863282-1.910156 1.929688zm5.621094 1.589844h-5.621094v.230468c0 .789063.476562 1.5 1.199219 1.789063 1 .40625 2.144531.125 2.84375-.703125l1.367187 1.183594c-1.203125 1.417968-3.164062 1.902344-4.878906 1.210937-1.40625-.570312-2.332031-1.949219-2.332031-3.480469v-1.820312c0-2.070312 1.660156-3.746094 3.710937-3.746094 2.050782 0 3.710938 1.675782 3.710938 3.746094zm-11.695313.339844v-2.042969c0-1.003907-.804687-1.816407-1.796875-1.816407-.996094 0-1.800781.8125-1.800781 1.816407v2.042969c0 1.007812.804687 1.820312 1.800781 1.820312.992188 0 1.796875-.8125 1.796875-1.820312zm1.800781-5.5625v9.199218c0 1.378906-.769531 2.636719-1.988281 3.253906-1.722656.867188-3.804687.414063-5.015625-1.09375l1.394532-1.144531c.679687.84375 1.851562 1.097657 2.816406.613281.609375-.308593.992187-.941406.992187-1.628906v-1.136718c-1.050781 1.316406-2.964843 1.523437-4.269531.457031-.710938-.582031-1.125-1.460938-1.125-2.386719v-3.179688c0-1.695312 1.359375-3.066406 3.035156-3.066406.917969 0 1.785156.417969 2.359375 1.136719v-1.023437zm-15.066406 3.632812h3.820313c0-1.066406-.851563-1.929688-1.910157-1.929688-1.054687 0-1.910156.863282-1.910156 1.929688zm5.621094 1.589844h-5.621094v.230468c0 .789063.472656 1.5 1.203125 1.789063.996094.40625 2.140625.125 2.84375-.703125l1.363281 1.183594c-1.203124 1.417968-3.164062 1.902344-4.878906 1.210937-1.40625-.570312-2.332031-1.949219-2.332031-3.480469v-1.820312c0-2.070312 1.664063-3.746094 3.710937-3.746094 2.050782 0 3.710938 1.675782 3.710938 3.746094zm-9.894531-7.042969h-1.800781v-1.816406h1.800781zm0 10.90625h-1.800781v-9.085937h1.800781zm-4.046875 0h-1.125c-1.117188 0-2.023438-.914063-2.023438-2.042969v-10.679687h1.800782v10.453125c0 .3125.25.566406.558593.566406h.789063zm-12.816406 0v-9.085937h1.796874v1.023437c1.054688-1.316406 2.96875-1.523437 4.269532-.457031.714844.582031 1.128906 1.460937 1.128906 2.386718v6.132813h-1.800781v-5.566406c0-1.003907-.804688-1.816407-1.796875-1.816407-.996094 0-1.800782.8125-1.800782 1.816407v5.566406zm-8.828126-4.542969h3.714844l-1.859375-5.566406zm-3.539062 4.542969 4.609375-12.722656h1.574219l4.609375 12.722656h-2.023438l-.949219-2.839844h-4.851562l-.945312 2.839844"/><path d="m57.566406 29.535156h-1.800781v-1.816406h1.800781zm0 10.90625h-1.800781v-9.085937h1.800781zm-9.894531-5.453125h3.824219c0-1.066406-.859375-1.929687-1.914063-1.929687-1.054687 0-1.910156.863281-1.910156 1.929687zm5.621094 1.59375h-5.621094v.226563c0 .789062.476563 1.5 1.199219 1.792968 1 .402344 2.144531.121094 2.847656-.707031l1.363281 1.1875c-1.203125 1.414063-3.164062 1.898438-4.878906 1.207031-1.40625-.570312-2.332031-1.949218-2.332031-3.480468v-1.820313c0-2.070312 1.664062-3.746093 3.710937-3.746093 2.050781 0 3.710938 1.675781 3.710938 3.746093zm-14.394531 3.859375v-9.085937h1.800781v1.023437c1.054687-1.316406 2.964843-1.519531 4.269531-.457031 0 .003906.003906.003906.003906.003906l-1.277344 1.59375c-.742187-.667969-1.878906-.601562-2.539062.148438-.292969.332031-.457031.761719-.457031 1.207031v5.566406zm-5.617188 0v-7.609375h-.902344v-1.476562h.902344v-1.363281c0-1.253907 1.003906-2.273438 2.246094-2.273438h1.347656v1.703125h-1.234375c-.3125 0-.5625.253906-.5625.570313v1.363281h1.796875v1.476562h-1.796875v7.609375"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-10.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-10.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-10.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg"><path d="m4.398438.03125c-2.40625 0-4.3632818 1.980469-4.3632818 4.414062v41.109376c0 2.433593 1.9570318 4.414062 4.3632818 4.414062h57.203124c2.40625 0 4.367188-1.980469 4.367188-4.414062v-41.109376c0-2.433593-1.960938-4.414062-4.367188-4.414062" fill="#fff"/><path d="m4.398438 49.933594c-2.390626 0-4.3320318-1.960938-4.3320318-4.378906v-41.109376c0-2.414062 1.9414058-4.3789058 4.3320318-4.3789058h57.203124c2.390626 0 4.332032 1.9648438 4.332032 4.3789058v41.109376c0 2.417968-1.941406 4.378906-4.332032 4.378906zm57.203124-49.933594h-57.203124c-2.429688 0-4.398438 1.988281-4.398438 4.445312v41.109376c0 2.457031 1.96875 4.445312 4.398438 4.445312h57.203124c2.429688 0 4.398438-1.988281 4.398438-4.445312v-41.109376c0-2.457031-1.96875-4.445312-4.398438-4.445312"/><path d="m4.398438 1.109375c-1.820313 0-3.296876 1.492187-3.296876 3.335937v41.109376c0 1.839843 1.476563 3.335937 3.296876 3.335937h57.203124c1.820313 0 3.300782-1.496094 3.300782-3.335937v-41.109376c0-1.84375-1.480469-3.335937-3.300782-3.335937zm0 1.667969h57.203124c.910157 0 1.648438.746094 1.648438 1.667968v41.109376c0 .921874-.738281 1.667968-1.648438 1.667968h-57.203124c-.910157 0-1.648438-.746094-1.648438-1.667968v-41.109376c0-.921874.738281-1.667968 1.648438-1.667968zm0 0"/><path d="m28.011719 7.835938c-1.199219 0-2.261719.785156-2.617188 1.945312l-1.988281 6.488281c-3.191406-.652343-6.394531 1.054688-7.664062 4.082031-1.472657 3.519532.15625 7.574219 3.636718 9.0625 3.480469 1.492188 7.5-.152343 8.972656-3.671874 1.472657-3.515626-.15625-7.574219-3.636718-9.0625l.542968-1.773438 8.09375 9.066406c.261719.292969.628907.460938 1.019532.460938h2.875c.054687.253906.121094.507812.199218.757812 1.175782 3.632813 5.039063 5.617188 8.632813 4.429688 3.59375-1.183594 5.558594-5.085938 4.386719-8.714844-1.171875-3.632812-5.035156-5.617188-8.628906-4.433594l-1.988282-4.488281.515625-1.386719h1.539063v-1.378906h-5.820313c-.15625 0-.296875.105469-.332031.261719-.046875.1875.066406.375.25.417969l2.898438.699218-.515626 1.386719h-12.230468l.550781-1.792969c.179687-.582031.707031-.972656 1.308594-.972656h2.25v-1.382812zm-2.28125 5.53125h12.140625l-3.566406 9.605468zm13.433593.460937 1.417969 3.203125c-2.144531 1.226562-3.472656 3.527344-3.472656 6.019531h-1.371094zm-17.085937 3.6875c.304687 0 .613281.027344.921875.085937l-1.605469 5.242188c-.113281.363281.085938.75.449219.863281s.742188-.089843.855469-.453125l1.609375-5.246094c2.753906 1.261719 3.976562 4.539063 2.726562 7.324219-1.246094 2.78125-4.492187 4.015625-7.25 2.753907-2.753906-1.257813-3.980468-4.539063-2.730468-7.324219.90625-2.011719 2.890624-3.261719 5.023437-3.246094zm21.410156.019531c2.535157-.222656 4.964844 1.375 5.71875 3.9375.859375 2.929688-.789062 6.011719-3.691406 6.878906-2.898437.871094-5.949219-.796874-6.808594-3.726562-.019531-.066406-.039062-.128906-.054687-.191406h5.644531c.382813 0 .6875-.3125.6875-.695313 0-.09375-.019531-.191406-.058594-.28125l-2.53125-5.714843c.363281-.105469.730469-.175782 1.09375-.207032zm-2.34375.765625 2.097657 4.75h-4.765626c0-1.949219 1.015626-3.75 2.667969-4.75zm0 0"/><path d="m26.988281 36.65625v-1.015625h-1.304687v-.957031c0-.480469.230468-.769532.722656-.769532h.582031v-1.136718h-.828125c-1.226562 0-1.796875.890625-1.796875 1.84375v1.019531h-.75v1.015625h.75v5.488281h1.320313v-5.488281zm0 0"/><path d="m33.003906 36.070312c-.453125-.457031-.929687-.628906-1.5625-.628906-.738281 0-1.410156.328125-1.746094.796875v-.71875h-1.292968v6.625h1.316406v-4.023437c0-.914063.597656-1.488282 1.308594-1.488282.449218 0 .683594.144532.980468.441407zm0 0"/><path d="m39.28125 39.21875v-.589844c0-1.878906-1.019531-3.1875-2.777344-3.1875-1.683594 0-2.78125 1.242188-2.78125 3.386719 0 2.519531 1.304688 3.394531 2.949219 3.394531 1.148437 0 1.785156-.351562 2.457031-1.03125l-.839844-.796875c-.46875.46875-.855468.679688-1.59375.679688-1.070312 0-1.667968-.71875-1.667968-1.855469zm-1.304688-.929688h-2.949218c.015625-.402343.039062-.597656.167968-.898437.207032-.496094.6875-.835937 1.308594-.835937s1.085938.339843 1.292969.835937c.128906.300781.167969.496094.179687.898437zm0 0"/><path d="m42.386719 34.214844v-1.410156h-1.394531v1.410156zm-.039063 7.929687v-6.625h-1.316406v6.625zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-11.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-11.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-11.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg"><path d="m4.398438 0c-2.40625 0-4.3632818 1.980469-4.3632818 4.417969v41.175781c0 2.433594 1.9570318 4.417969 4.3632818 4.417969h57.195312c2.40625 0 4.363281-1.984375 4.363281-4.417969v-41.175781c0-2.4375-1.957031-4.417969-4.363281-4.417969" fill="#fff"/><path d="m4.390625 49.980469c-2.382813 0-4.3242188-1.964844-4.3242188-4.378907v-41.113281c0-2.414062 1.9414058-4.378906 4.3242188-4.378906h57.109375c2.382812 0 4.324219 1.964844 4.324219 4.378906v41.113281c0 2.414063-1.941407 4.378907-4.324219 4.378907zm57.109375-49.9375002h-57.109375c-2.421875 0-4.390625 1.9921872-4.390625 4.4453122v41.113281c0 2.453126 1.96875 4.441407 4.390625 4.441407h57.109375c2.421875 0 4.390625-1.988281 4.390625-4.441407v-41.113281c0-2.453125-1.96875-4.4453122-4.390625-4.4453122"/><path d="m4.390625 1.152344c-1.816406 0-3.292969 1.496094-3.292969 3.335937v41.113281c0 1.839844 1.476563 3.332032 3.292969 3.332032h57.109375c1.816406 0 3.292969-1.492188 3.292969-3.332032v-41.113281c0-1.839843-1.476563-3.335937-3.292969-3.335937zm0 1.667968h57.109375c.90625 0 1.644531.746094 1.644531 1.667969v41.113281c0 .917969-.738281 1.664063-1.644531 1.664063h-57.109375c-.90625 0-1.644531-.746094-1.644531-1.664063v-41.113281c0-.921875.738281-1.667969 1.644531-1.667969zm0 0"/><path d="m42.222656 34.5625h-1.316406v-1.335938h1.316406zm0 8h-1.316406v-6.667969h1.316406zm-7.25-4h2.804688c0-.78125-.628906-1.417969-1.402344-1.417969s-1.402344.636719-1.402344 1.417969zm4.121094 1.167969h-4.121094v.164062c0 .582031.351563 1.101563.882813 1.316407.730469.296874 1.566406.089843 2.082031-.515626l1 .867188c-.878906 1.039062-2.316406 1.394531-3.574219.886719-1.03125-.417969-1.707031-1.429688-1.707031-2.554688v-1.332031c0-1.519531 1.214844-2.75 2.71875-2.75 1.5 0 2.71875 1.230469 2.71875 2.75zm-10.546875 2.832031v-6.667969h1.320313v.753907c.769531-.96875 2.171874-1.117188 3.128906-.335938v.003906l-.9375 1.167969c-.542969-.492187-1.375-.441406-1.859375.109375-.214844.242188-.332031.558594-.332031.886719v4.082031zm-4.117187 0v-5.582031h-.660157v-1.085938h.660157v-1c0-.921875.738281-1.667969 1.648437-1.667969h.988281v1.253907h-.90625c-.230468 0-.414062.183593-.414062.414062v1h1.320312v1.085938h-1.320312v5.582031"/><path d="m27.113281 7.5c-1.285156 0-2.433593.789062-2.914062 1.988281l-2.449219 6.160157c-3.058594-.769532-6.25.609374-7.820312 3.371093-1.945313 3.421875-.78125 7.789063 2.601562 9.757813 3.378906 1.964844 7.695312.785156 9.640625-2.632813 1.945313-3.421875.78125-7.789062-2.601563-9.753906l1.011719-2.539063 5.222657 7.597657c1.175781 1.703125 3.097656 2.722656 5.152343 2.722656h4.101563c.675781 3.003906 3.183594 5.230469 6.214844 5.523437 3.882812.375 7.328124-2.507812 7.699218-6.4375.367188-3.925781-2.480468-7.414062-6.363281-7.789062-3.882813-.371094-7.328125 2.511719-7.695313 6.4375l-4.601562.277344c-.25.011718-.503906-.011719-.75-.078125-1.253906-.339844-2-1.644531-1.664062-2.917969l.257812-.976562c.121094-.453126.039062-.933594-.226562-1.316407l-2.441407-3.554687c-.296875-.425782-.777343-.679688-1.289062-.679688h-3.144531l.964843-2.429687c.179688-.449219.609375-.746094 1.09375-.746094h3.136719v-1.984375zm18.839844 9.921875c.253906 0 .515625.023437.773437.0625 2.785157.4375 4.6875 3.078125 4.253907 5.894531-.433594 2.816406-3.042969 4.742188-5.824219 4.304688-1.902344-.304688-3.472656-1.660156-4.066406-3.511719h6.421875v-2.78125l-6.609375.394531c.394531-2.550781 2.574218-4.371094 5.050781-4.363281zm-25.898437 0c.316406 0 .636718.03125.953124.09375l-1.867187 4.695313c-.203125.511718.042969 1.089843.542969 1.292968.503906.203125 1.074218-.042968 1.277344-.550781l1.867187-4.699219c2.363281 1.554688 3.035156 4.75 1.5 7.140625-1.535156 2.386719-4.695313 3.070313-7.054687 1.515625-2.363282-1.550781-3.035157-4.746094-1.5-7.136718.953124-1.484376 2.574218-2.351563 4.28125-2.351563zm0 0"/><path d="m51.433594 12.660156v1.984375h-5.492188c-1.609375 0-3.179687.5-4.5 1.433594l-3.007812-1.972656c-.359375-.253907-.445313-.746094-.195313-1.105469.148438-.214844.386719-.339844.640625-.339844"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1022-12.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg"><path d="m4.398438 0c-2.40625 0-4.3632818 1.980469-4.3632818 4.417969v41.175781c0 2.433594 1.9570318 4.417969 4.3632818 4.417969h57.195312c2.40625 0 4.363281-1.984375 4.363281-4.417969v-41.175781c0-2.4375-1.957031-4.417969-4.363281-4.417969" fill="#fff"/><path d="m4.390625 49.980469c-2.382813 0-4.3242188-1.964844-4.3242188-4.378907v-41.113281c0-2.414062 1.9414058-4.378906 4.3242188-4.378906h57.109375c2.382812 0 4.324219 1.964844 4.324219 4.378906v41.113281c0 2.414063-1.941407 4.378907-4.324219 4.378907zm57.109375-49.9375002h-57.109375c-2.421875 0-4.390625 1.9921872-4.390625 4.4453122v41.113281c0 2.453126 1.96875 4.441407 4.390625 4.441407h57.109375c2.421875 0 4.390625-1.988281 4.390625-4.441407v-41.113281c0-2.453125-1.96875-4.4453122-4.390625-4.4453122"/><path d="m4.390625 1.152344c-1.816406 0-3.292969 1.496094-3.292969 3.335937v41.113281c0 1.839844 1.476563 3.332032 3.292969 3.332032h57.109375c1.816406 0 3.292969-1.492188 3.292969-3.332032v-41.113281c0-1.839843-1.476563-3.335937-3.292969-3.335937zm0 1.667968h57.109375c.90625 0 1.644531.746094 1.644531 1.667969v41.113281c0 .917969-.738281 1.664063-1.644531 1.664063h-57.109375c-.90625 0-1.644531-.746094-1.644531-1.664063v-41.113281c0-.921875.738281-1.667969 1.644531-1.667969zm0 0"/><path d="m41.316406 34.605469h-1.316406v-1.332031h1.316406zm0 8.003906h-1.316406v-6.667969h1.316406zm-7.25-4h2.800782c0-.785156-.625-1.417969-1.398438-1.417969s-1.402344.632813-1.402344 1.417969zm4.121094 1.164063h-4.121094v.167968c0 .578125.347656 1.101563.882813 1.316406.730469.296876 1.566406.089844 2.082031-.519531l1 .871094c-.878906 1.039063-2.316406 1.394531-3.574219.886719-1.03125-.417969-1.707031-1.429688-1.707031-2.554688v-1.332031c0-1.519531 1.214844-2.753906 2.71875-2.753906 1.5 0 2.71875 1.234375 2.71875 2.753906zm-10.546875 2.835937v-6.667969h1.320313v.75c.769531-.964844 2.171874-1.117187 3.128906-.335937v.003906l-.9375 1.167969c-.542969-.488282-1.375-.4375-1.859375.109375-.214844.246093-.332031.5625-.332031.886719v4.085937zm-4.117187 0v-5.585937h-.660157v-1.082032h.660157v-1c0-.921875.738281-1.667968 1.648437-1.667968h.988281v1.25h-.90625c-.230468 0-.414062.1875-.414062.417968v1h1.320312v1.082032h-1.320312v5.585937"/><path d="m22.578125 20.910156c-2.835937 0-5.136719 2.328125-5.136719 5.195313 0 2.871093 2.300782 5.195312 5.136719 5.195312 2.832031 0 5.132813-2.324219 5.132813-5.195312 0-2.867188-2.300782-5.195313-5.132813-5.195313zm0 1.835938c1.832031 0 3.320313 1.503906 3.320313 3.359375s-1.488282 3.363281-3.320313 3.363281c-1.835937 0-3.324219-1.507812-3.324219-3.363281s1.488282-3.359375 3.324219-3.359375zm0 0"/><path d="m43.414062 20.910156c-2.832031 0-5.132812 2.328125-5.132812 5.195313 0 2.871093 2.300781 5.195312 5.132812 5.195312 2.835938 0 5.136719-2.324219 5.136719-5.195312 0-2.867188-2.300781-5.195313-5.136719-5.195313zm0 1.835938c1.835938 0 3.324219 1.503906 3.324219 3.359375s-1.488281 3.363281-3.324219 3.363281c-1.832031 0-3.320312-1.507812-3.320312-3.363281s1.488281-3.359375 3.320312-3.359375zm0 0"/><path d="m38.097656 27.941406c-6.15625-.183594-9.359375.304688-9.976562-2.757812l-.128906-.582032c-.722657-2.667968-3.238282-4.421874-5.960938-4.152343-.964844-1.980469-1.933594-4.0625 4.589844-6.054688-.082032.347657-.121094.703125-.117188 1.058594l5.703125-4.351563c1.066407-.8125 2.582031-.597656 3.386719.480469l3.015625 4.050781-3.207031 2.441407-3.3125-4.445313-5.058594 3.855469c.59375 1.078125 1.609375 1.84375 2.796875 2.105469.050781-.632813.574219-1.121094 1.203125-1.121094h4.660156l3.207032-2.445312 1.179687 1.582031c.191406.257812.332031.550781.410156.863281h4.742188c.332031 0 .601562.433594.601562.976562 0 .539063-.269531.976563-.601562.976563h-1.816407c-3.101562 0-5.617187 2.542969-5.617187 5.683594 0 .625.105469 1.242187.300781 1.835937"/><path d="m35.214844 10.578125c-1.019532-.65625-2.332032-.601563-3.296875.132813l-.859375.65625-1.082032.15625v-1.714844l1.976563-.285156v-1.429688l-1.996094.289062c.3125-1.589843 1.835938-2.625 3.40625-2.308593 1.570313.3125 2.59375 1.855469 2.28125 3.445312-.070312.378907-.21875.738281-.429687 1.058594"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1024-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1024-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1024-12.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg"><path d="m4.398438.03125c-2.40625 0-4.3632818 1.980469-4.3632818 4.414062v41.109376c0 2.433593 1.9570318 4.414062 4.3632818 4.414062h57.203124c2.40625 0 4.367188-1.980469 4.367188-4.414062v-41.109376c0-2.433593-1.960938-4.414062-4.367188-4.414062" fill="#fff"/><path d="m4.398438 49.933594c-2.390626 0-4.3320318-1.960938-4.3320318-4.378906v-41.109376c0-2.414062 1.9414058-4.3789058 4.3320318-4.3789058h57.203124c2.390626 0 4.332032 1.9648438 4.332032 4.3789058v41.109376c0 2.417968-1.941406 4.378906-4.332032 4.378906zm57.203124-49.933594h-57.203124c-2.429688 0-4.398438 1.988281-4.398438 4.445312v41.109376c0 2.457031 1.96875 4.445312 4.398438 4.445312h57.203124c2.429688 0 4.398438-1.988281 4.398438-4.445312v-41.109376c0-2.457031-1.96875-4.445312-4.398438-4.445312"/><path d="m4.398438 48.890625c-1.820313 0-3.296876-1.496094-3.296876-3.335937v-41.109376c0-1.84375 1.476563-3.335937 3.296876-3.335937h57.203124c1.820313 0 3.300782 1.492187 3.300782 3.335937v41.109376c0 1.839843-1.480469 3.335937-3.300782 3.335937"/><path d="m4.398438 47.222656c-.910157 0-1.648438-.746094-1.648438-1.667968v-41.109376c0-.921874.738281-1.667968 1.648438-1.667968h57.203124c.910157 0 1.648438.746094 1.648438 1.667968v41.109376c0 .921874-.738281 1.667968-1.648438 1.667968" fill="#fff"/><path d="m42.238281 34.554688h-1.316406v-1.332032h1.316406zm0 8h-1.316406v-6.664063h1.316406zm-7.257812-4h2.804687c0-.78125-.628906-1.414063-1.402344-1.414063-.777343 0-1.402343.632813-1.402343 1.414063zm4.125 1.167968h-4.125v.167969c0 .578125.347656 1.097656.882812 1.3125.214844.089844.449219.136719.683594.136719.539063 0 1.050781-.238282 1.402344-.652344l1.003906.867188c-.601563.707031-1.480469 1.117187-2.40625 1.117187-.402344 0-.800781-.078125-1.175781-.230469-1.035156-.417968-1.710938-1.425781-1.710938-2.550781v-1.335937c0-1.515626 1.21875-2.746094 2.722656-2.746094 1.503907 0 2.722657 1.230468 2.722657 2.746094zm-10.558594 2.832032v-6.664063h1.316406v.75c.425781-.527344 1.0625-.832031 1.734375-.832031.511719 0 1.003906.171875 1.402344.5l-.9375 1.167968c-.242188-.21875-.554688-.335937-.878906-.335937-.726563 0-1.320313.59375-1.320313 1.332031v4.082032zm-4.125 0v-5.582032h-.660156v-1.082031h.660156v-1c0-.921875.738281-1.667969 1.648437-1.667969h.992188v1.25h-.910156c-.226563 0-.410156.1875-.410156.417969v1h1.320312v1.082031h-1.320312v5.582032"/><path d="m23.5 11.589844-8.664062.546875c-.394532.027343-.738282.28125-.875.65625l-2.207032 5.941406c-.167968.453125-.253906.933594-.253906 1.417969v5.578125c0 .558593.449219 1.011719 1 1.011719h.5c0-2.511719 2.015625-4.546876 4.5-4.546876s4.5 2.035157 4.5 4.546876h18c0-1.375.613281-2.671876 1.671875-3.535157h-18.171875zm-3.5 1.765625v5.054687l-6.640625.789063h-.058594c-.273437 0-.496093-.226563-.496093-.507813 0-.058594.007812-.121094.03125-.175781l1.675781-4.515625c.066406-.183594.238281-.3125.433593-.324219zm0 0"/><path d="m54.5 22.195312h-29v-14.140624h29zm-3 4.546876h-2.5c0-1.375-.613281-2.671876-1.671875-3.535157h7.171875v2.523438zm-3.5 0c0 1.953124-1.566406 3.535156-3.5 3.535156s-3.5-1.582032-3.5-3.535156c0-1.953126 1.566406-3.535157 3.5-3.535157s3.5 1.582031 3.5 3.535157zm-27 0c0 1.953124-1.566406 3.535156-3.5 3.535156s-3.5-1.582032-3.5-3.535156c0-1.953126 1.566406-3.535157 3.5-3.535157s3.5 1.582031 3.5 3.535157"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1024-14.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1024-14.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1024-14.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg"><path d="m4.398438.0351562c-2.40625 0-4.3632818 1.9765628-4.3632818 4.4101558v41.109376c0 2.433593 1.9570318 4.414062 4.3632818 4.414062h57.203124c2.40625 0 4.367188-1.980469 4.367188-4.414062v-41.109376c0-2.433593-1.960938-4.4101558-4.367188-4.4101558" fill="#fff"/><path d="m4.398438 49.933594c-2.390626 0-4.3320318-1.960938-4.3320318-4.378906v-41.109376c0-2.414062 1.9414058-4.3789058 4.3320318-4.3789058h57.203124c2.390626 0 4.332032 1.9648438 4.332032 4.3789058v41.109376c0 2.417968-1.941406 4.378906-4.332032 4.378906zm57.203124-49.933594h-57.203124c-2.429688 0-4.398438 1.988281-4.398438 4.445312v41.109376c0 2.457031 1.96875 4.445312 4.398438 4.445312h57.203124c2.429688 0 4.398438-1.988281 4.398438-4.445312v-41.109376c0-2.457031-1.96875-4.445312-4.398438-4.445312"/><path d="m4.398438 48.890625c-1.820313 0-3.296876-1.496094-3.296876-3.335937v-41.109376c0-1.84375 1.476563-3.335937 3.296876-3.335937h57.203124c1.820313 0 3.300782 1.492187 3.300782 3.335937v41.109376c0 1.839843-1.480469 3.335937-3.300782 3.335937"/><path d="m4.398438 47.222656c-.910157 0-1.648438-.746094-1.648438-1.667968v-41.109376c0-.921874.738281-1.667968 1.648438-1.667968h57.203124c.910157 0 1.648438.746094 1.648438 1.667968v41.109376c0 .921874-.738281 1.667968-1.648438 1.667968" fill="#fff"/><path d="m42.238281 34.539062h-1.316406v-1.332031h1.316406zm0 8h-1.316406v-6.667968h1.316406zm-7.257812-4h2.804687c0-.78125-.628906-1.417968-1.402344-1.417968-.773437 0-1.402343.636718-1.402343 1.417968zm4.125 1.167969h-4.125v.164063c0 .582031.347656 1.101562.882812 1.316406.734375.296875 1.570313.089844 2.085938-.519531l1.003906.871093c-.882813 1.039063-2.324219 1.394532-3.582031.886719-1.035156-.417969-1.710938-1.429687-1.710938-2.554687v-1.332032c0-1.519531 1.21875-2.75 2.722656-2.75 1.503907 0 2.722657 1.230469 2.722657 2.75zm-10.558594 2.832031v-6.667968h1.316406v.753906c.777344-.964844 2.175781-1.117188 3.132813-.335938h.003906l-.9375 1.167969c-.542969-.488281-1.378906-.4375-1.863281.113281-.214844.242188-.332031.558594-.332031.886719v4.082031zm-4.125 0v-5.582031h-.660156v-1.085937h.660156v-1c0-.917969.738281-1.664063 1.648437-1.664063h.992188v1.25h-.910156c-.226563 0-.410156.183594-.410156.414063v1h1.320312v1.085937h-1.320312v5.582031"/><path d="m10.628906 10.273438c-.261718 0-.476562.214843-.476562.476562v.964844c0 .226562.160156.421875.382812.46875.019532.003906.042969.011718.0625.019531.246094.089844.375.363281.289063.613281l-2.46875 6.984375c-.113281.3125-.167969.640625-.167969.972657v4.882812c0 .53125.425781.960938.953125.960938h5.710937c0-2.390626 1.917969-4.324219 4.285157-4.324219 2.363281 0 4.28125 1.933593 4.28125 4.324219h17.613281c0-2.390626 1.914062-4.324219 4.28125-4.324219s4.285156 1.933593 4.285156 4.324219h6.1875c1.050782 0 1.902344-.859376 1.902344-1.921876v-5.367187c0-.265625-.039062-.535156-.109375-.792969l-1.941406-6.867187c-.234375-.828125-.984375-1.394531-1.832031-1.394531zm1.933594 1.921874h3.828125c.394531 0 .710937.320313.710937.71875v5.289063c0 .398437-.316406.722656-.710937.722656h-5.699219c-.394531 0-.714844-.324219-.714844-.722656 0-.082031.015626-.164063.042969-.242187l1.867188-5.289063c.101562-.285156.371093-.476563.675781-.476563zm6.492188 0h3.507812c.316406 0 .597656.214844.6875.523438l1.492188 5.285156c.109374.386719-.109376.785156-.488282.894532-.066406.019531-.128906.027343-.195312.027343h-5.003906c-.394532 0-.714844-.324219-.714844-.722656v-5.289063c0-.398437.320312-.71875.714844-.71875zm6.230468 0h4.796875c.320313 0 .597657.214844.6875.523438l1.496094 5.285156c.109375.386719-.113281.785156-.492187.894532-.0625.019531-.128907.027343-.195313.027343h-4.796875c-.320312 0-.601562-.214843-.6875-.523437l-1.496094-5.289063c-.109375-.382812.113282-.78125.492188-.890625.0625-.019531.128906-.027344.195312-.027344zm7.519532 0h4.796874c.320313 0 .597657.214844.6875.523438l1.496094 5.285156c.105469.386719-.113281.785156-.492187.894532-.0625.019531-.128907.027343-.195313.027343h-4.796875c-.320312 0-.597656-.214843-.6875-.523437l-1.496093-5.289063c-.105469-.382812.113281-.78125.492187-.890625.0625-.019531.128906-.027344.195313-.027344zm7.519531 0h4.796875c.320312 0 .601562.214844.6875.523438l1.496094 5.285156c.109374.386719-.113282.785156-.488282.894532-.066406.019531-.132812.027343-.199218.027343h-4.796876c-.316406 0-.597656-.214843-.6875-.523437l-1.496093-5.289063c-.109375-.382812.113281-.78125.492187-.890625.0625-.019531.128906-.027344.195313-.027344zm7.519531 0h4.796875c.320313 0 .601563.214844.6875.523438l1.496094 5.285156c.109375.386719-.109375.785156-.492188.894532-.0625.019531-.125.027343-.191406.027343h-4.800781c-.320313 0-.597656-.214843-.6875-.523437l-1.492188-5.289063c-.109375-.382812.109375-.78125.488282-.890625.066406-.019531.128906-.027344.195312-.027344zm-28.644531 11.054688c-1.84375 0-3.332031 1.507812-3.332031 3.367188 0 1.859374 1.488281 3.367187 3.332031 3.367187 1.839843 0 3.328125-1.507813 3.328125-3.367187 0-1.859376-1.488282-3.367188-3.328125-3.367188zm26.175781 0c-1.839844 0-3.332031 1.507812-3.332031 3.367188 0 1.859374 1.492187 3.367187 3.332031 3.367187s3.332031-1.507813 3.332031-3.367187c0-1.859376-1.492187-3.367188-3.332031-3.367188zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-30.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-30.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-30.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg"><path d="m4.398438.0351562c-2.40625 0-4.3632818 1.9765628-4.3632818 4.4101558v41.109376c0 2.433593 1.9570318 4.414062 4.3632818 4.414062h57.203124c2.40625 0 4.367188-1.980469 4.367188-4.414062v-41.109376c0-2.433593-1.960938-4.4101558-4.367188-4.4101558" fill="#fff"/><path d="m4.398438 49.933594c-2.390626 0-4.3320318-1.960938-4.3320318-4.378906v-41.109376c0-2.414062 1.9414058-4.3789058 4.3320318-4.3789058h57.203124c2.390626 0 4.332032 1.9648438 4.332032 4.3789058v41.109376c0 2.417968-1.941406 4.378906-4.332032 4.378906zm57.203124-49.933594h-57.203124c-2.429688 0-4.398438 1.988281-4.398438 4.445312v41.109376c0 2.457031 1.96875 4.445312 4.398438 4.445312h57.203124c2.429688 0 4.398438-1.988281 4.398438-4.445312v-41.109376c0-2.457031-1.96875-4.445312-4.398438-4.445312"/><path d="m4.398438 48.890625c-1.820313 0-3.296876-1.496094-3.296876-3.335937v-41.109376c0-1.839843 1.476563-3.332031 3.296876-3.332031h57.203124c1.820313 0 3.300782 1.492188 3.300782 3.332031v41.109376c0 1.839843-1.480469 3.335937-3.300782 3.335937"/><path d="m4.398438 47.222656c-.910157 0-1.648438-.746094-1.648438-1.667968v-41.109376c0-.921874.738281-1.667968 1.648438-1.667968h57.203124c.910157 0 1.648438.746094 1.648438 1.667968v41.109376c0 .921874-.738281 1.667968-1.648438 1.667968" fill="#fff"/><path d="m42.238281 34.222656h-1.316406v-1.332031h1.316406zm0 8h-1.316406v-6.667968h1.316406zm-7.257812-4h2.804687c0-.78125-.628906-1.417968-1.402344-1.417968-.773437 0-1.402343.636718-1.402343 1.417968zm4.125 1.167969h-4.125v.164063c0 .578124.347656 1.101562.882812 1.316406.734375.296875 1.570313.089844 2.085938-.515625l1.003906.867187c-.882813 1.039063-2.324219 1.394532-3.582031.886719-1.035156-.417969-1.710938-1.429687-1.710938-2.554687v-1.332032c0-1.519531 1.21875-2.75 2.722656-2.75 1.503907 0 2.722657 1.230469 2.722657 2.75zm-10.558594 2.832031v-6.667968h1.316406v.753906c.777344-.96875 2.175781-1.117188 3.132813-.335938h.003906l-.9375 1.167969c-.546875-.488281-1.378906-.4375-1.863281.109375-.214844.246094-.335938.5625-.335938.886719v4.085937h-1.320312zm-4.125 0v-5.582031h-.660156v-1.085937h.660156v-1c0-.917969.738281-1.664063 1.648437-1.664063h.992188v1.25h-.910156c-.226563 0-.410156.1875-.410156.414063v1h1.320312v1.085937h-1.320312v5.582031zm30.507813-15h-2.570313v-17.109375h2.570313zm-18.300782 0 5.246094-8.789062-4.941406-8.320313h3.023437l3.328125 5.957031 3.328125-5.957031h3.023438l-4.941407 8.320313 5.246094 8.789062h-3.027344l-3.628906-6.414062-3.628906 6.414062zm-11.269531-6.109375h4.996094l-2.5-7.488281zm-4.761719 6.109375 6.203125-17.109375h2.117188l6.199219 17.109375h-2.722657l-1.273437-3.820312h-6.527344l-1.273438 3.820312zm-6.351562 0v-14.820312h-4.6875v-2.289063h11.945312v2.289063h-4.6875v14.820312"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-32.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-32.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-32.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m13 6.789062h7v10.210938h-7zm0 0"/></clipPath><clipPath id="b"><path d="m20 6.789062h2v10.210938h-2zm0 0"/></clipPath><clipPath id="c"><path d="m31 6.789062h2v10.210938h-2zm0 0"/></clipPath><clipPath id="d"><path d="m10.296875 22h6.703125v8h-6.703125zm0 0"/></clipPath><clipPath id="e"><path d="m51 22h4.730469v8h-4.730469zm0 0"/></clipPath><clipPath id="f"><path d="m33 36h7v7.097656h-7zm0 0"/></clipPath><path d="m4.417969.0546875c-2.40625 0-4.3632815 1.9765625-4.3632815 4.4062505v41.078124c0 2.429688 1.9570315 4.40625 4.3632815 4.40625h57.164062c2.40625 0 4.363281-1.976562 4.363281-4.40625v-41.078124c0-2.429688-1.957031-4.4062505-4.363281-4.4062505zm0 0" fill="#fff"/><path d="m4.417969 1.132812c-1.820313 0-3.296875 1.488282-3.296875 3.328126v41.078124c0 1.839844 1.476562 3.328126 3.296875 3.328126h57.164062c1.820313 0 3.296875-1.488282 3.296875-3.328126v-41.078124c0-1.839844-1.476562-3.328126-3.296875-3.328126zm0 1.664063h57.164062c.910157 0 1.648438.746094 1.648438 1.664063v41.078124c0 .921876-.738281 1.664063-1.648438 1.664063h-57.164062c-.910157 0-1.648438-.742187-1.648438-1.664063v-41.078124c0-.917969.738281-1.664063 1.648438-1.664063zm0 0"/><path d="m4.417969 0c-2.433594 0-4.417969 2-4.417969 4.460938v41.078124c0 2.457032 1.984375 4.460938 4.417969 4.460938h57.164062c2.433594 0 4.417969-2.003906 4.417969-4.460938v-41.078124c0-2.460938-1.984375-4.460938-4.417969-4.460938zm0 .0546875h57.164062c2.40625 0 4.363281 1.9765625 4.363281 4.4062505v41.078124c0 2.429688-1.957031 4.40625-4.363281 4.40625h-57.164062c-2.40625 0-4.3632815-1.976562-4.3632815-4.40625v-41.078124c0-2.429688 1.9570315-4.4062505 4.3632815-4.4062505zm0 0"/><g clip-path="url(#a)"><path d="m13.292969 16.269531v-9.34375h1.398437v8.007813h4.535156v1.335937zm0 0"/></g><g clip-path="url(#b)"><path d="m20.546875 9.59375h1.320313v6.675781h-1.320313zm0-2.667969h1.320313v1.335938h-1.320313zm0 0"/></g><path d="m23.847656 16.269531v-6.675781h1.320313v.753906c.773437-.96875 2.171875-1.117187 3.128906-.335937.523437.425781.828125 1.074219.828125 1.753906v4.503906h-1.320312v-4.089843c0-.738282-.589844-1.335938-1.316407-1.335938-.730469 0-1.320312.597656-1.320312 1.335938v4.089843zm0 0"/><g clip-path="url(#c)"><path d="m31.105469 9.59375h1.320312v6.675781h-1.320312zm0-2.667969h1.320312v1.335938h-1.320312zm0 0"/></g><path d="m39.679688 13.429688h-4.125v.167968c0 .582032.351562 1.101563.882812 1.316406.734375.296876 1.570312.089844 2.085938-.515624l1 .871093c-.878907 1.035157-2.320313 1.394531-3.574219.882813-1.035157-.414063-1.710938-1.429688-1.710938-2.554688v-1.332031c0-1.523437 1.21875-2.753906 2.71875-2.753906 1.503907 0 2.722657 1.230469 2.722657 2.753906zm-4.125-1.164063h2.804687c0-.785156-.625-1.421875-1.402344-1.421875-.773437 0-1.402343.636719-1.402343 1.421875"/><path d="m41.492188 16.269531v-6.675781h1.320312v.753906c.773438-.96875 2.175781-1.117187 3.132812-.335937.523438.425781.824219 1.074219.824219 1.753906v4.503906h-1.316406v-4.089843c0-.738282-.59375-1.335938-1.320313-1.335938-.726562 0-1.320312.597656-1.320312 1.335938v4.089843zm0 0"/><path d="m48.75 11.929688h3.957031v1.335937h-3.957031zm0 0"/><g clip-path="url(#d)"><path d="m12.796875 29.613281-2.390625-6.671875h1.402344l1.566406 4.671875 1.566406-4.671875h1.398438l-2.386719 6.671875zm0 0"/></g><path d="m22.773438 26.777344h-4.121094v.167968c0 .578126.347656 1.101563.878906 1.316407.734375.296875 1.574219.085937 2.089844-.515625l1 .867187c-.882813 1.039063-2.320313 1.394531-3.578125.886719-1.035157-.417969-1.710938-1.429688-1.710938-2.554688v-1.332031c0-1.523437 1.21875-2.757812 2.722657-2.757812 1.5 0 2.71875 1.234375 2.71875 2.757812zm-4.121094-1.164063h2.804687c0-.785156-.628906-1.421875-1.402343-1.421875-.777344 0-1.402344.636719-1.402344 1.421875"/><path d="m24.589844 29.613281v-6.671875h1.320312v.753906c.769532-.96875 2.171875-1.117187 3.128906-.335937h.003907l-.9375 1.171875c-.542969-.492188-1.378907-.445312-1.863281.109375-.214844.242187-.332032.558594-.332032.886719v4.085937zm0 0"/><path d="m30.03125 29.613281v-9.34375h1.320312v5.839844l2.554688-3.167969h1.566406l-2.222656 2.585938 2.554688 4.085937h-1.648438l-1.734375-3.085937-1.070313 1.167968v1.917969zm0 0"/><path d="m42.070312 26.777344h-4.121093v.167968c0 .578126.347656 1.101563.878906 1.316407.734375.296875 1.574219.085937 2.085937-.515625l1.003907.867187c-.882813 1.039063-2.320313 1.394531-3.578125.886719-1.035156-.417969-1.710938-1.429688-1.710938-2.554688v-1.332031c0-1.523437 1.21875-2.757812 2.722656-2.757812 1.5 0 2.71875 1.234375 2.71875 2.757812zm-4.121093-1.164063h2.800781c0-.785156-.625-1.421875-1.398438-1.421875-.777343 0-1.402343.636719-1.402343 1.421875"/><path d="m43.886719 29.613281v-9.34375h1.316406v3.425781c.773437-.96875 2.175781-1.117187 3.132813-.335937.523437.425781.828124 1.070313.828124 1.75v4.503906h-1.320312v-4.085937c0-.738282-.589844-1.335938-1.320312-1.335938-.726563 0-1.320313.597656-1.320313 1.335938v4.085937zm0 0"/><g clip-path="url(#e)"><path d="m51.144531 29.613281v-6.671875h1.316407v.753906c.773437-.96875 2.175781-1.117187 3.132812-.335937l-.9375 1.171875c-.542969-.492188-1.375-.445312-1.859375.109375-.214844.242187-.335937.558594-.335937.886719v4.085937zm0 0"/></g><path d="m24.425781 42.960938v-5.589844h-.660156v-1.082032h.660156v-1c0-.925781.738281-1.671874 1.648438-1.671874h.988281v1.253906h-.90625c-.226562 0-.414062.1875-.414062.417968v1h1.320312v1.082032h-1.320312v5.589844zm0 0"/><path d="m28.546875 42.960938v-6.671876h1.320313v.753907c.773437-.96875 2.175781-1.121094 3.132812-.339844v.003906l-.9375 1.167969c-.542969-.488281-1.378906-.4375-1.863281.113281-.214844.242188-.332031.558594-.332031.886719v4.085938zm0 0"/><g clip-path="url(#f)"><path d="m39.101562 40.125h-4.121093v.167969c0 .578125.347656 1.097656.878906 1.316406.734375.296875 1.574219.085937 2.089844-.519531l1 .867187c-.882813 1.042969-2.320313 1.398438-3.578125.890625-1.03125-.417968-1.710938-1.429687-1.710938-2.554687v-1.335938c0-1.519531 1.21875-2.753906 2.722656-2.753906 1.5 0 2.71875 1.234375 2.71875 2.753906zm-4.121093-1.167969h2.800781c0-.78125-.625-1.417969-1.398438-1.417969-.777343 0-1.402343.636719-1.402343 1.417969"/></g><path d="m40.917969 36.289062h1.320312v6.671876h-1.320312zm0-2.671874h1.320312v1.335937h-1.320312zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-35.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-35.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-35.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m13.726562 6.929688h6.179688v9.421874h-6.179688zm0 0"/></clipPath><clipPath id="b"><path d="m21.003906 6.929688h1.507813v1.523437h-1.507813zm0 0"/></clipPath><clipPath id="c"><path d="m21.003906 9.5625h1.507813v6.789062h-1.507813zm0 0"/></clipPath><clipPath id="d"><path d="m24.160156 9.5625h5.628906v6.929688h-5.628906zm0 0"/></clipPath><clipPath id="e"><path d="m31 6.929688h3.453125v9.421874h-3.453125zm0 0"/></clipPath><clipPath id="f"><path d="m35.414062 9.5625h5.585938v6.929688h-5.585938zm0 0"/></clipPath><clipPath id="g"><path d="m42.691406 9.5625h4.53125v6.789062h-4.53125zm0 0"/></clipPath><clipPath id="h"><path d="m48.046875 11.917969h4.117187v1.523437h-4.117187zm0 0"/></clipPath><clipPath id="i"><path d="m10.296875 22.867188h6.039063v6.789062h-6.039063zm0 0"/></clipPath><clipPath id="j"><path d="m17.296875 22.867188h5.488281v6.925781h-5.488281zm0 0"/></clipPath><clipPath id="k"><path d="m24.570312 22.867188h4.53125v6.789062h-4.53125zm0 0"/></clipPath><clipPath id="l"><path d="m30 20.234375h5.828125v9.421875h-5.828125zm0 0"/></clipPath><clipPath id="m"><path d="m36.515625 22.867188h5.625v6.925781h-5.625zm0 0"/></clipPath><clipPath id="n"><path d="m43.789062 20.234375h5.492188v9.421875h-5.492188zm0 0"/></clipPath><clipPath id="o"><path d="m51.066406 22.867188h4.664063v6.789062h-4.664063zm0 0"/></clipPath><clipPath id="p"><path d="m23.746094 33.535156h3.433594v9.464844h-3.433594zm0 0"/></clipPath><clipPath id="q"><path d="m28.414062 36.167969h4.585938v6.832031h-4.585938zm0 0"/></clipPath><clipPath id="r"><path d="m33.632812 36.167969h5.488282v6.929687h-5.488282zm0 0"/></clipPath><clipPath id="s"><path d="m40.90625 33.535156h1.375v1.464844h-1.375zm0 0"/></clipPath><clipPath id="t"><path d="m40.90625 36.308594h1.375v6.691406h-1.375zm0 0"/></clipPath><path d="m4.417969.0546875c-2.40625 0-4.3632815 1.9765625-4.3632815 4.4062505v41.078124c0 2.429688 1.9570315 4.40625 4.3632815 4.40625h57.164062c2.40625 0 4.363281-1.976562 4.363281-4.40625v-41.078124c0-2.429688-1.957031-4.4062505-4.363281-4.4062505zm0 0" fill="#fff"/><path d="m4.417969 1.132812c-1.820313 0-3.296875 1.488282-3.296875 3.328126v41.078124c0 1.839844 1.476562 3.328126 3.296875 3.328126h57.164062c1.820313 0 3.296875-1.488282 3.296875-3.328126v-41.078124c0-1.839844-1.476562-3.328126-3.296875-3.328126zm0 1.664063h57.164062c.910157 0 1.648438.746094 1.648438 1.664063v41.078124c0 .921876-.738281 1.664063-1.648438 1.664063h-57.164062c-.910157 0-1.648438-.742187-1.648438-1.664063v-41.078124c0-.917969.738281-1.664063 1.648438-1.664063zm0 0"/><path d="m4.417969 0c-2.433594 0-4.417969 2-4.417969 4.460938v41.078124c0 2.457032 1.984375 4.460938 4.417969 4.460938h57.164062c2.433594 0 4.417969-2.003906 4.417969-4.460938v-41.078124c0-2.460938-1.984375-4.460938-4.417969-4.460938zm0 .0546875h57.164062c2.40625 0 4.363281 1.9765625 4.363281 4.4062505v41.078124c0 2.429688-1.957031 4.40625-4.363281 4.40625h-57.164062c-2.40625 0-4.3632815-1.976562-4.3632815-4.40625v-41.078124c0-2.429688 1.9570315-4.4062505 4.3632815-4.4062505zm0 0"/><g clip-path="url(#a)"><path d="m13.859375 16.324219v-9.328125h1.402344v7.996094h4.539062v1.332031" fill="#231f20"/></g><g clip-path="url(#b)"><path d="m21.117188 6.996094h1.320312v1.332031h-1.320312zm0 0" fill="#231f20"/></g><g clip-path="url(#c)"><path d="m21.117188 16.324219v-6.664063h1.320312v6.664063" fill="#231f20"/></g><g clip-path="url(#d)"><path d="m25.574219 12.324219h2.804687c0-.78125-.628906-1.414063-1.402344-1.414063-.773437 0-1.402343.632813-1.402343 1.414063zm4.125 1.167969h-4.125v.167968c0 .578125.351562 1.097656.882812 1.3125.730469.296875 1.570313.089844 2.085938-.515625l1 .867188c-.882813 1.039062-2.320313 1.394531-3.578125.886719-1.03125-.417969-1.710938-1.429688-1.710938-2.550782v-1.335937c0-1.515625 1.21875-2.746094 2.722656-2.746094 1.503907 0 2.722657 1.230469 2.722657 2.746094" fill="#231f20"/></g><g clip-path="url(#e)"><path d="m31.679688 16.324219v-5.582031h-.660157v-1.082032h.660157v-1c0-.917968.738281-1.664062 1.648437-1.664062h.992187v1.25h-.90625c-.230468 0-.414062.1875-.414062.414062v1h1.320312v1.082032h-1.320312v5.582031" fill="#231f20"/></g><g clip-path="url(#f)"><path d="m36.792969 12.324219h2.804687c0-.78125-.625-1.414063-1.402344-1.414063-.773437 0-1.402343.632813-1.402343 1.414063zm4.125 1.167969h-4.125v.167968c0 .578125.351562 1.097656.882812 1.3125.734375.296875 1.574219.089844 2.085938-.515625l1.003906.867188c-.882813 1.039062-2.320313 1.394531-3.578125.886719-1.035156-.417969-1.710938-1.429688-1.710938-2.550782v-1.335937c0-1.515625 1.214844-2.746094 2.71875-2.746094 1.503907 0 2.722657 1.230469 2.722657 2.746094" fill="#231f20"/></g><g clip-path="url(#g)"><path d="m42.734375 16.324219v-6.664063h1.320313v.753906c.773437-.96875 2.175781-1.117187 3.132812-.335937l-.9375 1.167969c-.542969-.488282-1.378906-.441406-1.863281.113281-.214844.242187-.332031.558594-.332031.882813v4.082031" fill="#231f20"/></g><g clip-path="url(#h)"><path d="m48.179688 11.992188h3.960937v1.332031h-3.960937zm0 0" fill="#231f20"/></g><g clip-path="url(#i)"><path d="m12.785156 29.648438-2.390625-6.660157h1.402344l1.566406 4.664063 1.566407-4.664063h1.402343l-2.390625 6.660157" fill="#231f20"/></g><g clip-path="url(#j)"><path d="m18.644531 25.652344h2.804688c0-.78125-.628907-1.414063-1.402344-1.414063s-1.402344.632813-1.402344 1.414063zm4.125 1.164062h-4.125v.167969c0 .582031.347657 1.101563.878907 1.3125.734374.296875 1.574218.089844 2.089843-.515625l1 .871094c-.878906 1.035156-2.320312 1.390625-3.578125.882812-1.035156-.417968-1.710937-1.425781-1.710937-2.550781v-1.332031c0-1.519532 1.21875-2.75 2.722656-2.75s2.722656 1.230468 2.722656 2.75" fill="#231f20"/></g><g clip-path="url(#k)"><path d="m24.585938 29.648438v-6.660157h1.316406v.75c.777344-.964843 2.175781-1.117187 3.136718-.335937v.003906l-.9375 1.167969c-.542968-.488281-1.378906-.441407-1.863281.109375-.214843.242187-.335937.558594-.335937.886718v4.078126" fill="#231f20"/></g><g clip-path="url(#l)"><path d="m30.027344 29.648438v-9.328126h1.324218v5.832032l2.554688-3.164063h1.570312l-2.230468 2.582031 2.558594 4.078126h-1.648438l-1.734375-3.082032-1.070313 1.167969v1.914063" fill="#231f20"/></g><g clip-path="url(#m)"><path d="m37.949219 25.652344h2.804687c0-.78125-.625-1.414063-1.402344-1.414063-.773437 0-1.402343.632813-1.402343 1.414063zm4.125 1.164062h-4.125v.167969c0 .582031.351562 1.101563.882812 1.3125.734375.296875 1.570313.089844 2.085938-.515625l1.003906.871094c-.886719 1.035156-2.324219 1.390625-3.582031.882812-1.03125-.417968-1.710938-1.425781-1.710938-2.550781v-1.332031c0-1.519532 1.21875-2.75 2.722656-2.75 1.503907 0 2.722657 1.230468 2.722657 2.75" fill="#231f20"/></g><g clip-path="url(#n)"><path d="m43.890625 29.648438v-9.328126h1.320313v3.417969c.773437-.964843 2.171874-1.117187 3.132812-.335937.519531.429687.824219 1.070312.824219 1.75v4.496094h-1.316407v-4.078126c0-.738281-.59375-1.332031-1.320312-1.332031-.730469 0-1.320312.59375-1.320312 1.332031v4.078126" fill="#231f20"/></g><g clip-path="url(#o)"><path d="m51.148438 29.648438v-6.660157h1.320312v.75c.773438-.964843 2.175781-1.117187 3.132812-.335937 0 0 0 .003906.003907.003906l-.9375 1.167969c-.546875-.488281-1.378907-.441407-1.863281.109375-.214844.242187-.335938.558594-.335938.886718v4.078126" fill="#231f20"/></g><g clip-path="url(#p)"><path d="m24.417969 42.976562v-5.582031h-.660157v-1.082031h.660157v-1c0-.917969.738281-1.664062 1.652343-1.664062h.988282v1.25h-.90625c-.226563 0-.414063.183593-.414063.414062v1h1.320313v1.082031h-1.320313v5.582031" fill="#231f20"/></g><g clip-path="url(#q)"><path d="m28.542969 42.976562v-6.664062h1.320312v.75c.773438-.960938 2.175781-1.113281 3.132813-.332031h.003906l-.9375 1.167969c-.546875-.488282-1.378906-.4375-1.863281.109374-.214844.246094-.335938.558594-.335938.886719v4.082031" fill="#231f20"/></g><g clip-path="url(#r)"><path d="m34.980469 38.980469h2.804687c0-.785157-.628906-1.417969-1.402344-1.417969-.773437 0-1.402343.632812-1.402343 1.417969zm4.125 1.164062h-4.125v.167969c0 .578125.347656 1.097656.882812 1.3125.730469.296875 1.570313.089844 2.085938-.515625l1 .867187c-.882813 1.039063-2.320313 1.394532-3.578125.886719-1.035156-.417969-1.710938-1.425781-1.710938-2.550781v-1.332031c0-1.519531 1.21875-2.75 2.722656-2.75 1.503907 0 2.722657 1.230469 2.722657 2.75" fill="#231f20"/></g><g clip-path="url(#s)"><path d="m40.917969 33.648438h1.320312v1.332031h-1.320312zm0 0" fill="#231f20"/></g><g clip-path="url(#t)"><path d="m40.917969 42.976562v-6.664062h1.320312v6.664062" fill="#231f20"/></g></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-36.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-36.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-36.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m13 7.761719h5v9.238281h-5zm0 0"/></clipPath><clipPath id="b"><path d="m27 7.761719h5v9.238281h-5zm0 0"/></clipPath><clipPath id="c"><path d="m39 7.761719h2v9.238281h-2zm0 0"/></clipPath><clipPath id="d"><path d="m9.058594 23h4.941406v7h-4.941406zm0 0"/></clipPath><clipPath id="e"><path d="m53 23h3.96875v7h-3.96875zm0 0"/></clipPath><clipPath id="f"><path d="m9.058594 33h4.941406v9.265625h-4.941406zm0 0"/></clipPath><clipPath id="g"><path d="m13 35h5v7.265625h-5zm0 0"/></clipPath><clipPath id="h"><path d="m18 35h4v7.265625h-4zm0 0"/></clipPath><clipPath id="i"><path d="m22 33h5v9.265625h-5zm0 0"/></clipPath><clipPath id="j"><path d="m26 35h5v7.265625h-5zm0 0"/></clipPath><clipPath id="k"><path d="m31 33h5v9.265625h-5zm0 0"/></clipPath><clipPath id="l"><path d="m36 35h4v7.265625h-4zm0 0"/></clipPath><clipPath id="m"><path d="m44 33h3v9.265625h-3zm0 0"/></clipPath><clipPath id="n"><path d="m47 35h4v7.265625h-4zm0 0"/></clipPath><clipPath id="o"><path d="m50 35h5v7.265625h-5zm0 0"/></clipPath><clipPath id="p"><path d="m55 33h1.96875v9.265625h-1.96875zm0 0"/></clipPath><path d="m4.417969.0546875c-2.40625 0-4.3632815 1.9765625-4.3632815 4.4062505v41.078124c0 2.429688 1.9570315 4.40625 4.3632815 4.40625h57.164062c2.40625 0 4.363281-1.976562 4.363281-4.40625v-41.078124c0-2.429688-1.957031-4.4062505-4.363281-4.4062505zm0 0" fill="#fff"/><path d="m4.417969 1.132812c-1.820313 0-3.296875 1.488282-3.296875 3.328126v41.078124c0 1.839844 1.476562 3.328126 3.296875 3.328126h57.164062c1.820313 0 3.296875-1.488282 3.296875-3.328126v-41.078124c0-1.839844-1.476562-3.328126-3.296875-3.328126zm0 1.664063h57.164062c.910157 0 1.648438.746094 1.648438 1.664063v41.078124c0 .921876-.738281 1.664063-1.648438 1.664063h-57.164062c-.910157 0-1.648438-.742187-1.648438-1.664063v-41.078124c0-.917969.738281-1.664063 1.648438-1.664063zm0 0"/><path d="m4.417969 0c-2.433594 0-4.417969 2-4.417969 4.460938v41.078124c0 2.457032 1.984375 4.460938 4.417969 4.460938h57.164062c2.433594 0 4.417969-2.003906 4.417969-4.460938v-41.078124c0-2.460938-1.984375-4.460938-4.417969-4.460938zm0 .0546875h57.164062c2.40625 0 4.363281 1.9765625 4.363281 4.4062505v41.078124c0 2.429688-1.957031 4.40625-4.363281 4.40625h-57.164062c-2.40625 0-4.3632815-1.976562-4.3632815-4.40625v-41.078124c0-2.429688 1.9570315-4.4062505 4.3632815-4.4062505zm0 0"/><g clip-path="url(#a)"><path d="m13.835938 16.398438v-8.5625h1.210937v7.339843h2.417969v1.222657zm0 0"/></g><path d="m21.699219 16.398438h-1.207031v-.609376c-.335938.632813-1.117188.871094-1.742188.53125-.417969-.222656-.679688-.667968-.679688-1.144531v-.917969c0-.847656.679688-1.53125 1.511719-1.53125h.910157v-.6875c0-.335937-.273438-.613281-.609376-.613281-.332031 0-.601562.277344-.601562.613281h-1.210938c0-1.011718.8125-1.832031 1.8125-1.832031 1.003907 0 1.816407.820313 1.816407 1.832031zm-1.207031-2.675782h-.609376c-.332031 0-.601562.273438-.601562.613282v.304687c0 .335937.269531.609375.601562.609375.335938 0 .609376-.273438.609376-.609375zm0 0"/><path d="m22.910156 16.398438v-6.117188h1.207032v.613281c.335937-.632812 1.113281-.875 1.738281-.539062.417969.230469.679687.667969.679687 1.148437v4.894532h-1.210937v-4.359376c0-.335937-.269531-.613281-.601563-.613281-.335937 0-.605468.277344-.605468.613281v4.359376zm0 0"/><g clip-path="url(#b)"><path d="m31.222656 16.398438h-1.210937v-.609376c-.332031.632813-1.109375.871094-1.738281.53125-.417969-.222656-.679688-.667968-.679688-1.144531v-3.671875c0-.71875.578125-1.296875 1.285156-1.296875.476563 0 .910156.261719 1.132813.6875v-3.058593h1.210937zm-1.210937-1.757813v-2.601563c0-.335937-.269531-.613281-.601563-.613281-.335937 0-.605468.277344-.605468.613281v2.601563c0 .335937.269531.609375.605468.609375.332032 0 .601563-.273438.601563-.609375"/></g><path d="m33.414062 16.398438-1.433593-6.117188h1.28125l.757812 3.824219.679688-3.824219h.910156l.679687 3.824219.753907-3.824219h1.285156l-1.4375 6.117188h-1.058594l-.679687-3.671876-.679688 3.671876zm0 0"/><g clip-path="url(#c)"><path d="m39.085938 10.28125h1.210937v6.117188h-1.210937zm0-2.445312h1.210937v1.222656h-1.210937zm0 0"/></g><path d="m41.503906 16.398438v-6.117188h1.210938v.691406c.386718-.484375.96875-.765625 1.585937-.765625v1.285157c-.636719-.214844-1.320312.136718-1.527343.777343-.039063.125-.058594.253907-.058594.382813v3.746094zm0 0"/><path d="m47.476562 16.398438h-.605468c-.75 0-1.363282-.617188-1.363282-1.375v-3.746094h-.601562v-.996094h.601562v-1.832031h1.210938v1.832031h.757812v.996094h-.757812v3.589844c0 .210937.171875.382812.378906.382812h.378906zm0 0"/><path d="m48.535156 12.421875h3.628906v1.222656h-3.628906zm0 0"/><g clip-path="url(#d)"><path d="m9.753906 27.484375h1.136719c0 .382813.300781.6875.679687.6875.375 0 .679688-.304687.679688-.6875 0-.273437-.160156-.515625-.40625-.628906l-.976562-.363281c-.878907-.390626-1.277344-1.429688-.886719-2.320313.390625-.886719 1.414062-1.289063 2.292969-.894531.628906.28125 1.035156.910156 1.035156 1.609375h-1.136719c0-.339844-.269531-.613281-.601563-.613281-.335937 0-.605468.273437-.605468.613281 0 .242187.140625.460937.359375.558593l.980469.363282c.914062.410156 1.328124 1.496094.921874 2.421875s-1.476562 1.34375-2.390624.933593c-.660157-.296874-1.082032-.953124-1.082032-1.679687"/></g><path d="m17.765625 27.410156v.074219c0 1.015625-.808594 1.835937-1.8125 1.835937-1 0-1.8125-.820312-1.8125-1.835937v-2.597656c0-1.015625.8125-1.835938 1.8125-1.835938 1.003906 0 1.8125.820313 1.8125 1.835938v.078125h-1.207031v-.078125c0-.339844-.269532-.613281-.605469-.613281-.332031 0-.605469.273437-.605469.613281v2.597656c0 .339844.273438.613281.605469.613281.335937 0 .605469-.273437.605469-.613281v-.074219zm0 0"/><path d="m18.523438 29.242188v-8.5625h1.210937v3.058593c.332031-.632812 1.113281-.875 1.738281-.535156.417969.226563.679688.667969.679688 1.148437v4.890626h-1.210938v-4.355469c0-.339844-.269531-.613281-.601562-.613281-.335938 0-.605469.273437-.605469.613281v4.355469zm0 0"/><path d="m26.839844 29.242188h-1.210938v-.609376c-.335937.632813-1.113281.871094-1.738281.535157-.417969-.226563-.679687-.667969-.679687-1.148438v-.917969c0-.84375.675781-1.527343 1.511718-1.527343h.90625v-.6875c0-.339844-.269531-.613281-.605468-.613281-.332032 0-.601563.273437-.601563.613281h-1.210937c0-1.015625.8125-1.835938 1.8125-1.835938 1.003906 0 1.816406.820313 1.816406 1.835938zm-1.210938-2.675782h-.605468c-.332032 0-.601563.277344-.601563.613282v.304687c0 .339844.269531.613281.601563.613281.335937 0 .605468-.273437.605468-.613281zm0 0"/><path d="m28.199219 29.242188v-5.121094h-.605469v-.992188h.605469v-.917968c0-.84375.675781-1.53125 1.511719-1.53125h.605468v1.148437h-.527344c-.210937 0-.378906.171875-.378906.382813v.917968h.90625v.992188h-.90625v5.121094zm0 0"/><path d="m33.492188 29.242188h-.605469c-.75 0-1.359375-.617188-1.359375-1.375v-3.746094h-.605469v-.992188h.605469v-1.835937h1.207031v1.835937h.757813v.992188h-.757813v3.59375c0 .210937.171875.382812.378906.382812h.378907zm0 0"/><path d="m36.210938 29.242188h-.453126c-.75 0-1.359374-.617188-1.359374-1.375v-7.1875h1.210937v7.035156c0 .210937.167969.382812.378906.382812h.222657zm0 0"/><path d="m37.269531 23.128906h1.210938v6.113282h-1.210938zm0-2.449218h1.210938v1.226562h-1.210938zm0 0"/><path d="m43.316406 27.410156v.074219c0 1.015625-.808594 1.835937-1.8125 1.835937-1 0-1.8125-.820312-1.8125-1.835937v-2.597656c0-1.015625.8125-1.835938 1.8125-1.835938 1.003906 0 1.8125.820313 1.8125 1.835938v.078125h-1.207031v-.078125c0-.339844-.269531-.613281-.605469-.613281-.332031 0-.605468.273437-.605468.613281v2.597656c0 .339844.273437.613281.605468.613281.335938 0 .605469-.273437.605469-.613281v-.074219zm0 0"/><path d="m44.074219 29.242188v-8.5625h1.210937v3.058593c.332032-.632812 1.109375-.875 1.738282-.535156.417968.226563.679687.667969.679687 1.148437v4.890626h-1.210937v-4.355469c0-.339844-.269532-.613281-.605469-.613281-.332031 0-.601563.273437-.601563.613281v4.355469zm0 0"/><path d="m52.390625 27.484375c0 1.015625-.8125 1.835937-1.816406 1.835937-1 0-1.8125-.820312-1.8125-1.835937v-2.597656c0-1.015625.8125-1.835938 1.8125-1.835938 1.003906 0 1.816406.820313 1.816406 1.835938v1.757812h-2.417969v.839844c0 .339844.269532.613281.601563.613281.335937 0 .605469-.273437.605469-.613281zm-2.417969-1.835937h1.207032v-.761719c0-.339844-.269532-.613281-.605469-.613281-.332031 0-.601563.273437-.601563.613281zm0 0"/><g clip-path="url(#e)"><path d="m53.445312 29.242188v-6.113282h1.210938v.6875c.386719-.484375.972656-.765625 1.585938-.765625v1.285157c-.632813-.214844-1.316407.136718-1.523438.777343-.042969.125-.0625.253907-.0625.382813v3.746094zm0 0"/></g><g clip-path="url(#f)"><path d="m10.890625 42.089844-1.738281-8.566406h1.28125l.984375 5.964843.984375-5.964843h1.28125l-1.738282 8.566406zm0 0"/></g><g clip-path="url(#g)"><path d="m17.617188 40.332031c0 1.011719-.8125 1.832031-1.816407 1.832031-1 0-1.8125-.820312-1.8125-1.832031v-2.601562c0-1.011719.8125-1.835938 1.8125-1.835938 1.003907 0 1.816407.824219 1.816407 1.835938v1.757812h-2.417969v.84375c0 .335938.269531.609375.601562.609375.335938 0 .605469-.273437.605469-.609375zm-2.417969-1.835937h1.207031v-.765625c0-.335938-.269531-.609375-.605469-.609375-.332031 0-.601562.273437-.601562.609375zm0 0"/></g><g clip-path="url(#h)"><path d="m18.675781 42.089844v-6.117188h1.210938v.691406c.382812-.488281.96875-.769531 1.585937-.769531v1.285157c-.636718-.210938-1.320312.136718-1.527344.78125-.039062.121093-.058593.25-.058593.382812v3.746094zm0 0"/></g><g clip-path="url(#i)"><path d="m22.226562 42.089844v-8.566406h1.210938v5.125l1.511719-2.675782h1.210937l-1.4375 2.445313 1.738282 3.671875h-1.359376l-1.058593-2.601563-.605469.917969v1.683594zm0 0"/></g><g clip-path="url(#j)"><path d="m30.542969 40.332031c0 1.011719-.8125 1.832031-1.816407 1.832031-1 0-1.8125-.820312-1.8125-1.832031v-2.601562c0-1.011719.8125-1.835938 1.8125-1.835938 1.003907 0 1.816407.824219 1.816407 1.835938v1.757812h-2.417969v.84375c0 .335938.269531.609375.601562.609375.335938 0 .605469-.273437.605469-.609375zm-2.417969-1.835937h1.207031v-.765625c0-.335938-.269531-.609375-.605469-.609375-.332031 0-.601562.273437-.601562.609375zm0 0"/></g><g clip-path="url(#k)"><path d="m31.601562 42.089844v-8.566406h1.210938v3.058593c.332031-.632812 1.109375-.871093 1.738281-.535156.417969.226563.679688.667969.679688 1.148437v4.894532h-1.210938v-4.359375c0-.335938-.269531-.609375-.605469-.609375-.332031 0-.601562.273437-.601562.609375v4.359375zm0 0"/></g><g clip-path="url(#l)"><path d="m36.4375 42.089844v-6.117188h1.210938v.691406c.386718-.488281.972656-.769531 1.585937-.769531v1.285157c-.632813-.210938-1.316406.136718-1.523437.78125-.042969.121093-.0625.25-.0625.382812v3.746094zm0 0"/></g><g clip-path="url(#m)"><path d="m44.679688 42.089844v-5.125h-.605469v-.992188h.605469v-.917968c0-.84375.675781-1.53125 1.511718-1.53125h.605469v1.148437h-.53125c-.207031 0-.375.171875-.375.382813v.917968h.90625v.992188h-.90625v5.125zm0 0"/></g><g clip-path="url(#n)"><path d="m47.703125 42.089844v-6.117188h1.210937v.691406c.382813-.488281.96875-.769531 1.585938-.769531v1.285157c-.636719-.210938-1.320312.136718-1.527344.78125-.039062.121093-.058594.25-.058594.382812v3.746094zm0 0"/></g><g clip-path="url(#o)"><path d="m54.582031 40.332031c0 1.011719-.8125 1.832031-1.816406 1.832031-1 0-1.8125-.820312-1.8125-1.832031v-2.601562c0-1.011719.8125-1.835938 1.8125-1.835938 1.003906 0 1.816406.824219 1.816406 1.835938v1.757812h-2.417969v.84375c0 .335938.269532.609375.601563.609375.335937 0 .605469-.273437.605469-.609375zm-2.417969-1.835937h1.207032v-.765625c0-.335938-.269532-.609375-.605469-.609375-.332031 0-.601563.273437-.601563.609375zm0 0"/></g><g clip-path="url(#p)"><path d="m55.640625 35.972656h1.210937v6.117188h-1.210937zm0-2.445312h1.210937v1.222656h-1.210937zm0 0"/></g></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-37.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-37.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-37.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg"><path d="m4.398438.03125c-2.40625 0-4.3632818 1.980469-4.3632818 4.410156v41.113282c0 2.433593 1.9570318 4.410156 4.3632818 4.410156h57.203124c2.40625 0 4.367188-1.976563 4.367188-4.410156v-41.113282c0-2.429687-1.960938-4.410156-4.367188-4.410156" fill="#fff"/><path d="m4.398438 49.933594c-2.390626 0-4.3320318-1.964844-4.3320318-4.378906v-41.109376c0-2.414062 1.9414058-4.382812 4.3320318-4.382812h57.203124c2.390626 0 4.332032 1.96875 4.332032 4.382812v41.109376c0 2.414062-1.941406 4.378906-4.332032 4.378906zm57.203124-49.933594h-57.203124c-2.429688 0-4.398438 1.988281-4.398438 4.445312v41.109376c0 2.457031 1.96875 4.445312 4.398438 4.445312h57.203124c2.429688 0 4.398438-1.988281 4.398438-4.445312v-41.109376c0-2.457031-1.96875-4.445312-4.398438-4.445312"/><path d="m4.398438 48.886719c-1.820313 0-3.296876-1.492188-3.296876-3.332031v-41.113282c0-1.839844 1.476563-3.332031 3.296876-3.332031h57.203124c1.820313 0 3.300782 1.492187 3.300782 3.332031v41.113282c0 1.839843-1.480469 3.332031-3.300782 3.332031"/><path d="m4.398438 47.21875c-.910157 0-1.648438-.742188-1.648438-1.664062v-41.113282c0-.917968.738281-1.664062 1.648438-1.664062h57.203124c.910157 0 1.648438.746094 1.648438 1.664062v41.113282c0 .921874-.738281 1.664062-1.648438 1.664062" fill="#fff"/><path d="m13.109375 16.441406v-8.554687h3.632813v1.144531h-2.421876v2.597656h2.117188v1.148438h-2.117188v3.664062"/><path d="m18.554688 14.683594c0 .339844.273437.613281.605468.613281.335938 0 .605469-.273437.605469-.613281v-2.59375c0-.339844-.269531-.613282-.605469-.613282-.332031 0-.605468.273438-.605468.613282zm-1.207032 0v-2.59375c0-1.011719.808594-1.835938 1.8125-1.835938s1.816406.824219 1.816406 1.835938v2.59375c0 1.015625-.8125 1.835937-1.816406 1.835937s-1.8125-.820312-1.8125-1.835937"/><path d="m22.1875 16.441406v-6.109375h1.207031v.691407c.390625-.484376.972657-.769532 1.589844-.769532v1.285156c-.636719-.210937-1.320313.136719-1.527344.777344-.039062.125-.0625.253906-.0625.382813v3.742187"/><path d="m25.4375 14.683594h1.132812c0 .382812.308594.691406.683594.691406s.679688-.308594.679688-.691406c0-.269532-.160156-.515625-.40625-.625l-.980469-.363282c-.878906-.394531-1.273437-1.429687-.886719-2.316406.390625-.886718 1.417969-1.289062 2.296875-.894531.628907.28125 1.035157.910156 1.035157 1.605469h-1.136719c0-.339844-.269531-.613282-.601563-.613282-.335937 0-.605468.273438-.605468.613282 0 .242187.140624.460937.359374.558594l.980469.363281c.917969.40625 1.328125 1.492187.925781 2.417969-.40625.925781-1.480468 1.34375-2.398437.933593-.65625-.292969-1.078125-.953125-1.078125-1.679687"/><path d="m32.09375 16.441406h-.605469c-.753906 0-1.363281-.613281-1.363281-1.371094v-3.746093h-.601562v-.992188h.601562v-1.832031h1.210938v1.832031h.757812v.992188h-.757812v3.589843c0 .210938.167968.382813.378906.382813h.378906"/><path d="m34.136719 16.441406-1.4375-6.109375h1.285156l.753906 3.820313.679688-3.820313h.910156l.679687 3.820313.757813-3.820313h1.285156l-1.4375 6.109375h-1.058593l-.679688-3.664062-.683594 3.664062"/><path d="m41.015625 9.109375h-1.207031v-1.222656h1.207031zm-1.207031 7.332031v-6.109375h1.207031v6.109375"/><path d="m42.226562 16.441406v-6.109375h1.210938v.691407c.386719-.484376.972656-.769532 1.585938-.769532v1.285156c-.632813-.210937-1.320313.136719-1.527344.777344-.039063.125-.058594.253906-.058594.382813v3.742187"/><path d="m48.203125 16.441406h-.609375c-.75 0-1.359375-.613281-1.359375-1.371094v-3.746093h-.605469v-.992188h.605469v-1.832031h1.210937v1.832031h.757813v.992188h-.757813v3.589843c0 .210938.171876.382813.378907.382813h.378906"/><path d="m49.261719 12.46875h3.628906v1.222656h-3.628906zm0 0"/><path d="m9.746094 27.519531h1.132812c0 .378907.304688.6875.679688.6875.378906 0 .683594-.308593.683594-.6875 0-.273437-.160157-.519531-.40625-.628906l-.980469-.363281c-.878907-.390625-1.273438-1.429688-.886719-2.316406.390625-.886719 1.417969-1.289063 2.296875-.894532.628906.28125 1.035156.910156 1.035156 1.605469h-1.136719c0-.335937-.269531-.609375-.605468-.609375-.332032 0-.601563.273438-.601563.609375 0 .242187.140625.460937.359375.558594l.980469.363281c.917969.410156 1.328125 1.492188.921875 2.417969s-1.476562 1.34375-2.394531.933593c-.65625-.292968-1.078125-.949218-1.078125-1.675781"/><path d="m17.761719 27.445312v.074219c0 1.011719-.8125 1.832031-1.816407 1.832031-1 0-1.8125-.820312-1.8125-1.832031v-2.597656c0-1.011719.8125-1.832031 1.8125-1.832031 1.003907 0 1.816407.820312 1.816407 1.832031v.074219h-1.210938v-.074219c0-.335937-.269531-.609375-.605469-.609375-.332031 0-.605468.273438-.605468.609375v2.597656c0 .335938.273437.609375.605468.609375.335938 0 .605469-.273437.605469-.609375v-.074219"/><path d="m18.519531 29.277344v-8.554688h1.207031v3.054688c.335938-.632813 1.113282-.871094 1.742188-.535156.417969.222656.679688.667968.679688 1.144531v4.890625h-1.210938v-4.355469c0-.335937-.269531-.609375-.605469-.609375-.332031 0-.605469.273438-.605469.609375v4.355469"/><path d="m25.628906 26.601562h-.605468c-.335938 0-.605469.273438-.605469.613282v.304687c0 .339844.269531.613281.605469.613281.332031 0 .605468-.273437.605468-.613281zm1.207032 2.675782h-1.207032v-.613282c-.335937.632813-1.113281.875-1.742187.539063-.417969-.230469-.679688-.667969-.679688-1.148437v-.917969c0-.84375.675781-1.527344 1.511719-1.527344h.910156v-.6875c0-.335937-.273437-.609375-.605468-.609375-.335938 0-.605469.273438-.605469.609375h-1.210938c0-1.011719.8125-1.832031 1.816407-1.832031 1 0 1.8125.820312 1.8125 1.832031"/><path d="m28.195312 29.277344v-5.117188h-.601562v-.992187h.601562v-.917969c0-.84375.679688-1.527344 1.515626-1.527344h.605468v1.144532h-.53125c-.207031 0-.375.171874-.375.382812v.917969h.90625v.992187h-.90625v5.117188"/><path d="m33.492188 29.277344h-.605469c-.753907 0-1.363281-.617188-1.363281-1.375v-3.742188h-.601563v-.992187h.601563v-1.835938h1.210937v1.835938h.757813v.992187h-.757813v3.589844c0 .210938.171875.382812.378906.382812h.378907"/><path d="m36.214844 29.277344h-.453125c-.753907 0-1.363281-.617188-1.363281-1.375v-7.179688h1.210937v7.027344c0 .210938.171875.382812.378906.382812h.226563"/><path d="m38.484375 21.941406h-1.210937v-1.21875h1.210937zm-1.210937 7.335938v-6.109375h1.210937v6.109375"/><path d="m43.324219 27.445312v.074219c0 1.011719-.8125 1.832031-1.816407 1.832031-1.003906 0-1.8125-.820312-1.8125-1.832031v-2.597656c0-1.011719.808594-1.832031 1.8125-1.832031 1.003907 0 1.816407.820312 1.816407 1.832031v.074219h-1.210938v-.074219c0-.335937-.269531-.609375-.605469-.609375-.332031 0-.605468.273438-.605468.609375v2.597656c0 .335938.273437.609375.605468.609375.335938 0 .605469-.273437.605469-.609375v-.074219"/><path d="m44.078125 29.277344v-8.554688h1.210937v3.054688c.335938-.632813 1.113282-.871094 1.738282-.535156.421875.222656.683594.667968.683594 1.144531v4.890625h-1.210938v-4.355469c0-.335937-.273438-.609375-.605469-.609375-.335937 0-.605469.273438-.605469.609375v4.355469"/><path d="m49.976562 25.6875h1.210938v-.765625c0-.335937-.269531-.609375-.601562-.609375-.335938 0-.609376.273438-.609376.609375zm2.421876 1.832031c0 1.011719-.8125 1.832031-1.8125 1.832031-1.003907 0-1.816407-.820312-1.816407-1.832031v-2.597656c0-1.011719.8125-1.832031 1.816407-1.832031 1 0 1.8125.820312 1.8125 1.832031v1.757813h-2.421876v.839843c0 .339844.273438.613281.609376.613281.332031 0 .601562-.273437.601562-.613281"/><path d="m53.457031 29.277344v-6.109375h1.210938v.6875c.386719-.484375.972656-.765625 1.585937-.765625v1.28125c-.632812-.210938-1.316406.140625-1.523437.78125-.042969.121094-.0625.25-.0625.382812v3.742188"/><path d="m10.878906 42.109375-1.738281-8.554687h1.285156l.984375 5.957031.980469-5.957031h1.289063l-1.742188 8.554687"/><path d="m15.191406 38.519531h1.210938v-.761719c0-.339843-.273438-.613281-.605469-.613281-.335937 0-.605469.273438-.605469.613281zm2.417969 1.832031c0 1.015626-.8125 1.835938-1.8125 1.835938-1.003906 0-1.816406-.820312-1.816406-1.835938v-2.59375c0-1.015624.8125-1.835937 1.816406-1.835937 1 0 1.8125.820313 1.8125 1.835937v1.753907h-2.417969v.839843c0 .339844.269532.613282.605469.613282.332031 0 .605469-.273438.605469-.613282"/><path d="m18.667969 42.109375v-6.109375h1.210937v.6875c.386719-.484375.972656-.765625 1.589844-.765625v1.285156c-.636719-.210937-1.320312.136719-1.53125.777344-.039062.125-.058594.253906-.058594.382813v3.742187"/><path d="m22.222656 42.109375v-8.554687h1.210938v5.117187l1.511718-2.671875h1.210938l-1.4375 2.441406 1.738281 3.667969h-1.359375l-1.058594-2.597656-.605468.917969v1.679687"/><path d="m28.121094 38.519531h1.210937v-.761719c0-.339843-.269531-.613281-.605469-.613281-.332031 0-.605468.273438-.605468.613281zm2.421875 1.832031c0 1.015626-.8125 1.835938-1.816407 1.835938-1 0-1.8125-.820312-1.8125-1.835938v-2.59375c0-1.015624.8125-1.835937 1.8125-1.835937 1.003907 0 1.816407.820313 1.816407 1.835937v1.753907h-2.421875v.839843c0 .339844.273437.613282.605468.613282.335938 0 .605469-.273438.605469-.613282"/><path d="m31.601562 42.109375v-8.554687h1.210938v3.054687c.332031-.632813 1.109375-.871094 1.738281-.535156.417969.226562.679688.667969.679688 1.144531v4.890625h-1.210938v-4.351563c0-.339843-.269531-.613281-.601562-.613281-.335938 0-.605469.273438-.605469.613281v4.351563"/><path d="m36.441406 42.109375v-6.109375h1.210938v.6875c.386718-.484375.96875-.765625 1.589844-.765625v1.285156c-.636719-.210937-1.320313.136719-1.53125.777344-.039063.125-.058594.253906-.058594.382813v3.742187"/><path d="m44.683594 42.109375v-5.117187h-.605469v-.992188h.605469v-.917969c0-.84375.679687-1.527343 1.511718-1.527343h.609376v1.144531h-.53125c-.210938 0-.378907.171875-.378907.382812v.917969h.910157v.992188h-.910157v5.117187"/><path d="m47.710938 42.109375v-6.109375h1.207031v.6875c.390625-.484375.972656-.765625 1.589843-.765625v1.285156c-.632812-.210937-1.320312.136719-1.527343.777344-.039063.125-.0625.253906-.0625.382813v3.742187"/><path d="m52.171875 38.519531h1.210937v-.761719c0-.339843-.273437-.613281-.605468-.613281-.335938 0-.605469.273438-.605469.613281zm2.417969 1.832031c0 1.015626-.8125 1.835938-1.8125 1.835938-1.003906 0-1.816406-.820312-1.816406-1.835938v-2.59375c0-1.015624.8125-1.835937 1.816406-1.835937 1 0 1.8125.820313 1.8125 1.835937v1.753907h-2.417969v.839843c0 .339844.269531.613282.605469.613282.332031 0 .605468-.273438.605468-.613282"/><path d="m56.859375 34.777344h-1.210937v-1.222656h1.210937zm-1.210937 7.332031v-6.109375h1.210937v6.109375"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-38.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-38.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-38.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 66 50" width="66pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m12 7.761719h5v9.238281h-5zm0 0"/></clipPath><clipPath id="b"><path d="m26 7.761719h5v9.238281h-5zm0 0"/></clipPath><clipPath id="c"><path d="m49 7.761719h5v9.238281h-5zm0 0"/></clipPath><clipPath id="d"><path d="m8.097656 20h2.902344v10h-2.902344zm0 0"/></clipPath><clipPath id="e"><path d="m56 28h1.929688v2h-1.929688zm0 0"/></clipPath><clipPath id="f"><path d="m9 33h5v9.265625h-5zm0 0"/></clipPath><clipPath id="g"><path d="m13 35h5v7.265625h-5zm0 0"/></clipPath><clipPath id="h"><path d="m18 35h4v7.265625h-4zm0 0"/></clipPath><clipPath id="i"><path d="m22 33h5v9.265625h-5zm0 0"/></clipPath><clipPath id="j"><path d="m26 35h5v7.265625h-5zm0 0"/></clipPath><clipPath id="k"><path d="m31 33h5v9.265625h-5zm0 0"/></clipPath><clipPath id="l"><path d="m36 35h4v7.265625h-4zm0 0"/></clipPath><clipPath id="m"><path d="m44 33h3v9.265625h-3zm0 0"/></clipPath><clipPath id="n"><path d="m47 35h4v7.265625h-4zm0 0"/></clipPath><clipPath id="o"><path d="m50 35h5v7.265625h-5zm0 0"/></clipPath><clipPath id="p"><path d="m55 33h2v9.265625h-2zm0 0"/></clipPath><path d="m4.417969.0546875c-2.40625 0-4.3632815 1.9765625-4.3632815 4.4062505v41.078124c0 2.429688 1.9570315 4.40625 4.3632815 4.40625h57.164062c2.40625 0 4.363281-1.976562 4.363281-4.40625v-41.078124c0-2.429688-1.957031-4.4062505-4.363281-4.4062505zm0 0" fill="#fff"/><path d="m4.417969 1.132812c-1.820313 0-3.296875 1.488282-3.296875 3.328126v41.078124c0 1.839844 1.476562 3.328126 3.296875 3.328126h57.164062c1.820313 0 3.296875-1.488282 3.296875-3.328126v-41.078124c0-1.839844-1.476562-3.328126-3.296875-3.328126zm0 1.664063h57.164062c.910157 0 1.648438.746094 1.648438 1.664063v41.078124c0 .921876-.738281 1.664063-1.648438 1.664063h-57.164062c-.910157 0-1.648438-.742187-1.648438-1.664063v-41.078124c0-.917969.738281-1.664063 1.648438-1.664063zm0 0"/><path d="m4.417969 0c-2.433594 0-4.417969 2-4.417969 4.460938v41.078124c0 2.457032 1.984375 4.460938 4.417969 4.460938h57.164062c2.433594 0 4.417969-2.003906 4.417969-4.460938v-41.078124c0-2.460938-1.984375-4.460938-4.417969-4.460938zm0 .0546875h57.164062c2.40625 0 4.363281 1.9765625 4.363281 4.4062505v41.078124c0 2.429688-1.957031 4.40625-4.363281 4.40625h-57.164062c-2.40625 0-4.3632815-1.976562-4.3632815-4.40625v-41.078124c0-2.429688 1.9570315-4.4062505 4.3632815-4.4062505zm0 0"/><g clip-path="url(#a)"><path d="m12.742188 16.398438v-8.5625h1.210937v7.339843h2.417969v1.222657zm0 0"/></g><path d="m20.601562 16.398438h-1.207031v-.609376c-.335937.632813-1.113281.871094-1.738281.53125-.417969-.222656-.683594-.664062-.683594-1.144531v-.917969c0-.84375.679688-1.527343 1.515625-1.527343h.90625v-.691407c0-.335937-.273437-.609374-.605469-.609374-.335937 0-.605468.273437-.605468.609374h-1.210938c0-1.011718.8125-1.832031 1.816406-1.832031 1 0 1.8125.820313 1.8125 1.832031zm-1.207031-2.675782h-.605469c-.335937 0-.605468.273438-.605468.613282v.304687c0 .339844.269531.613281.605468.613281.332032 0 .605469-.273437.605469-.613281zm0 0"/><path d="m21.8125 16.398438v-6.117188h1.210938v.613281c.332031-.632812 1.109374-.875 1.738281-.535156.417969.226563.679687.664063.679687 1.144531v4.894532h-1.210937v-4.359376c0-.335937-.269531-.609374-.605469-.609374-.332031 0-.601562.273437-.601562.609374v4.359376zm0 0"/><g clip-path="url(#b)"><path d="m30.125 16.398438h-1.207031v-.609376c-.335938.632813-1.113281.871094-1.738281.53125-.417969-.222656-.679688-.664062-.679688-1.144531v-3.671875c0-.71875.574219-1.296875 1.285156-1.296875.472656 0 .910156.265625 1.132813.6875v-3.058593h1.207031zm-1.207031-1.757813v-2.601563c0-.335937-.269531-.609374-.605469-.609374-.332031 0-.605469.273437-.605469.609374v2.601563c0 .339844.273438.613281.605469.613281.335938 0 .605469-.273437.605469-.613281"/></g><path d="m31.640625 12.425781h3.625v1.222657h-3.625zm0 0"/><path d="m43.734375 16.398438h-1.210937v-.609376c-.332032.632813-1.113282.871094-1.738282.53125-.417968-.222656-.679687-.664062-.679687-1.144531v-4.894531h1.210937v4.359375c0 .339844.269532.613281.601563.613281.335937 0 .605469-.273437.605469-.613281v-4.359375h1.210937zm0 0"/><path d="m44.945312 16.398438v-6.117188h1.207032v.613281c.335937-.632812 1.113281-.875 1.738281-.535156.417969.226563.679687.664063.679687 1.144531v4.894532h-1.207031v-4.359376c0-.335937-.273437-.609374-.605469-.609374-.335937 0-.605468.273437-.605468.609374v4.359376zm0 0"/><g clip-path="url(#c)"><path d="m53.257812 16.398438h-1.210937v-.609376c-.332031.632813-1.109375.871094-1.738281.53125-.417969-.222656-.679688-.664062-.679688-1.144531v-3.671875c0-.71875.578125-1.296875 1.285156-1.296875.476563 0 .914063.265625 1.132813.6875v-3.058593h1.210937zm-1.210937-1.757813v-2.601563c0-.335937-.269531-.609374-.601563-.609374-.335937 0-.605468.273437-.605468.609374v2.601563c0 .339844.269531.613281.605468.613281.332032 0 .601563-.273437.601563-.613281"/></g><g clip-path="url(#d)"><path d="m8.808594 29.246094v-5.125h-.601563v-.992188h.601563v-.917968c0-.84375.675781-1.53125 1.511718-1.53125h.605469v1.148437h-.527343c-.210938 0-.378907.171875-.378907.382813v.917968h.90625v.992188h-.90625v5.125zm0 0"/></g><path d="m11.53125 27.484375v-2.597656c0-1.015625.8125-1.835938 1.8125-1.835938 1.003906 0 1.816406.820313 1.816406 1.835938v2.597656c0 1.015625-.8125 1.835937-1.816406 1.835937-1 0-1.8125-.820312-1.8125-1.835937m1.210938 0c0 .339844.269531.613281.601562.613281.335938 0 .605469-.273437.605469-.613281v-2.597656c0-.339844-.269531-.613281-.605469-.613281-.332031 0-.601562.273437-.601562.613281zm0 0"/><path d="m16.371094 29.246094v-6.117188h1.207031v.6875c.386719-.484375.972656-.765625 1.585937-.765625v1.285157c-.632812-.210938-1.316406.136718-1.523437.777343-.039063.125-.0625.253907-.0625.382813v3.75zm0 0"/><path d="m19.621094 27.484375h1.132812c0 .382813.304688.6875.679688.6875s.679687-.304687.679687-.6875c0-.269531-.15625-.515625-.402343-.628906l-.980469-.363281c-.878907-.390626-1.273438-1.429688-.886719-2.320313.390625-.886719 1.417969-1.289063 2.292969-.894531.628906.28125 1.035156.910156 1.035156 1.609375h-1.132813c0-.339844-.269531-.613281-.605468-.613281-.332032 0-.605469.273437-.605469.613281 0 .242187.140625.460937.363281.558593l.976563.363282c.917969.410156 1.332031 1.496094.925781 2.421875s-1.476562 1.34375-2.394531.933593c-.65625-.292968-1.078125-.953124-1.078125-1.679687"/><path d="m26.273438 29.246094h-.605469c-.753907 0-1.363281-.617188-1.363281-1.378906v-3.746094h-.601563v-.992188h.601563v-1.835937h1.210937v1.835937h.757813v.992188h-.757813v3.59375c0 .210937.171875.382812.378906.382812h.378907zm0 0"/><path d="m28.3125 29.246094-1.4375-6.117188h1.289062l.753907 3.820313.679687-3.820313h.90625l.679688 3.820313.757812-3.820313h1.285156l-1.433593 6.117188h-1.0625l-.679688-3.671875-.679687 3.671875zm0 0"/><path d="m33.984375 23.125h1.207031v6.117188h-1.207031zm0-2.445312h1.207031v1.226562h-1.207031zm0 0"/><path d="m36.402344 29.246094v-6.117188h1.210937v.6875c.382813-.484375.96875-.765625 1.585938-.765625v1.285157c-.636719-.210938-1.320313.136718-1.527344.777343-.039063.125-.058594.253907-.058594.382813v3.75zm0 0"/><path d="m42.375 29.246094h-.605469c-.753906 0-1.363281-.617188-1.363281-1.378906v-3.746094h-.601562v-.992188h.601562v-1.835937h1.210938v1.835937h.757812v.992188h-.757812v3.59375c0 .210937.171874.382812.378906.382812h.378906zm0 0"/><path d="m43.128906 27.484375h1.132813c0 .382813.304687.6875.683593.6875.375 0 .679688-.304687.679688-.6875 0-.269531-.160156-.515625-.40625-.628906l-.980469-.363281c-.878906-.390626-1.273437-1.429688-.886719-2.320313.390626-.886719 1.417969-1.289063 2.296876-.894531.625.28125 1.03125.910156 1.03125 1.609375h-1.132813c0-.339844-.269531-.613281-.601563-.613281-.335937 0-.605468.273437-.605468.613281 0 .242187.140625.460937.359375.558593l.976562.363282c.917969.410156 1.332031 1.496094.925781 2.421875s-1.476562 1.34375-2.390624.933593c-.65625-.292968-1.082032-.953124-1.082032-1.679687"/><path d="m51.140625 27.410156v.074219c0 1.015625-.8125 1.835937-1.8125 1.835937-1.003906 0-1.816406-.820312-1.816406-1.835937v-2.597656c0-1.015625.8125-1.835938 1.816406-1.835938 1 0 1.8125.820313 1.8125 1.835938v.078125h-1.207031v-.078125c0-.339844-.273438-.609375-.605469-.609375-.335937 0-.605469.269531-.605469.609375v2.597656c0 .339844.269532.613281.605469.613281.332031 0 .605469-.273437.605469-.613281v-.074219zm0 0"/><path d="m51.898438 29.246094v-8.566406h1.210937v3.058593c.332031-.632812 1.109375-.871093 1.738281-.535156.417969.226563.679688.667969.679688 1.148437v4.894532h-1.210938v-4.359375c0-.339844-.269531-.609375-.605468-.609375-.332032 0-.601563.269531-.601563.609375v4.359375zm0 0"/><g clip-path="url(#e)"><path d="m56.582031 28.019531h1.210938v1.226563h-1.210938zm0 0"/></g><g clip-path="url(#f)"><path d="m10.890625 42.089844-1.738281-8.5625h1.28125l.984375 5.960937.984375-5.960937h1.28125l-1.738282 8.5625zm0 0"/></g><g clip-path="url(#g)"><path d="m17.617188 40.332031c0 1.011719-.8125 1.835938-1.816407 1.835938-1 0-1.8125-.824219-1.8125-1.835938v-2.601562c0-1.011719.8125-1.835938 1.8125-1.835938 1.003907 0 1.816407.824219 1.816407 1.835938v1.757812h-2.417969v.84375c0 .335938.269531.609375.601562.609375.335938 0 .605469-.273437.605469-.609375zm-2.417969-1.835937h1.207031v-.765625c0-.335938-.269531-.609375-.605469-.609375-.332031 0-.601562.273437-.601562.609375zm0 0"/></g><g clip-path="url(#h)"><path d="m18.675781 42.089844v-6.117188h1.210938v.691406c.382812-.484374.96875-.765624 1.585937-.765624v1.28125c-.636718-.210938-1.320312.140624-1.527344.78125-.039062.121093-.058593.253906-.058593.382812v3.746094zm0 0"/></g><g clip-path="url(#i)"><path d="m22.226562 42.089844v-8.5625h1.210938v5.121094l1.511719-2.675782h1.210937l-1.4375 2.445313 1.738282 3.671875h-1.359376l-1.058593-2.601563-.605469.917969v1.683594zm0 0"/></g><g clip-path="url(#j)"><path d="m30.542969 40.332031c0 1.011719-.8125 1.835938-1.816407 1.835938-1 0-1.8125-.824219-1.8125-1.835938v-2.601562c0-1.011719.8125-1.835938 1.8125-1.835938 1.003907 0 1.816407.824219 1.816407 1.835938v1.757812h-2.417969v.84375c0 .335938.269531.609375.601562.609375.335938 0 .605469-.273437.605469-.609375zm-2.417969-1.835937h1.207031v-.765625c0-.335938-.269531-.609375-.605469-.609375-.332031 0-.601562.273437-.601562.609375zm0 0"/></g><g clip-path="url(#k)"><path d="m31.601562 42.089844v-8.5625h1.210938v3.058594c.332031-.632813 1.109375-.875 1.738281-.539063.417969.226563.679688.667969.679688 1.148437v4.894532h-1.210938v-4.359375c0-.335938-.269531-.613281-.605469-.613281-.332031 0-.601562.277343-.601562.613281v4.359375zm0 0"/></g><g clip-path="url(#l)"><path d="m36.4375 42.089844v-6.117188h1.210938v.691406c.386718-.484374.972656-.765624 1.585937-.765624v1.28125c-.632813-.210938-1.316406.140624-1.523437.78125-.042969.121093-.0625.253906-.0625.382812v3.746094zm0 0"/></g><g clip-path="url(#m)"><path d="m44.679688 42.089844v-5.121094h-.605469v-.996094h.605469v-.917968c0-.84375.675781-1.527344 1.511718-1.527344h.605469v1.144531h-.53125c-.207031 0-.375.171875-.375.382813v.917968h.90625v.996094h-.90625v5.121094zm0 0"/></g><g clip-path="url(#n)"><path d="m47.703125 42.089844v-6.117188h1.210937v.691406c.382813-.484374.96875-.765624 1.585938-.765624v1.28125c-.636719-.210938-1.320312.140624-1.527344.78125-.039062.121093-.058594.253906-.058594.382812v3.746094zm0 0"/></g><g clip-path="url(#o)"><path d="m54.582031 40.332031c0 1.011719-.8125 1.835938-1.816406 1.835938-1 0-1.8125-.824219-1.8125-1.835938v-2.601562c0-1.011719.8125-1.835938 1.8125-1.835938 1.003906 0 1.816406.824219 1.816406 1.835938v1.757812h-2.417969v.84375c0 .335938.269532.609375.601563.609375.335937 0 .605469-.273437.605469-.609375zm-2.417969-1.835937h1.207032v-.765625c0-.335938-.269532-.609375-.605469-.609375-.332031 0-.601563.273437-.601563.609375zm0 0"/></g><g clip-path="url(#p)"><path d="m55.640625 35.972656h1.210937v6.117188h-1.210937zm0-2.445312h1.210937v1.222656h-1.210937zm0 0"/></g></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-39.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-39.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1026-39.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 90 50" width="90pt" xmlns="http://www.w3.org/2000/svg"><path d="m6.066406 49.925781c-3.308594 0-5.9921872-2.714843-5.9921872-6.0625v-37.722656c0-3.347656 2.6835932-6.0664062 5.9921872-6.0664062h77.871094c3.308594 0 5.988281 2.7187502 5.988281 6.0664062v37.722656c0 3.347657-2.679687 6.0625-5.988281 6.0625zm0 0" fill="#fff"/><path d="m6.066406 48.410156c-2.484375 0-4.492187-2.035156-4.492187-4.550781v-37.71875c0-2.511719 2.007812-4.546875 4.492187-4.546875h77.871094c2.476562 0 4.492188 2.035156 4.492188 4.546875v37.71875c0 2.515625-2.015626 4.550781-4.492188 4.550781zm0 0"/><path d="m6.066406 46.136719c-1.242187 0-2.25-1.019531-2.25-2.277344v-37.71875c0-1.253906 1.007813-2.273437 2.25-2.273437h77.871094c1.242188 0 2.242188 1.019531 2.242188 2.273437v37.71875c0 1.257813-1 2.277344-2.242188 2.277344zm0 0" fill="#fff"/><path d="m16.125 15.886719v-8.980469h2.058594c1.136718 0 2.058594.933594 2.058594 2.085938v.71875c0 .613281-.34375 1.175781-.890626 1.445312.546876.265625.890626.828125.890626 1.445312v1.203126c0 1.152343-.921876 2.082031-2.058594 2.082031zm1.269531-1.28125h.789063c.484375 0 .871094-.394531.871094-.882813v-1.121094c0-.488281-.386719-.882812-.871094-.882812h-.789063zm0-4.011719h.789063c.484375 0 .871094-.394531.871094-.882812v-.71875c0-.488282-.386719-.882813-.871094-.882813h-.789063zm7.765625 3.449219c0 1.0625-.855468 1.925781-1.902344 1.925781-1.050781 0-1.902343-.863281-1.902343-1.925781v-2.726563c0-1.0625.851562-1.925781 1.902343-1.925781 1.046876 0 1.902344.863281 1.902344 1.925781v1.84375h-2.539062v.882813c0 .355469.285156.640625.636718.640625.351563 0 .632813-.285156.632813-.640625zm-2.539062-1.925781h1.269531v-.800782c0-.355468-.28125-.644531-.632813-.644531-.351562 0-.636718.289063-.636718.644531zm5.867187 3.769531h-.636719c-.789062 0-1.425781-.644531-1.425781-1.441407v-3.929687h-.632812v-1.046875h.632812v-1.921875h1.265625v1.921875h.796875v1.046875h-.796875v3.769531c0 .21875.179688.398438.398438.398438h.398437zm1.105469 0v-6.417969h1.269531v.726562c.40625-.507812 1.019531-.804687 1.664063-.804687v1.347656c-.664063-.222656-1.382813.144531-1.597656.816407-.042969.128906-.066407.265624-.066407.402343v3.929688zm3.566406-6.417969h1.269532v6.417969h-1.269532zm0-2.5625h1.269532v1.28125h-1.269532zm6.339844 7.136719c0 1.0625-.851562 1.925781-1.902344 1.925781-1.050781 0-1.898437-.863281-1.898437-1.925781v-2.726563c0-1.0625.847656-1.925781 1.898437-1.925781 1.050782 0 1.902344.863281 1.902344 1.925781v1.84375h-2.535156v.882813c0 .355469.285156.640625.632812.640625.351563 0 .632813-.285156.632813-.640625zm-2.535156-1.925781h1.265625v-.800782c0-.355468-.28125-.644531-.632813-.644531-.347656 0-.632812.289063-.632812.644531zm3.644531 3.769531v-8.980469h1.269531v3.207031c.351563-.664062 1.164063-.917969 1.820313-.5625.441406.238281.714843.699219.714843 1.203125v3.851563c0 .75-.605468 1.363281-1.347656 1.363281-.496094 0-.953125-.277344-1.1875-.722656v.640625zm1.269531-1.84375c0 .355469.285156.640625.632813.640625.351562 0 .632812-.285156.632812-.640625v-2.726563c0-.355468-.28125-.644531-.632812-.644531-.347657 0-.632813.289063-.632813.644531zm3.328125 0h1.1875c0 .398437.320313.722656.714844.722656s.710937-.324219.710937-.722656c0-.285157-.164062-.542969-.421874-.660157l-1.027344-.378906c-.921875-.414062-1.335938-1.503906-.929688-2.433594.40625-.933593 1.484375-1.351562 2.40625-.941406.65625.296875 1.082032.957032 1.082032 1.6875h-1.1875c0-.355468-.285157-.644531-.632813-.644531-.351563 0-.636719.289063-.636719.644531 0 .253906.148438.484375.375.585938l1.03125.382812c.957032.429688 1.394532 1.566406.96875 2.539063-.425781.972656-1.550781 1.410156-2.507812.980469-.6875-.308594-1.132813-1-1.132813-1.761719m5.070313-2.324219h3.800781v1.285156h-3.800781zm12.679687 4.167969h-1.269531v-.640625c-.347656.664062-1.164062.917968-1.824219.5625-.433593-.234375-.710937-.699219-.710937-1.203125v-5.136719h1.265625v4.574219c0 .355469.285156.640625.636719.640625.351562 0 .632812-.285156.632812-.640625v-4.574219h1.269531zm1.265625 0v-6.417969h1.269532v.644531c.351562-.664062 1.164062-.917969 1.824218-.5625.4375.238281.710938.699219.710938 1.203125v5.132813h-1.269532v-4.570313c0-.355468-.28125-.644531-.632812-.644531-.347656 0-.632812.289063-.632812.644531v4.570313zm8.71875 0h-1.269531v-.640625c-.347656.664062-1.167969.917968-1.820313.5625-.441406-.234375-.714843-.699219-.714843-1.203125v-3.851563c0-.75.605469-1.363281 1.347656-1.363281.496094 0 .953125.277344 1.1875.722656v-3.207031h1.269531zm-1.269531-1.84375v-2.726563c0-.355468-.285156-.644531-.632813-.644531-.347656 0-.632812.289063-.632812.644531v2.726563c0 .355469.285156.640625.632812.640625.347657 0 .632813-.285156.632813-.640625"/><path d="m8.636719 28.617188-1.824219-8.984376h1.347656l1.03125 6.257813 1.03125-6.257813h1.34375l-1.820312 8.984376zm7.054687-1.847657c0 1.066407-.855468 1.925781-1.902344 1.925781-1.050781 0-1.90625-.859374-1.90625-1.925781v-2.726562c0-1.0625.855469-1.925781 1.90625-1.925781 1.046876 0 1.902344.863281 1.902344 1.925781v1.847656h-2.539062v.878906c0 .355469.28125.644531.636718.644531.347657 0 .632813-.289062.632813-.644531zm-2.539062-1.925781h1.269531v-.800781c0-.351563-.285156-.640625-.632813-.640625-.355468 0-.636718.289062-.636718.640625zm3.644531 3.773438v-6.417969h1.269531v.726562c.40625-.511719 1.019532-.808593 1.664063-.808593v1.347656c-.664063-.21875-1.382813.148437-1.601563.820312-.039062.128906-.0625.261719-.0625.402344v3.929688zm3.40625-1.847657h1.191406c0 .402344.316407.726563.710938.726563s.714843-.324219.714843-.726563c0-.285156-.167968-.542969-.421874-.660156l-1.03125-.378906c-.917969-.414063-1.332032-1.503907-.925782-2.433594.40625-.933594 1.484375-1.351563 2.402344-.9375.664062.292969 1.085938.953125 1.085938 1.683594h-1.1875c0-.351563-.285157-.640625-.636719-.640625-.347657 0-.632813.289062-.632813.640625 0 .253906.148438.484375.378906.585937l1.027344.382813c.960938.429687 1.390625 1.566406.96875 2.539062-.425781.972657-1.550781 1.410157-2.511718.980469-.6875-.308594-1.132813-1-1.132813-1.761719m4.597656 0v-2.726562c0-1.0625.851563-1.925781 1.902344-1.925781s1.902344.863281 1.902344 1.925781v2.726562c0 1.066407-.851563 1.925781-1.902344 1.925781s-1.902344-.859374-1.902344-1.925781m1.269531 0c0 .355469.28125.644531.632813.644531s.632813-.289062.632813-.644531v-2.726562c0-.351563-.28125-.640625-.632813-.640625s-.632813.289062-.632813.640625zm3.800782 1.847657v-6.417969h1.269531v.726562c.40625-.511719 1.019531-.808593 1.664063-.808593v1.347656c-.664063-.21875-1.382813.148437-1.601563.820312-.042969.128906-.0625.261719-.0625.402344v3.929688zm4.835937.722656c0 .351562.285157.636718.632813.636718s.632812-.285156.632812-.636718v-1.367188c-.347656.664063-1.164062.917969-1.820312.5625-.441406-.238281-.714844-.699218-.714844-1.203125v-3.847656c0-.753906.605469-1.367187 1.347656-1.367187.5 0 .953125.277343 1.1875.722656v-.640625h1.269532v7.140625c0 1.0625-.851563 1.921875-1.902344 1.921875-1.050782 0-1.902344-.859375-1.902344-1.921875zm1.265625-2.570313v-2.726562c0-.351563-.285156-.640625-.632812-.640625s-.632813.289062-.632813.640625v2.726562c0 .355469.285157.644531.632813.644531s.632812-.289062.632812-.644531m6.339844 1.847657h-1.265625v-.644532c-.351563.664063-1.167969.917969-1.824219.5625-.441406-.238281-.714844-.699218-.714844-1.203125v-5.132812h1.269532v4.570312c0 .355469.285156.644531.632812.644531.351563 0 .636719-.289062.636719-.644531v-4.570312h1.265625zm1.269531 0v-6.417969h1.265625v.640625c.351563-.664063 1.167969-.917969 1.824219-.558594.4375.234375.714844.695312.714844 1.203125v5.132813h-1.269531v-4.574219c0-.351563-.28125-.640625-.636719-.640625-.347657 0-.632813.289062-.632813.640625v4.574219zm6.179688.722656c0 .351562.285156.636718.636719.636718.347656 0 .632812-.285156.632812-.636718v-1.367188c-.351562.664063-1.167969.917969-1.824219.5625-.4375-.238281-.714843-.699218-.714843-1.203125v-3.847656c0-.753906.605468-1.367187 1.351562-1.367187.496094 0 .953125.277343 1.1875.722656v-.640625h1.269531v7.140625c0 1.0625-.855469 1.921875-1.902343 1.921875-1.050782 0-1.90625-.859375-1.90625-1.921875zm1.269531-2.570313v-2.726562c0-.351563-.285156-.640625-.632812-.640625-.351563 0-.636719.289062-.636719.640625v2.726562c0 .355469.285156.644531.636719.644531.347656 0 .632812-.289062.632812-.644531m2.214844 0h1.191406c0 .402344.320312.726563.710938.726563.398437 0 .714843-.324219.714843-.726563 0-.285156-.167969-.542969-.425781-.660156l-1.023438-.378906c-.921874-.414063-1.335937-1.503907-.929687-2.433594.40625-.933594 1.484375-1.351563 2.40625-.9375.65625.292969 1.082031.953125 1.082031 1.683594h-1.1875c0-.351563-.28125-.640625-.636718-.640625-.347657 0-.632813.289062-.632813.640625 0 .253906.148437.484375.378906.585937l1.027344.382813c.960937.429687 1.394531 1.566406.96875 2.539062-.425781.972657-1.550781 1.410157-2.511719.980469-.6875-.308594-1.132812-1-1.132812-1.761719m8.402344 1.847657h-1.265626v-.644532c-.351562.664063-1.167968.917969-1.824218.5625-.441406-.238281-.714844-.699218-.714844-1.203125v-3.847656c0-.753906.601562-1.367187 1.347656-1.367187.496094 0 .957032.277343 1.191406.722656v-3.207032h1.265626zm-1.265626-1.847657v-2.726562c0-.351563-.285156-.640625-.636718-.640625-.351563 0-.632813.289062-.632813.640625v2.726562c0 .355469.28125.644531.632813.644531.351562 0 .636718-.289062.636718-.644531m2.691407-4.570312h1.269531v6.417969h-1.269531zm0-2.566407h1.269531v1.28125h-1.269531zm6.339843 7.136719c0 1.066407-.851562 1.925781-1.902343 1.925781s-1.902344-.859374-1.902344-1.925781v-2.726562c0-1.0625.851563-1.925781 1.902344-1.925781s1.902343.863281 1.902343 1.925781v1.847656h-2.535156v.878906c0 .355469.285156.644531.632813.644531.351562 0 .636719-.289062.636719-.644531zm-2.535156-1.925781h1.269532v-.800781c0-.351563-.285157-.640625-.636719-.640625-.347657 0-.632813.289062-.632813.640625zm3.644532 3.773438v-6.417969h1.269531v.640625c.347656-.664063 1.164062-.917969 1.824219-.558594.433593.234375.710937.695312.710937 1.203125v5.132813h-1.269531v-4.574219c0-.351563-.28125-.640625-.632813-.640625-.351562 0-.632812.289062-.632812.640625v4.574219zm4.753906-1.847657h1.1875c0 .402344.320312.726563.714844.726563.394531 0 .710937-.324219.710937-.726563 0-.285156-.164063-.542969-.421875-.660156l-1.027344-.378906c-.921875-.414063-1.335937-1.503907-.929687-2.433594.410156-.933594 1.484375-1.351563 2.40625-.9375.660156.292969 1.085937.953125 1.085937 1.683594h-1.1875c0-.351563-.285156-.640625-.636718-.640625-.351563 0-.632813.289062-.632813.640625 0 .253906.144531.484375.375.585937l1.027344.382813c.960937.429687 1.394531 1.566406.96875 2.539062-.421875.972657-1.546875 1.410157-2.507813.980469-.691406-.308594-1.132812-1-1.132812-1.761719m6.972656 1.847657h-.632812c-.789063 0-1.425782-.648438-1.425782-1.445313v-3.929687h-.632812v-1.042969h.632812v-1.925781h1.265625v1.925781h.792969v1.042969h-.792969v3.769531c0 .21875.179688.402343.398438.402343h.394531zm0 0"/><path d="m36.65625 42.984375v-5.441406h-.640625v-1.058594h.640625v-.976563c0-.894531.71875-1.625 1.609375-1.625h.960937v1.21875h-.882812c-.222656 0-.402344.183594-.402344.40625v.976563h1.285156v1.058594h-1.285156v5.441406zm4.015625 0v-6.5h1.285156v.734375c.75-.941406 2.117188-1.089844 3.046875-.328125h.003906l-.914062 1.140625c-.53125-.476562-1.339844-.429688-1.8125.109375-.210938.238281-.324219.542969-.324219.863281v3.980469zm10.273437-2.761719h-4.015624v.160156c0 .566407.34375 1.074219.859374 1.285157.714844.285156 1.53125.085937 2.03125-.507813l.972657.847656c-.859375 1.015626-2.253907 1.363282-3.480469.863282-1.003906-.40625-1.667969-1.390625-1.667969-2.488282v-1.300781c0-1.476562 1.191407-2.679687 2.652344-2.679687 1.464844 0 2.648437 1.203125 2.648437 2.679687zm-4.015624-1.140625h2.730468c0-.761719-.609375-1.378906-1.363281-1.378906s-1.367187.617187-1.367187 1.378906m5.78125-2.597656h1.285156v6.5h-1.285156zm0-2.601563h1.285156v1.300782h-1.285156zm0 0"/><path d="m6.066406 0c-3.347656 0-6.066406 2.75-6.066406 6.140625v37.722656c0 3.386719 2.71875 6.136719 6.066406 6.136719h77.867188c3.347656 0 6.066406-2.75 6.066406-6.136719v-37.722656c0-3.390625-2.71875-6.140625-6.066406-6.140625zm0 .0742188h77.871094c3.308594 0 5.988281 2.7187502 5.988281 6.0664062v37.722656c0 3.347657-2.679687 6.0625-5.988281 6.0625h-77.871094c-3.308594 0-5.9921872-2.714843-5.9921872-6.0625v-37.722656c0-3.347656 2.6835932-6.0664062 5.9921872-6.0664062zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1053-35.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1053-35.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_1053-35.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m3.347656.0390625c-1.824218 0-3.3046872 1.4843755-3.3046872 3.3085935v43.304688c0 1.824218 1.4804692 3.304687 3.3046872 3.304687h43.304688c1.824218 0 3.304687-1.480469 3.304687-3.304687v-43.304688c0-1.824218-1.480469-3.3085935-3.304687-3.3085935zm0 0" fill="#fff"/><path d="m3.347656 0c-1.84375 0-3.347656 1.5-3.347656 3.347656v43.304688c0 1.84375 1.503906 3.347656 3.347656 3.347656h43.304688c1.84375 0 3.347656-1.503906 3.347656-3.347656v-43.304688c0-1.847656-1.503906-3.347656-3.347656-3.347656zm0 .0390625h43.304688c1.820312 0 3.304687 1.4882815 3.304687 3.3085935v43.304688c0 1.824218-1.484375 3.304687-3.304687 3.304687h-43.304688c-1.824218 0-3.3046872-1.480469-3.3046872-3.304687v-43.304688c0-1.820312 1.4804692-3.3085935 3.3046872-3.3085935zm0 0"/><path d="m3.347656.851562c-1.378906 0-2.5 1.117188-2.5 2.496094v43.304688c0 1.378906 1.121094 2.496094 2.5 2.496094h43.304688c1.378906 0 2.496094-1.117188 2.496094-2.496094v-43.304688c0-1.378906-1.117188-2.496094-2.496094-2.496094zm0 1.246094h43.304688c.6875 0 1.25.558594 1.25 1.25v43.304688c0 .691406-.5625 1.25-1.25 1.25h-43.304688c-.6875 0-1.25-.558594-1.25-1.25v-43.304688c0-.691406.5625-1.25 1.25-1.25zm0 0"/><path d="m8.34375 43.546875v-1.246094l.558594-.234375c1.191406-.496094 2.53125-.496094 3.722656 0l1.117188.46875c1.191406.492188 2.53125.492188 3.71875 0l1.117187-.46875c1.191406-.496094 2.53125-.496094 3.722656 0l1.117188.46875c1.191406.492188 2.53125.492188 3.722656 0l1.117187-.46875c1.191407-.496094 2.53125-.496094 3.722657 0l1.113281.46875c1.191406.492188 2.53125.492188 3.722656 0l1.117188-.46875c1.191406-.496094 2.53125-.496094 3.722656 0v1.25c-1.191406-.496094-2.53125-.496094-3.722656 0l-1.117188.464844c-1.191406.496094-2.53125.496094-3.722656 0l-1.113281-.464844c-1.191407-.496094-2.53125-.496094-3.722657 0l-1.117187.464844c-1.191406.496094-2.53125.496094-3.722656 0l-1.117188-.464844c-1.191406-.496094-2.53125-.496094-3.722656 0l-1.117187.464844c-1.1875.496094-2.527344.496094-3.71875 0l-1.117188-.464844c-1.191406-.496094-2.53125-.496094-3.722656 0"/><path d="m8.34375 41.050781v-1.25l.558594-.230469c1.191406-.496093 2.53125-.496093 3.722656 0l1.117188.464844c1.191406.496094 2.53125.496094 3.71875 0l1.117187-.464844c1.191406-.496093 2.53125-.496093 3.722656 0l1.117188.464844c1.191406.496094 2.53125.496094 3.722656 0l1.117187-.464844c1.191407-.496093 2.53125-.496093 3.722657 0l1.113281.464844c1.191406.496094 2.53125.496094 3.722656 0l1.117188-.464844c1.191406-.496093 2.53125-.496093 3.722656 0v1.246094c-1.191406-.492187-2.53125-.492187-3.722656 0l-1.117188.46875c-1.191406.496094-2.53125.496094-3.722656 0l-1.113281-.46875c-1.191407-.492187-2.53125-.492187-3.722657 0l-1.117187.46875c-1.191406.496094-2.53125.496094-3.722656 0l-1.117188-.46875c-1.191406-.492187-2.53125-.492187-3.722656 0l-1.117187.46875c-1.1875.496094-2.527344.496094-3.71875 0l-1.117188-.46875c-1.191406-.492187-2.53125-.492187-3.722656 0"/><path d="m17.476562 19.59375c-.621093 0-1.183593.371094-1.433593.941406l-2.46875 5.671875c-.175781.402344-.394531.78125-.65625 1.128907l-.375.5c-.242188.324218-.375.71875-.375 1.125v4.058593c0 .859375.699219 1.558594 1.5625 1.558594h23.097656c.863281 0 1.5625-.699219 1.5625-1.558594v-4.058593c0-.40625-.132813-.800782-.375-1.125l-.375-.5c-.261719-.347657-.484375-.726563-.65625-1.128907l-2.46875-5.671875c-.25-.570312-.8125-.941406-1.433594-.941406zm.375 1.5625h14.855469c.246094 0 .472657.148438.570313.375l2.148437 4.929688h-20.292969l2.144532-4.929688c.101562-.226562.328125-.375.574218-.375zm0 0"/><path d="m13.730469 35.203125h3.742187v3.433594c0 .515625-.417968.9375-.933594.9375h-1.875c-.515624 0-.933593-.421875-.933593-.9375"/><path d="m33.082031 35.203125h3.746094v3.433594c0 .515625-.417969.9375-.933594.9375h-1.875c-.515625 0-.9375-.421875-.9375-.9375"/><path d="m28.914062 4.933594h-.667968v-.664063h.667968zm0 4h-.667968v-3.332032h.667968zm-3.664062-2h1.414062c0-.390625-.316406-.707032-.707031-.707032s-.707031.316407-.707031.707032zm2.082031.582031h-2.082031v.082031c0 .292969.175781.550782.445312.660156.371094.148438.792969.042969 1.050782-.257812l.507812.433594c-.445312.515625-1.171875.695312-1.804687.441406-.523438-.207031-.867188-.714844-.867188-1.277344v-.664062c0-.757813.617188-1.375 1.375-1.375.761719 0 1.375.617187 1.375 1.375zm-5.582031.125c0 .367187.300781.667969.667969.667969.367187 0 .667969-.300782.667969-.667969v-.75c0-.367187-.300782-.664063-.667969-.664063-.367188 0-.667969.296876-.667969.664063zm-.664062 1.292969v-4.664063h.664062v1.707031c.390625-.484374 1.101562-.558593 1.582031-.167968.265625.214844.417969.535156.417969.875v1.164062c0 .621094-.503906 1.125-1.121094 1.125-.339844 0-.664062-.152344-.878906-.417968v.378906"/><path d="m34.160156 14.261719h1.945313c0-.535157-.433594-.972657-.972657-.972657-.535156 0-.972656.4375-.972656.972657zm2.863282.800781h-2.863282v.117188c0 .394531.242188.753906.613282.902343.507812.203125 1.089843.058594 1.449218-.355469l.691406.597657c-.609374.710937-1.609374.957031-2.480468.609375-.71875-.289063-1.1875-.984375-1.1875-1.753906v-.917969c0-1.042969.84375-1.890625 1.886718-1.890625 1.042969 0 1.890626.847656 1.890626 1.890625zm-8.703126 1.214844.648438-.652344c.53125.53125 1.328125.703125 2.03125.441406.238281-.089844.355469-.355468.269531-.59375-.066406-.167968-.21875-.28125-.402343-.292968l-.972657-.0625c-.757812-.046876-1.332031-.699219-1.285156-1.457032.039063-.601562.464844-1.109375 1.050781-1.25.855469-.207031 1.753906-.003906 2.4375.542969l-.570312.714844c-.464844-.371094-1.074219-.503907-1.652344-.367188-.246094.058594-.398438.304688-.339844.550781.046875.195313.214844.339844.417969.351563l.972656.0625c.757813.046875 1.332031.699219 1.285157 1.457031-.03125.539063-.382813 1.007813-.886719 1.199219-1.042969.390625-2.214844.140625-3.003907-.644531zm-4.695312 0 .648438-.652344c.53125.53125 1.328124.703125 2.03125.441406.238281-.089844.359374-.355468.269531-.59375-.0625-.167968-.21875-.28125-.398438-.292968l-.976562-.0625c-.757813-.046876-1.332031-.699219-1.285157-1.457032.039063-.601562.464844-1.109375 1.050782-1.25.855468-.207031 1.753906-.003906 2.441406.542969l-.574219.714844c-.464843-.371094-1.074219-.503907-1.652343-.367188-.246094.058594-.398438.304688-.339844.550781.046875.195313.21875.339844.417968.351563l.972657.0625c.757812.046875 1.332031.699219 1.285156 1.457031-.03125.539063-.382813 1.007813-.886719 1.199219-1.042968.390625-2.214844.140625-3.003906-.644531zm-1.488281-4.765625h-.914063v-.914063h.914063zm-1.832031 0h-.917969v-.914063h.917969zm1.375 3.496093h-1.316407c-.316406 0-.574219.253907-.574219.570313s.257813.574219.574219.574219h.746094c.3125 0 .570313-.257813.570313-.574219zm.914062 2h-.914062v-.472656c-.160157.292969-.46875.472656-.800782.472656h-.574218c-.757813 0-1.375-.613281-1.375-1.371093 0-.761719.617187-1.375 1.375-1.375h1.375v-.457031c0-.25-.179688-.464844-.425782-.507813-.324218-.058594-.65625-.058594-.980468 0-.160157.027344-.300782.128906-.371094.277344l-.726563-.574219c.21875-.320312.558594-.539062.941407-.605469.425781-.078125.863281-.078125 1.292968 0 .6875.117188 1.183594.714844 1.183594 1.410157zm-9.617188 0v-6.410156h.917969l2.917969 4.582032v-4.582032h.972656v6.410156h-.914062l-2.921875-4.578124v4.578124"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_110.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_110.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_110.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 56 50" width="56pt" xmlns="http://www.w3.org/2000/svg"><path d="m28.003906.0351562c-.621094 0-1.238281.2382818-1.714844.7187498-.15625.160156-.285156.332032-.386718.519532l-1.261719 2.195312h-.003906l-24.226563 42.679688c-.003906.007812-.007812.015624-.011718.023437-.121094.203125-.21875.425781-.28125.664063-.347657 1.316406.421874 2.667968 1.714843 3.019531.214844.058593.429688.085937.640625.085937h51.078125c1.339844 0 2.425781-1.105468 2.425781-2.464844 0-.445312-.117187-.867187-.320312-1.226562 0-.003906-.003906-.003906-.003906-.007812l-25.15625-44.390626c-.316406-.558593-.464844-.78125-.773438-1.097656-.476562-.480468-1.097656-.7187498-1.71875-.7187498zm0 0" fill="#fff"/><path d="m28.003906.652344c-.585937-.003906-1.234375.300781-1.550781.871094l-25.5625 45.019531c-.144531.308593-.207031.574219-.210937.878906 0 .542969.238281 1.0625.648437 1.414063.363281.285156.707031.433593 1.167969.433593h51.066406c.3125.003907.625-.074219.90625-.261719.535156-.328124.859375-.917968.863281-1.550781-.015625-.324219-.097656-.671875-.238281-.914062l-25.546875-45.023438c-.003906-.003906-.007813-.007812-.007813-.011719-.003906-.003906-.003906-.007812-.007812-.015624-.089844-.144532-.203125-.277344-.335938-.386719-.296874-.261719-.667968-.417969-1.058593-.445313-.042969-.003906-.085938-.007812-.132813-.007812zm-25.507812 48.617187h-.125.128906zm25.484375-39.695312 19.476562 34.320312h-38.984375zm0 0" fill="#c1121c"/><path d="m28.003906 0c-.628906 0-1.257812.242188-1.738281.734375-.15625.15625-.289063.335937-.394531.519531l-1.25 2.183594h-.003906l-24.234376 42.695312c-.003906.007813-.007812.015626-.011718.023438-.125.203125-.222656.429688-.2851565.671875-.3515625 1.332031.4257815 2.703125 1.7382815 3.0625.214843.058594.433593.085937.648437.085937h51.078125c1.359375 0 2.460938-1.121093 2.460938-2.5 0-.453124-.121094-.875-.328125-1.242187 0 0 0-.003906-.003906-.007813l-25.152344-44.390624c-.320313-.558594-.472656-.785157-.78125-1.101563-.480469-.492187-1.109375-.734375-1.738282-.734375zm0 .0351562c.621094 0 1.242188.2382818 1.71875.7187498.308594.316406.457032.539063.773438 1.097656l25.15625 44.390626c0 .003906.003906.003906.003906.007812.203125.359375.320312.78125.320312 1.226562 0 1.359376-1.085937 2.464844-2.425781 2.464844h-51.078125c-.210937 0-.425781-.027344-.640625-.085937-1.292969-.351563-2.0625-1.703125-1.714843-3.019531.0625-.238282.160156-.460938.28125-.664063.003906-.007813.007812-.015625.011718-.023437l24.226563-42.679688h.003906l1.261719-2.195312c.101562-.1875.230468-.359376.386718-.519532.476563-.480468 1.09375-.7187498 1.714844-.7187498zm0 0"/><path d="m46.308594 43.210938-9.207032-16.195313-27.597656 16.195313"/><path d="m23.21875 33.238281-2.953125-5.238281-.503906 1.148438-.53125-.941407.507812-1.140625.871094-.507812 3.480469 6.171875zm0 0"/><path d="m30.394531 29.042969-.628906-7.828125.59375-.34375.628906 7.820312zm-1.136719-5.554688c.242188.421875.097657.96875-.316406 1.214844-.417968.246094-.953125.097656-1.195312-.324219l-.433594-.769531c-.242188-.421875-.101562-.972656.320312-1.214844.414063-.246093.949219-.097656 1.191407.332031zm-.433593.253907-.433594-.769532c-.105469-.179687-.335937-.242187-.511719-.132812-.179687.101562-.238281.328125-.136718.511718l.433593.769532c.101563.183594.335938.242187.515625.140625.179688-.105469.242188-.332031.132813-.519531zm2.675781 2.671874.429688.769532c.242187.425781.78125.574218 1.195312.324218.421875-.242187.5625-.789062.320312-1.210937l-.4375-.765625c-.238281-.429688-.773437-.566406-1.195312-.324219-.410156.242188-.554688.785157-.3125 1.207031zm.429688-.253906c-.101563-.171875-.042969-.410156.136718-.515625.179688-.105469.410156-.039062.503906.140625l.445313.765625c.101563.183594.039063.417969-.140625.523438-.179688.101562-.40625.042969-.507812-.140625zm0 0"/><path d="m30.394531 29.042969-.628906-7.828125.59375-.34375.628906 7.820312zm-1.136719-5.554688c.242188.421875.097657.96875-.316406 1.214844-.417968.246094-.953125.097656-1.195312-.324219l-.433594-.769531c-.242188-.421875-.101562-.972656.320312-1.214844.414063-.246093.949219-.097656 1.191407.332031zm-.433593.253907-.433594-.769532c-.105469-.179687-.335937-.242187-.511719-.132812-.179687.101562-.238281.328125-.136718.511718l.433593.769532c.101563.183594.335938.242187.515625.140625.179688-.105469.242188-.332031.132813-.519531zm2.675781 2.671874.429688.769532c.242187.425781.78125.574218 1.195312.324218.421875-.242187.5625-.789062.320312-1.210937l-.4375-.765625c-.238281-.429688-.773437-.566406-1.195312-.324219-.410156.242188-.554688.785157-.3125 1.207031zm.429688-.253906c-.101563-.171875-.042969-.410156.136718-.515625.179688-.105469.410156-.039062.503906.140625l.445313.765625c.101563.183594.039063.417969-.140625.523438-.179688.101562-.40625.042969-.507812-.140625zm0 0"/><path d="m25.425781 31.886719-.464843-.824219.652343-4.367188c.023438-.171874.023438-.3125-.007812-.425781-.027344-.117187-.066407-.21875-.121094-.3125-.117187-.210937-.304687-.363281-.554687-.457031-.253907-.097656-.511719-.074219-.765626.078125-.234374.136719-.390624.332031-.464843.59375-.078125.25-.046875.519531.089843.804687l-.863281.507813c-.277343-.496094-.347656-1.011719-.210937-1.542969.136718-.535156.433594-.933594.886718-1.203125.5-.292969 1.011719-.363281 1.542969-.214843.527344.144531.929688.457031 1.203125.941406.234375.414062.320313.839844.25 1.28125l-.53125 3.601562 2.292969-1.34375.496094.871094zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_215.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_215.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_215.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m24.996094 0c-4.597656 0-8.511719 1.046875-12.496094 3.347656-3.984375 2.304688-6.847656 5.167969-9.152344 9.152344-2.300781 3.984375-3.347656 7.898438-3.347656 12.503906 0 4.597656 1.046875 8.511719 3.347656 12.496094 2.304688 3.984375 5.167969 6.851562 9.152344 9.152344 3.984375 2.300781 7.898438 3.347656 12.496094 3.347656 4.605468 0 8.519531-1.046875 12.503906-3.347656 3.984375-2.300782 6.851562-5.167969 9.152344-9.152344 2.300781-3.984375 3.347656-7.898438 3.347656-12.496094 0-4.605468-1.046875-8.519531-3.347656-12.503906-2.300782-3.984375-5.167969-6.851562-9.152344-9.152344-3.984375-2.300781-7.898438-3.347656-12.503906-3.347656zm0 .0429688c4.597656 0 8.503906 1.0429692 12.484375 3.3398432 3.980469 2.300782 6.839843 5.15625 9.136719 9.140626 2.296874 3.976562 3.339843 7.882812 3.339843 12.480468 0 4.59375-1.042969 8.496094-3.339843 12.476563-2.296876 3.980469-5.15625 6.839843-9.136719 9.136719-3.980469 2.296874-7.886719 3.339843-12.484375 3.339843-4.59375 0-8.496094-1.042969-12.472656-3.339843-3.984376-2.296876-6.839844-5.15625-9.140626-9.136719-2.296874-3.980469-3.3398432-7.882813-3.3398432-12.476563 0-4.597656 1.0429692-8.503906 3.3398432-12.480468 2.300782-3.984376 5.15625-6.839844 9.140626-9.140626 3.976562-2.296874 7.878906-3.3398432 12.472656-3.3398432zm0 0"/><path d="m49.957031 25.003906c0-4.597656-1.042969-8.503906-3.339843-12.480468-2.296876-3.984376-5.15625-6.839844-9.136719-9.140626-3.980469-2.296874-7.886719-3.3398432-12.484375-3.3398432-4.59375 0-8.496094 1.0429692-12.472656 3.3398432-3.984376 2.300782-6.839844 5.15625-9.140626 9.140626-2.296874 3.976562-3.3398432 7.882812-3.3398432 12.480468 0 4.59375 1.0429692 8.496094 3.3398432 12.476563 2.300782 3.980469 5.15625 6.839843 9.140626 9.136719 3.976562 2.296874 7.878906 3.339843 12.472656 3.339843 4.597656 0 8.503906-1.042969 12.484375-3.339843 3.980469-2.296876 6.839843-5.15625 9.136719-9.136719 2.296874-3.980469 3.339843-7.882813 3.339843-12.476563zm0 0" fill="#fff"/><path d="m48.792969 25c0-4.378906-.996094-8.101562-3.1875-11.894531-2.191407-3.792969-4.917969-6.523438-8.707031-8.710938-3.792969-2.191406-7.519532-3.1875-11.902344-3.1875-4.378906 0-8.097656 1-11.890625 3.1875-3.792969 2.191407-6.519531 4.917969-8.710938 8.710938-2.1875 3.792969-3.1875 7.515625-3.1875 11.894531 0 4.382812.996094 8.105469 3.1875 11.898438 2.1875 3.789062 4.917969 6.515624 8.710938 8.707031 3.792969 2.191406 7.511719 3.1875 11.890625 3.1875 4.382812 0 8.109375-.996094 11.902344-3.1875 3.789062-2.191407 6.515624-4.917969 8.707031-8.707031 2.191406-3.792969 3.1875-7.515626 3.1875-11.898438zm0 0" fill="#154889"/><g fill="#fff"><path d="m10.003906 30.105469 5.871094-5.972657-.027344-3.484374-4.324218 4.226562c-.140626-6.761719 5.679687-12.441406 11.148437-13.171875l-.484375-2.921875c-9.601562 1.898438-13.46875 9.402344-13.652344 16.066406l-4.363281-4.242187-.019531 3.625zm0 0"/><path d="m36.9375 35.441406-8.117188-2.066406-3 1.777344 5.828126 1.609375c-5.765626 3.527343-13.605469 1.355469-16.988282-3l-2.28125 1.890625c6.472656 7.339844 14.902344 6.898437 20.753906 3.703125l-1.46875 5.90625 3.144532-1.808594zm0 0"/><path d="m28.066406 9.523438 2.285156 8.058593 3.042969 1.699219-1.535156-5.847656c5.945313 3.21875 8.003906 11.085937 5.9375 16.199218l2.78125 1.023438c3.09375-9.28125-1.519531-16.351562-7.21875-19.808594l5.84375-1.695312-3.140625-1.808594zm0 0"/></g></g></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_220.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_220.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_220.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="30pt" viewBox="0 0 81 30" width="81pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m0 .0820312h81v29.9179688h-81zm0 0"/></clipPath><g clip-path="url(#a)"><path d="m4.082031 29.960938c-2.234375 0-4.0429685-1.78125-4.0429685-3.976563v-21.882813c0-2.199218 1.8085935-3.976562 4.0429685-3.976562h72.765625c2.230469 0 4.039063 1.777344 4.039063 3.976562v21.882813c0 2.195313-1.808594 3.976563-4.039063 3.976563" fill="#fff"/><path d="m4.082031.0820312c-2.25 0-4.082031 1.8046878-4.082031 4.0195308v21.882813c0 2.214844 1.832031 4.015625 4.082031 4.015625h72.765625c2.246094 0 4.078125-1.800781 4.078125-4.015625v-21.882813c0-2.214843-1.832031-4.0195308-4.078125-4.0195308zm0 .0429688h72.765625c2.230469 0 4.039063 1.777344 4.039063 3.976562v21.882813c0 2.195313-1.808594 3.976563-4.039063 3.976563h-72.765625c-2.234375 0-4.0429685-1.78125-4.0429685-3.976563v-21.882813c0-2.199218 1.8085935-3.976562 4.0429685-3.976562zm0 0"/></g><path d="m4.082031 28.46875c-1.394531 0-2.527343-1.113281-2.527343-2.484375v-21.882813c0-1.375 1.132812-2.488281 2.527343-2.488281h72.765625c1.394532 0 2.523438 1.113281 2.523438 2.488281v21.882813c0 1.371094-1.128906 2.484375-2.523438 2.484375" fill="#154889"/><path d="m77.792969 15.042969-19.140625 11.058593c-.726563.417969-1.652344.171876-2.070313-.554687-.199219-.347656-.253906-.761719-.152343-1.152344l1.152343-4.296875h-53.058593v-10.113281h53.058593l-1.152343-4.296875c-.214844-.808594.265624-1.644531 1.074218-1.859375.386719-.105469.800782-.050781 1.148438.152344" fill="#fff"/><path d="m6.847656 17.875v-5.667969h3.640625v.808594h-2.78125v1.621094h2.375v.757812h-2.375v1.667969h2.78125v.8125"/><path d="m12.40625 13.015625h-.808594v-.808594h.808594zm-.808594 4.859375v-4.046875h.808594v4.046875"/><path d="m13.621094 17.875v-4.046875h.808594v.457031c.472656-.585937 1.332031-.679687 1.917968-.207031.320313.261719.507813.652344.507813 1.0625v2.734375h-.808594v-2.480469c0-.445312-.363281-.808593-.808594-.808593-.449219 0-.808593.363281-.808593.808593v2.480469"/><path d="m18.875 16.304688c0 .445312.359375.808593.808594.808593.449218 0 .808594-.363281.808594-.808593v-.910157c0-.445312-.359376-.808593-.808594-.808593-.449219 0-.808594.363281-.808594.808593zm-.808594 1.570312v-5.667969h.808594v2.078125c.472656-.585937 1.332031-.679687 1.917969-.207031.320312.261719.507812.652344.507812 1.0625v1.417969c0 .753906-.609375 1.367187-1.363281 1.367187-.414062 0-.804688-.1875-1.0625-.507812v.457031"/><path d="m24.636719 16.101562h-1.164063c-.277344 0-.503906.226563-.503906.507813 0 .277344.226562.503906.503906.503906h.65625c.28125 0 .507813-.226562.507813-.503906zm.808593 1.773438h-.808593v-.417969c-.144531.257813-.414063.417969-.707031.417969h-.507813c-.667969 0-1.210937-.546875-1.210937-1.214844 0-.671875.542968-1.214844 1.210937-1.214844h1.214844v-.402343c0-.222657-.160157-.414063-.378907-.449219-.285156-.050781-.578124-.050781-.863281 0-.140625.023438-.261719.117188-.328125.246094l-.640625-.507813c.191407-.285156.492188-.476562.832031-.535156.375-.066406.761719-.066406 1.140626 0 .605468.105469 1.046874.628906 1.046874 1.246094"/><path d="m26.65625 17.875v-5.667969h.808594v2.078125c.472656-.585937 1.332031-.679687 1.917968-.207031.320313.261719.507813.652344.507813 1.0625v2.734375h-.808594v-2.480469c0-.445312-.359375-.808593-.808593-.808593-.445313 0-.808594.363281-.808594.808593v2.480469"/><path d="m31.105469 17.875v-4.046875h.808593v.457031c.472657-.585937 1.332032-.679687 1.917969-.207031.316407.261719.503907.652344.503907 1.0625v2.734375h-.808594v-2.480469c0-.445312-.359375-.808593-.808594-.808593-.445312 0-.804688.363281-.804688.808593v2.480469"/><path d="m35.246094 17.226562.570312-.574218c.472656.46875 1.171875.621094 1.796875.386718.207031-.082031.3125-.3125.234375-.523437-.054687-.144531-.191406-.25-.351562-.257813l-.859375-.054687c-.667969-.042969-1.175781-.621094-1.136719-1.289063.035156-.53125.410156-.980468.929688-1.105468.753906-.179688 1.546874-.003906 2.152343.480468l-.503906.632813c-.410156-.328125-.949219-.445313-1.460937-.324219-.214844.050782-.351563.269532-.296876.488282.039063.171874.191407.296874.367188.308593l.859375.054688c.667969.042969 1.175781.617187 1.132813 1.285156-.027344.476563-.335938.894531-.78125 1.0625-.921876.34375-1.957032.121094-2.652344-.570313"/><path d="m41.210938 17.875h-.507813c-.5 0-.910156-.410156-.910156-.914062v-2.476563h-.402344v-.65625h.402344v-1.214844h.808593v1.214844h.609376v.65625h-.609376v2.378906c0 .140625.117188.25.253907.25h.355469"/><path d="m42.320312 17.875v-4.046875h.808594v.457031c.472656-.585937 1.332032-.679687 1.917969-.207031.003906 0 .003906.003906.003906.003906l-.574219.707031c-.335937-.296874-.84375-.265624-1.144531.066407-.128906.148437-.203125.339843-.203125.539062v2.480469"/><path d="m47.878906 16.101562h-1.160156c-.28125 0-.507812.226563-.507812.507813 0 .277344.226562.503906.507812.503906h.65625c.277344 0 .503906-.226562.503906-.503906zm.808594 1.773438h-.808594v-.417969c-.140625.257813-.414062.417969-.707031.417969h-.503906c-.671875 0-1.214844-.546875-1.214844-1.214844 0-.671875.542969-1.214844 1.214844-1.214844h1.210937v-.402343c0-.222657-.160156-.414063-.375-.449219-.285156-.050781-.578125-.050781-.863281 0-.144531.023438-.265625.117188-.332031.246094l-.636719-.507813c.191406-.285156.488281-.476562.828125-.535156.378906-.066406.765625-.066406 1.140625 0 .609375.105469 1.046875.628906 1.046875 1.246094"/><path d="m49.902344 17.875v-4.453125c0-.523437.332031-.984375.828125-1.152344.511719-.167969 1.0625-.167969 1.574219 0 .496093.167969.828124.628907.828124 1.152344v.152344c0 .363281-.226562.6875-.566406.808593.339844.125.566406.445313.566406.808594v1.570313c0 .613281-.496093 1.113281-1.109374 1.113281h-.503907v-.761719h.402344c.222656 0 .40625-.179687.40625-.402343v-1.519532c0-.222656-.183594-.402344-.40625-.402344h-.503906v-.757812h.503906c.222656 0 .40625-.183594.40625-.40625v-.203125c0-.175781-.113281-.328125-.277344-.382813-.347656-.113281-.71875-.113281-1.066406 0-.164063.054688-.273437.207032-.273437.382813v4.453125"/><path d="m55.054688 15.445312h1.71875c0-.476562-.386719-.859374-.859376-.859374-.472656 0-.859374.382812-.859374.859374zm2.527343.707032h-2.527343v.101562c0 .351563.214843.667969.542968.796875.445313.179688.960938.054688 1.277344-.3125l.613281.527344c-.542969.632813-1.421875.847656-2.195312.539063-.632813-.253907-1.046875-.867188-1.046875-1.550782v-.808594c0-.921874.746094-1.667968 1.667968-1.667968.921876 0 1.667969.746094 1.667969 1.667968"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_237.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_237.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_237.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m42.652344 7.355469c3.246094 3.246093 5.269531 6.746093 6.457031 11.183593 1.191406 4.441407 1.191406 8.484376 0 12.921876-1.1875 4.4375-3.210937 7.941406-6.460937 11.191406-3.246094 3.246094-6.75 5.269531-11.1875 6.460937-4.4375 1.183594-8.484376 1.1875-12.921876-.003906-4.433593-1.1875-7.9375-3.210937-11.183593-6.457031-3.25-3.25-5.273438-6.753906-6.464844-11.191406-1.1875-4.4375-1.1875-8.484376 0-12.917969 1.191406-4.441407 3.214844-7.941407 6.460937-11.1875 3.25-3.25 6.753907-5.273438 11.1875-6.464844 4.4375-1.1875 8.484376-1.1875 12.921876 0 4.4375 1.191406 7.941406 3.214844 11.191406 6.464844zm-.03125.027343c-3.242188-3.242187-6.738282-5.261718-11.171875-6.453124-4.429688-1.183594-8.46875-1.1875-12.898438.003906-4.429687 1.1875-7.925781 3.207031-11.167969 6.449218-3.246093 3.242188-5.261718 6.738282-6.453124 11.167969-1.183594 4.429688-1.183594 8.46875.003906 12.898438 1.1875 4.433593 3.207031 7.929687 6.453125 11.171875 3.242187 3.242187 6.734375 5.261718 11.164062 6.449218 4.433594 1.1875 8.46875 1.1875 12.898438 0 4.433593-1.1875 7.925781-3.207031 11.171875-6.449218 3.242187-3.242188 5.261718-6.738282 6.449218-11.167969 1.1875-4.433594 1.1875-8.46875 0-12.902344-1.1875-4.429687-3.203124-7.925781-6.449218-11.167969zm0 0"/><path d="m7.382812 7.382812c3.242188-3.242187 6.738282-5.261718 11.167969-6.449218 4.429688-1.191406 8.46875-1.1875 12.898438-.003906 4.433593 1.191406 7.929687 3.210937 11.171875 6.453124 3.246094 3.242188 5.261718 6.738282 6.449218 11.167969 1.1875 4.433594 1.1875 8.46875 0 12.902344-1.1875 4.429687-3.207031 7.925781-6.449218 11.167969-3.246094 3.242187-6.738282 5.261718-11.167969 6.449218-4.433594 1.1875-8.46875 1.1875-12.902344 0-4.429687-1.1875-7.921875-3.207031-11.164062-6.449218-3.246094-3.242188-5.265625-6.738282-6.453125-11.171875-1.1875-4.429688-1.1875-8.46875 0-12.898438 1.1875-4.429687 3.203125-7.925781 6.449218-11.167969zm0 0" fill="#fff"/><path d="m8.207031 8.203125c3.089844-3.089844 6.421875-5.015625 10.644531-6.144531 4.226563-1.132813 8.074219-1.132813 12.296876-.003906 4.226562 1.132812 7.558593 3.058593 10.652343 6.152343 3.089844 3.089844 5.011719 6.421875 6.144531 10.644531 1.128907 4.226563 1.128907 8.074219 0 12.300782-1.132812 4.21875-3.054687 7.554687-6.144531 10.644531-3.09375 3.09375-6.425781 5.019531-10.652343 6.148437-4.222657 1.132813-8.070313 1.132813-12.296876 0-4.222656-1.132812-7.554687-3.054687-10.644531-6.144531-3.09375-3.09375-5.019531-6.429687-6.148437-10.652343-1.132813-4.222657-1.132813-8.074219 0-12.296876 1.128906-4.222656 3.054687-7.554687 6.148437-10.648437zm0 0" fill="#154889"/></g><path d="m37.984375 34.914062c-3.085937.796876-6.234375-1.058593-7.03125-4.144531h5.949219c.101562 0 .199218-.019531.292968-.0625.363282-.160156.527344-.585937.363282-.953125l-2.660156-5.957031c.066406-.019531.132812-.039063.199218-.054687 3.085938-.796876 6.230469 1.058593 7.03125 4.144531.792969 3.085937-1.0625 6.230469-4.144531 7.027343zm-4.410156-10.535156 2.214843 4.949219h-5.019531c0-2.027344 1.066407-3.90625 2.804688-4.949219zm-4.246094 4.949219h-1.441406l3.605469-9.617187 1.492187 3.34375c-2.257813 1.277343-3.65625 3.675781-3.65625 6.273437zm-2.953125-.078125-9.03125-10.019531h12.789062zm-7.65625 2.460938c-1.316406 2.902343-4.734375 4.1875-7.636719 2.871093-2.902343-1.3125-4.191406-4.734375-2.875-7.636719 1.089844-2.398437 3.664063-3.757812 6.257813-3.296874l-1.691406 5.464843c-.117188.382813.09375.785157.476562.90625.378906.113281.785156-.097656.902344-.476562l1.691406-5.46875c2.902344 1.3125 4.1875 4.734375 2.875 7.636719zm24.679688-4.617188c-1.234376-3.789062-5.308594-5.855469-9.09375-4.621094l-2.09375-4.683594.542968-1.441406h1.625v-1.441406h-6.132812c-.167969 0-.3125.113281-.351563.273438-.046875.195312.074219.390624.269531.4375l3.050782.730468-.542969 1.441406h-12.882813l.578126-1.867187c.1875-.605469.746093-1.015625 1.378906-1.015625h2.371094v-1.441406h-2.371094c-1.265625 0-2.382813.820312-2.753906 2.03125l-2.097657 6.765625c-3.359375-.683594-6.738281 1.097656-8.074219 4.253906-1.550781 3.667969.164063 7.902344 3.832032 9.453125 3.667968 1.554688 7.898437-.160156 9.453125-3.828125 1.550781-3.667969-.164063-7.902344-3.832031-9.453125l.574218-1.851562 8.523438 9.457031c.273437.304687.664062.476562 1.070312.476562h3.035156c.050782.269531.121094.535157.207032.792969 1.234375 3.789062 5.304687 5.859375 9.09375 4.621094 3.785156-1.230469 5.851562-5.300782 4.621094-9.089844" fill="#fff"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_238.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_238.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_238.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m42.652344 7.378906c3.246094 3.246094 5.269531 6.746094 6.457031 11.183594 1.191406 4.441406 1.191406 8.484375 0 12.921875-1.1875 4.4375-3.210937 7.941406-6.460937 11.191406-3.246094 3.246094-6.75 5.269531-11.1875 6.457031s-8.484376 1.191407-12.921876 0c-4.4375-1.191406-7.9375-3.210937-11.183593-6.457031-3.25-3.25-5.273438-6.753906-6.464844-11.191406-1.1875-4.4375-1.1875-8.484375 0-12.921875 1.191406-4.4375 3.214844-7.9375 6.460937-11.183594 3.25-3.25 6.753907-5.273437 11.1875-6.464844 4.4375-1.1875 8.484376-1.1875 12.921876 0 4.4375 1.191407 7.941406 3.214844 11.191406 6.464844zm-.03125.027344c-3.242188-3.242188-6.738282-5.261719-11.167969-6.453125-4.433594-1.183594-8.46875-1.1875-12.902344.003906-4.429687 1.1875-7.925781 3.207031-11.167969 6.449219-3.246093 3.242188-5.261718 6.738281-6.453124 11.167969-1.183594 4.429687-1.183594 8.46875.003906 12.898437 1.1875 4.433594 3.207031 7.925782 6.453125 11.171875 3.242187 3.242188 6.734375 5.261719 11.164062 6.449219 4.433594 1.1875 8.46875 1.183594 12.902344 0 4.429687-1.1875 7.921875-3.207031 11.167969-6.449219 3.242187-3.246093 5.261718-6.738281 6.449218-11.167969 1.1875-4.433593 1.1875-8.46875 0-12.902343-1.1875-4.429688-3.203124-7.925781-6.449218-11.167969zm0 0"/><path d="m7.382812 7.40625c3.242188-3.242188 6.738282-5.261719 11.167969-6.449219 4.433594-1.191406 8.46875-1.1875 12.902344-.003906 4.429687 1.191406 7.925781 3.210937 11.167969 6.453125 3.246094 3.242188 5.261718 6.738281 6.449218 11.167969 1.1875 4.433593 1.1875 8.46875 0 12.902343-1.1875 4.429688-3.207031 7.921876-6.449218 11.167969-3.246094 3.242188-6.738282 5.261719-11.167969 6.449219-4.433594 1.1875-8.46875 1.1875-12.902344 0-4.429687-1.1875-7.921875-3.207031-11.164062-6.449219-3.246094-3.246093-5.265625-6.738281-6.453125-11.171875-1.1875-4.429687-1.1875-8.46875 0-12.898437 1.1875-4.429688 3.203125-7.925781 6.449218-11.167969zm0 0" fill="#fff"/><path d="m8.207031 8.226562c3.089844-3.089843 6.421875-5.015624 10.644531-6.144531 4.226563-1.132812 8.074219-1.132812 12.296876-.003906 4.226562 1.128906 7.558593 3.058594 10.652343 6.152344 3.089844 3.089843 5.011719 6.421875 6.144531 10.644531 1.128907 4.226562 1.128907 8.074219 0 12.296875-1.132812 4.222656-3.054687 7.558594-6.144531 10.648437-3.09375 3.09375-6.425781 5.019532-10.652343 6.148438-4.222657 1.128906-8.070313 1.128906-12.296876-.003906-4.222656-1.128906-7.554687-3.050782-10.644531-6.140625-3.09375-3.09375-5.019531-6.429688-6.148437-10.652344-1.132813-4.222656-1.132813-8.074219 0-12.296875 1.128906-4.222656 3.054687-7.554688 6.148437-10.648438zm0 0" fill="#154889"/></g><path d="m25.265625 11.117188c0 1.121093-.90625 2.03125-2.03125 2.03125-1.121094 0-2.03125-.910157-2.03125-2.03125 0-1.121094.910156-2.03125 2.03125-2.03125 1.125 0 2.03125.910156 2.03125 2.03125zm-2.707031 10.496093 2.699218-1.355469-1.078124-1.917968-2.820313 1.410156zm-11.511719 15.910157v-7.109376l5.175781-3.386718-.273437-.625c-.582031-1.34375-.660157-2.855469-.21875-4.25l-1.972657-3.585938-4.742187 1.015625-1.015625-1.015625 4.0625-4.742187v-2.027344l1.355469 1.351563c2.300781 0 4.445312 1.171874 5.691406 3.109374l1.328125 2.0625 2.914062-1.460937-.195312-.347656c-.550781-.976563-.199219-2.214844.777344-2.765625.976562-.546875 2.21875-.199219 2.765625.777344l2.753906 4.90625c.417969.742187.21875 1.683593-.46875 2.1875l2.453125-.429688c1.367188-.242188 2.777344.054688 3.9375.820312l.898438-.898437c1.585937-1.585937 4.160156-1.585937 5.746093 0 .503907.503906.867188 1.128906 1.050781 1.820313l.648438 2.40625-2.539062 1.355468-.542969-3.089844c-.207031-1.195312-1.347657-1.996093-2.546875-1.785156-.445313.078125-.855469.289063-1.175782.609375l-.492187.492188c1.320313 1.484375 1.726563 3.570312 1.050781 5.441406l2.691406 4.445313-1.015624 6.429687-1.921876.660156 1.015626-6.433593-4.792969-3.738282.621093 4.753906-3.046874 5.757813h-2.03125l3.046874-5.757813-3.003906-5.308593c-3.066406.742187-6.261718.761719-9.332031.054687l3.195313 9.316406-.339844 1.695313h-1.695313l.339844-1.695313-4.0625-9.382812-4.398437 2.613281v4.738281" fill="#fff"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_239.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_239.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_239.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m42.652344 7.378906c3.246094 3.246094 5.269531 6.746094 6.457031 11.183594 1.191406 4.441406 1.191406 8.484375 0 12.921875-1.1875 4.4375-3.210937 7.941406-6.460937 11.191406-3.246094 3.246094-6.75 5.269531-11.1875 6.457031s-8.484376 1.191407-12.921876 0c-4.4375-1.191406-7.9375-3.210937-11.183593-6.457031-3.25-3.25-5.273438-6.753906-6.464844-11.191406-1.1875-4.4375-1.1875-8.484375 0-12.921875 1.191406-4.4375 3.214844-7.9375 6.460937-11.183594 3.25-3.25 6.753907-5.273437 11.1875-6.464844 4.4375-1.1875 8.484376-1.1875 12.921876 0 4.4375 1.191407 7.941406 3.214844 11.191406 6.464844zm-.03125.027344c-3.242188-3.242188-6.738282-5.261719-11.167969-6.453125-4.433594-1.183594-8.46875-1.1875-12.902344.003906-4.429687 1.1875-7.925781 3.207031-11.167969 6.449219-3.246093 3.242188-5.261718 6.738281-6.453124 11.167969-1.183594 4.429687-1.183594 8.46875.003906 12.898437 1.1875 4.433594 3.207031 7.925782 6.453125 11.171875 3.242187 3.242188 6.734375 5.261719 11.164062 6.449219 4.433594 1.1875 8.46875 1.183594 12.902344 0 4.429687-1.1875 7.921875-3.207031 11.167969-6.449219 3.242187-3.246093 5.261718-6.738281 6.449218-11.167969 1.1875-4.433593 1.1875-8.46875 0-12.902343-1.1875-4.429688-3.203124-7.925781-6.449218-11.167969zm0 0"/><path d="m7.382812 7.40625c3.242188-3.242188 6.738282-5.261719 11.167969-6.449219 4.433594-1.191406 8.46875-1.1875 12.902344-.003906 4.429687 1.191406 7.925781 3.210937 11.167969 6.453125 3.246094 3.242188 5.261718 6.738281 6.449218 11.167969 1.1875 4.433593 1.1875 8.46875 0 12.902343-1.1875 4.429688-3.207031 7.921876-6.449218 11.167969-3.246094 3.242188-6.738282 5.261719-11.167969 6.449219-4.433594 1.1875-8.46875 1.1875-12.902344 0-4.429687-1.1875-7.921875-3.207031-11.164062-6.449219-3.246094-3.246093-5.265625-6.738281-6.453125-11.171875-1.1875-4.429687-1.1875-8.46875 0-12.898437 1.1875-4.429688 3.203125-7.925781 6.449218-11.167969zm0 0" fill="#fff"/><path d="m8.207031 8.226562c3.089844-3.089843 6.421875-5.015624 10.644531-6.144531 4.226563-1.132812 8.074219-1.132812 12.296876-.003906 4.226562 1.128906 7.558593 3.058594 10.652343 6.152344 3.089844 3.089843 5.011719 6.421875 6.144531 10.644531 1.128907 4.226562 1.128907 8.074219 0 12.296875-1.132812 4.222656-3.054687 7.558594-6.144531 10.648437-3.09375 3.09375-6.425781 5.019532-10.652343 6.148438-4.222657 1.128906-8.070313 1.128906-12.296876-.003906-4.222656-1.128906-7.554687-3.050782-10.644531-6.140625-3.09375-3.09375-5.019531-6.429688-6.148437-10.652344-1.132813-4.222656-1.132813-8.074219 0-12.296875 1.128906-4.222656 3.054687-7.554688 6.148437-10.648438zm0 0" fill="#154889"/></g><path d="m33.734375 23.964844c0-1.359375-1.105469-2.464844-2.46875-2.464844s-2.464844 1.105469-2.464844 2.464844c0 1.363281 1.101563 2.472656 2.464844 2.472656s2.46875-1.109375 2.46875-2.472656zm-11.984375-14.453125c0 1.554687-1.265625 2.820312-2.824219 2.820312-1.554687 0-2.820312-1.265625-2.820312-2.820312 0-1.558594 1.265625-2.820313 2.820312-2.820313 1.558594 0 2.824219 1.261719 2.824219 2.820313zm-5.644531 14.386719.496093-.488282c.132813-.132812.210938-.3125.210938-.5v-5.289062c0-.195313-.160156-.351563-.355469-.351563-.191406 0-.351562.15625-.351562.351563zm-4.230469 8.175781c.40625-2.699219 1.578125-5.226563 3.375-7.28125-.808594-.90625-1.257812-2.078125-1.257812-3.292969v-2.820312c0-2.726563 2.207031-4.9375 4.933593-4.9375 1.84375 0 3.53125 1.023437 4.378907 2.65625l2.929687 5.628906c.425781.816406.273437 1.8125-.371094 2.464844l2.910157 2.445312c.988281.828125 2.320312 1.113281 3.558593.757812l.523438-.148437c.539062-.152344 1.117187.027344 1.476562.460937l3.585938 4.359376c.609375.742187.515625 1.835937-.214844 2.457031l-3.261719-3.804688 1.058594 5.289063-1.355469.199218.816407 5.125c.074218.480469-.253907.933594-.734376 1.011719-.46875.070313-.914062-.238281-1.003906-.703125l-1-5.148437-1.144531.167969-.519531 5.597656c-.042969.484375-.472656.839844-.960938.796875-.472656-.042969-.824218-.457031-.796875-.929688l.703125-12.113281-5.019531-4.746094c-.46875-.65625-.433594-1.542968.082031-2.160156l-3.125-6.007812c-.054687-.101563-.179687-.144532-.285156-.089844-.070312.039062-.113281.109375-.113281.1875v5.414062c0 .1875.074219.367188.210937.5l.625.617188c2.203125 2.167968 3.640625 4.992187 4.101563 8.046875zm7.40625.707031h2.113281v9.519531c0 .582031-.472656 1.058594-1.058593 1.058594-.582032 0-1.054688-.476563-1.054688-1.058594zm-2.824219 0h2.117188v7.402344c0 .585937-.472657 1.058594-1.058594 1.058594-.582031 0-1.058594-.472657-1.058594-1.058594" fill="#fff"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_240.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_240.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_240.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m42.652344 7.355469c3.246094 3.246093 5.269531 6.746093 6.457031 11.183593 1.191406 4.441407 1.191406 8.484376 0 12.921876-1.1875 4.4375-3.210937 7.941406-6.460937 11.191406-3.246094 3.246094-6.75 5.269531-11.1875 6.460937-4.4375 1.183594-8.484376 1.1875-12.921876-.003906-4.433593-1.1875-7.9375-3.210937-11.183593-6.457031-3.25-3.25-5.273438-6.753906-6.464844-11.191406-1.1875-4.4375-1.1875-8.484376 0-12.917969 1.191406-4.441407 3.214844-7.941407 6.460937-11.1875 3.25-3.25 6.753907-5.273438 11.1875-6.464844 4.4375-1.1875 8.484376-1.1875 12.921876 0 4.4375 1.191406 7.941406 3.214844 11.191406 6.464844zm-.03125.027343c-3.242188-3.242187-6.738282-5.261718-11.171875-6.453124-4.429688-1.183594-8.46875-1.1875-12.898438.003906-4.429687 1.1875-7.925781 3.207031-11.171875 6.449218-3.242187 3.242188-5.257812 6.738282-6.449218 11.167969-1.183594 4.429688-1.183594 8.46875.003906 12.898438 1.1875 4.433593 3.207031 7.929687 6.453125 11.171875 3.242187 3.242187 6.734375 5.261718 11.164062 6.449218 4.433594 1.1875 8.46875 1.1875 12.898438 0 4.433593-1.1875 7.925781-3.207031 11.171875-6.449218 3.242187-3.242188 5.261718-6.738282 6.449218-11.167969 1.1875-4.433594 1.1875-8.46875 0-12.902344-1.1875-4.429687-3.203124-7.925781-6.449218-11.167969zm0 0"/><path d="m7.378906 7.382812c3.246094-3.242187 6.742188-5.261718 11.171875-6.449218 4.429688-1.191406 8.46875-1.1875 12.898438-.003906 4.433593 1.191406 7.929687 3.210937 11.171875 6.453124 3.246094 3.242188 5.261718 6.738282 6.449218 11.167969 1.1875 4.433594 1.1875 8.46875 0 12.902344-1.1875 4.429687-3.207031 7.925781-6.449218 11.167969-3.246094 3.242187-6.738282 5.261718-11.167969 6.449218-4.433594 1.1875-8.46875 1.1875-12.902344 0-4.429687-1.1875-7.921875-3.207031-11.164062-6.449218-3.246094-3.242188-5.265625-6.738282-6.453125-11.171875-1.1875-4.429688-1.1875-8.46875 0-12.898438 1.1875-4.429687 3.203125-7.925781 6.445312-11.167969zm0 0" fill="#fff"/><path d="m8.207031 8.203125c3.089844-3.089844 6.421875-5.015625 10.644531-6.144531 4.226563-1.132813 8.074219-1.132813 12.296876-.003906 4.226562 1.132812 7.558593 3.058593 10.652343 6.152343 3.089844 3.089844 5.011719 6.421875 6.144531 10.644531 1.128907 4.226563 1.128907 8.074219 0 12.300782-1.132812 4.21875-3.054687 7.554687-6.144531 10.644531-3.09375 3.09375-6.425781 5.019531-10.652343 6.148437-4.222657 1.132813-8.070313 1.132813-12.296876 0-4.222656-1.132812-7.554687-3.054687-10.644531-6.144531-3.09375-3.09375-5.019531-6.429687-6.148437-10.652343-1.132813-4.222657-1.132813-8.074219 0-12.296876 1.128906-4.222656 3.054687-7.554687 6.148437-10.648437zm0 0" fill="#154889"/></g><path d="m4.164062 25.835938h41.671876v.828124h-41.671876zm0 0" fill="#fff"/><path d="m30.128906 13.355469c0-.773438-.628906-1.402344-1.402344-1.402344-.773437 0-1.402343.628906-1.402343 1.402344 0 .777343.628906 1.402343 1.402343 1.402343.773438 0 1.402344-.625 1.402344-1.402343zm-6.8125-8.210938c0 .882813-.714844 1.601563-1.601562 1.601563-.882813 0-1.601563-.71875-1.601563-1.601563 0-.886719.71875-1.605469 1.601563-1.605469.886718 0 1.601562.71875 1.601562 1.605469zm-3.203125 8.171875.28125-.273437c.078125-.078125.117188-.179688.117188-.285157v-3.007812c0-.109375-.085938-.199219-.199219-.199219-.109375 0-.199219.089844-.199219.199219zm-2.40625 4.648438c.230469-1.535156.898438-2.972656 1.921875-4.136719-.460937-.515625-.71875-1.183594-.71875-1.875v-1.601563c0-1.546874 1.257813-2.804687 2.804688-2.804687 1.046875 0 2.003906.582031 2.488281 1.507813l1.664063 3.199218c.242187.464844.15625 1.03125-.210938 1.402344l1.652344 1.390625c.5625.46875 1.320312.628906 2.023437.429687l.296875-.085937c.304688-.085937.636719.015625.839844.261719l2.035156 2.476562c.347656.421875.292969 1.042969-.121094 1.398438l-1.851562-2.164063.601562 3.003907-.769531.113281.460938 2.914062c.042969.273438-.144531.53125-.417969.574219-.265625.042969-.515625-.136719-.566406-.398438l-.570313-2.925781-.648437.097657-.296875 3.179687c-.023438.273437-.269531.476563-.542969.449219-.269531-.023438-.472656-.257813-.457031-.527344l.402343-6.878906-2.855468-2.699219c-.265625-.371094-.242188-.878906.050781-1.226563l-1.777344-3.414062c-.027343-.058594-.105469-.082031-.164062-.050781-.039063.019531-.0625.0625-.0625.105469v3.074218c0 .109375.042969.210938.117187.289063l.355469.347656c1.253906 1.234375 2.070313 2.835937 2.332031 4.574219zm4.207031.402344h1.203126v5.40625c0 .332031-.265626.601562-.601563.601562-.328125 0-.601563-.269531-.601563-.601562zm-1.601562 0h1.203125v4.207031c0 .328125-.269531.597656-.601563.597656-.332031 0-.601562-.269531-.601562-.597656" fill="#fff"/><path d="m33.789062 42.839844c-2.035156.605468-4.175781-.558594-4.785156-2.59375-.011718-.042969-.023437-.089844-.035156-.132813h3.964844c.265625 0 .480468-.214843.480468-.480469 0-.066406-.015624-.136718-.042968-.195312l-1.773438-3.972656c2.035156-.605469 4.175782.554687 4.78125 2.589844.605469 2.039062-.554687 4.179687-2.589844 4.785156zm-3.070312-6.988282 1.476562 3.300782h-3.347656c0-1.351563.710938-2.605469 1.871094-3.300782zm-2.832031 3.300782h-.960938l2.402344-6.410156.996094 2.226562c-1.507813.851562-2.4375 2.453125-2.4375 4.183594zm-1.96875-.054688-6.023438-6.675781h8.527344zm-5.105469 1.640625c-.878906 1.933594-3.15625 2.792969-5.09375 1.917969-1.933594-.878906-2.789062-3.15625-1.914062-5.09375.726562-1.597656 2.441406-2.503906 4.171874-2.199219l-1.125 3.644531c-.082031.253907.0625.523438.3125.601563.257813.078125.527344-.0625.605469-.316406l1.125-3.644531c1.9375.875 2.792969 3.15625 1.917969 5.089843zm16.453125-3.078125c-.824219-2.523437-3.539063-3.902344-6.0625-3.082031l-1.394531-3.121094.359375-.960937h1.082031v-.960938h-4.085938c-.109374 0-.207031.078125-.234374.183594-.03125.128906.050781.257812.179687.289062l2.03125.488282-.359375.960937h-8.585938l.382813-1.246093c.125-.402344.5-.675782.917969-.675782h1.582031v-.960937h-1.582031c-.839844 0-1.585938.546875-1.835938 1.355469l-1.394531 4.507812c-2.242187-.453125-4.492187.734375-5.386719 2.839844-1.03125 2.445312.109375 5.265625 2.554688 6.300781 2.445312 1.035156 5.265625-.109375 6.300781-2.550781 1.035156-2.445313-.105469-5.269532-2.550781-6.304688l.382812-1.234375 5.683594 6.304688c.179688.203125.441406.320312.710938.320312h2.023437c.035156.179688.082031.355469.136719.527344.824218 2.527344 3.539062 3.90625 6.0625 3.082031 2.523437-.824218 3.902344-3.539062 3.082031-6.0625" fill="#fff"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_241.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_241.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_241.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m42.652344 7.355469c3.246094 3.246093 5.269531 6.746093 6.457031 11.183593 1.191406 4.441407 1.191406 8.484376 0 12.921876-1.1875 4.4375-3.210937 7.941406-6.460937 11.191406-3.246094 3.246094-6.75 5.269531-11.1875 6.460937-4.4375 1.183594-8.484376 1.1875-12.921876-.003906-4.433593-1.1875-7.9375-3.210937-11.183593-6.457031-3.25-3.25-5.273438-6.753906-6.464844-11.191406-1.1875-4.4375-1.1875-8.484376 0-12.917969 1.191406-4.441407 3.214844-7.941407 6.460937-11.1875 3.25-3.25 6.753907-5.273438 11.1875-6.464844 4.4375-1.1875 8.484376-1.1875 12.921876 0 4.4375 1.191406 7.941406 3.214844 11.191406 6.464844zm-.03125.027343c-3.242188-3.242187-6.738282-5.261718-11.171875-6.453124-4.429688-1.183594-8.46875-1.1875-12.898438.003906-4.429687 1.1875-7.925781 3.207031-11.171875 6.449218-3.242187 3.242188-5.257812 6.738282-6.449218 11.167969-1.183594 4.429688-1.183594 8.46875.003906 12.898438 1.1875 4.433593 3.207031 7.929687 6.453125 11.171875 3.242187 3.242187 6.734375 5.261718 11.164062 6.449218 4.433594 1.1875 8.46875 1.1875 12.898438 0 4.433593-1.1875 7.925781-3.207031 11.171875-6.449218 3.242187-3.242188 5.261718-6.738282 6.449218-11.167969 1.1875-4.433594 1.1875-8.46875 0-12.902344-1.1875-4.429687-3.203124-7.925781-6.449218-11.167969zm0 0"/><path d="m7.378906 7.382812c3.246094-3.242187 6.742188-5.261718 11.171875-6.449218 4.429688-1.191406 8.46875-1.1875 12.898438-.003906 4.433593 1.191406 7.929687 3.210937 11.171875 6.453124 3.246094 3.242188 5.261718 6.738282 6.449218 11.167969 1.1875 4.433594 1.1875 8.46875 0 12.902344-1.1875 4.429687-3.207031 7.925781-6.449218 11.167969-3.246094 3.242187-6.738282 5.261718-11.167969 6.449218-4.433594 1.1875-8.46875 1.1875-12.902344 0-4.429687-1.1875-7.921875-3.207031-11.164062-6.449218-3.246094-3.242188-5.265625-6.738282-6.453125-11.171875-1.1875-4.429688-1.1875-8.46875 0-12.898438 1.1875-4.429687 3.203125-7.925781 6.445312-11.167969zm0 0" fill="#fff"/><path d="m8.207031 8.203125c3.089844-3.089844 6.421875-5.015625 10.644531-6.144531 4.226563-1.132813 8.074219-1.132813 12.296876-.003906 4.226562 1.132812 7.558593 3.058593 10.652343 6.152343 3.089844 3.089844 5.011719 6.421875 6.144531 10.644531 1.128907 4.226563 1.128907 8.074219 0 12.300782-1.132812 4.21875-3.054687 7.554687-6.144531 10.644531-3.09375 3.09375-6.425781 5.019531-10.652343 6.148437-4.222657 1.132813-8.070313 1.132813-12.296876 0-4.222656-1.132812-7.554687-3.054687-10.644531-6.144531-3.09375-3.09375-5.019531-6.429687-6.148437-10.652343-1.132813-4.222657-1.132813-8.074219 0-12.296876 1.128906-4.222656 3.054687-7.554687 6.148437-10.648437zm0 0" fill="#154889"/></g><path d="m237.037506 413.863246v-376.261767" fill="none" stroke="#fff" stroke-miterlimit="10" stroke-width="7.520522" transform="matrix(.110742 0 0 .110742 0 .000001)"/><path d="m21.011719 31.730469c-1.730469.515625-3.550781-.46875-4.066407-2.203125-.007812-.035156-.019531-.074219-.03125-.113282h3.371094c.226563 0 .40625-.179687.40625-.40625 0-.058593-.007812-.117187-.035156-.167968l-1.507812-3.375c1.730468-.515625 3.550781.472656 4.066406 2.203125.511718 1.730469-.472656 3.550781-2.203125 4.0625zm-2.609375-5.9375 1.253906 2.804687h-2.84375c0-1.148437.601562-2.214844 1.589844-2.804687zm-2.410156 2.804687h-.8125l2.039062-5.449218.847656 1.894531c-1.28125.726562-2.074218 2.082031-2.074218 3.554687zm-1.671876-.042968-5.117187-5.675782h7.246094zm-4.339843 1.390624c-.742188 1.648438-2.679688 2.375-4.328125 1.628907-1.644532-.742188-2.371094-2.679688-1.625-4.324219.617187-1.359375 2.074218-2.132812 3.546875-1.871094l-.960938 3.097656c-.066406.21875.054688.445313.269531.511719.214844.066407.445313-.054687.511719-.269531l.960938-3.097656c1.640625.746094 2.371093 2.683594 1.625 4.324218zm13.988281-2.613281c-.703125-2.144531-3.007812-3.320312-5.15625-2.621093l-1.183594-2.652344.304688-.816406h.921875v-.816407h-3.472657c-.097656 0-.179687.0625-.199218.15625-.027344.109375.039062.21875.148437.246094l1.730469.414063-.304688.816406h-7.300781l.328125-1.058594c.105469-.339844.421875-.574219.78125-.574219h1.339844v-.816406h-1.339844c-.71875 0-1.351562.464844-1.5625 1.148437l-1.1875 3.835938c-1.90625-.386719-3.820312.621094-4.574218 2.410156-.882813 2.082032.089843 4.480469 2.167968 5.359375 2.078125.878907 4.476563-.09375 5.355469-2.171875.882813-2.078125-.089844-4.476562-2.167969-5.355468l.324219-1.050782 4.832031 5.359375c.152344.171875.375.269531.605469.269531h1.71875c.03125.152344.070313.304688.117187.453126.699219 2.140624 3.007813 3.316406 5.152344 2.617187 2.144532-.699219 3.320313-3.007813 2.621094-5.152344" fill="#fff"/><path d="m42.617188 24.398438c0-.773438-.628907-1.402344-1.402344-1.402344-.773438 0-1.402344.628906-1.402344 1.402344 0 .773437.628906 1.402343 1.402344 1.402343.773437 0 1.402344-.628906 1.402344-1.402343zm-6.808594-8.210938c0 .882812-.71875 1.601562-1.605469 1.601562-.882813 0-1.601563-.71875-1.601563-1.601562 0-.886719.71875-1.605469 1.601563-1.605469.886719 0 1.605469.71875 1.605469 1.605469zm-3.207032 8.171875.28125-.277344c.078126-.074219.121094-.175781.121094-.285156v-3.003906c0-.109375-.089844-.199219-.203125-.199219-.109375 0-.199219.089844-.199219.199219zm-2.402343 4.648437c.226562-1.535156.894531-2.972656 1.914062-4.136718-.460937-.515625-.714843-1.183594-.714843-1.875v-1.601563c0-1.550781 1.257812-2.804687 2.804687-2.804687 1.046875 0 2.003906.582031 2.488281 1.507812l1.664063 3.199219c.242187.464844.15625 1.03125-.210938 1.402344l1.652344 1.386719c.5625.472656 1.320313.632812 2.023437.429687l.296876-.082031c.304687-.085938.636718.015625.839843.261718l2.035157 2.476563c.347656.421875.296874 1.042969-.121094 1.394531l-1.851563-2.160156.597657 3.003906-.765626.113282.460938 2.914062c.042969.273438-.144531.53125-.414062.574219-.265626.039062-.519532-.136719-.570313-.398438l-.570313-2.925781-.648437.09375-.296875 3.183594c-.023438.273437-.269531.476562-.546875.449218-.265625-.023437-.46875-.257812-.453125-.527343l.402344-6.882813-2.851563-2.695312c-.265625-.371094-.25-.878906.046875-1.226563l-1.777344-3.414062c-.03125-.058594-.101562-.082031-.160156-.050781-.039062.019531-.066406.0625-.066406.105468v3.074219c0 .109375.042969.210937.121094.285156l.355468.351563c1.25 1.230468 2.066407 2.835937 2.328126 4.574218zm4.207031.398438h1.199219v5.410156c0 .332032-.265625.601563-.601563.601563-.332031 0-.597656-.269531-.597656-.601563zm-1.605469 0h1.203125v4.207031c0 .332031-.269531.601563-.601562.601563-.332032 0-.601563-.269532-.601563-.601563" fill="#fff"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_242.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_242.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_242.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m3.171875.0234375c-3.1523438 0-3.1484375 3.1406245-3.1484375 3.1406245v43.671876s-.0039063 3.140624 3.1484375 3.140624h43.65625c3.152344 0 3.148437-3.140624 3.148437-3.140624v-43.671876s.003907-3.1406245-3.148437-3.1406245zm0 0" fill="#fff"/><path d="m3.105469.847656c-2.257813-.003906-2.25 2.25-2.25 2.25v43.804688s-.007813 2.253906 2.25 2.25h43.789062c2.257813.003906 2.25-2.25 2.25-2.25v-43.804688s.007813-2.253906-2.25-2.25zm0 1.25h43.789062s.996094.039063 1 1v43.804688c-.003906.960937-1 1-1 1h-43.789062s-.996094-.039063-1-1v-43.804688c.003906-.960937 1-1 1-1zm0 0"/><path d="m3.171875 0c-1.585937 0-2.382813.792969-2.777344 1.582031-.39843725.792969-.394531 1.582031-.394531 1.582031v43.671876s-.00390625.789062.394531 1.582031c.394531.789062 1.191407 1.582031 2.777344 1.582031h43.65625c1.585937 0 2.382813-.792969 2.777344-1.582031.398437-.792969.394531-1.582031.394531-1.582031v-43.671876s.003906-.789062-.394531-1.582031c-.394531-.789062-1.191407-1.582031-2.777344-1.582031zm0 .0234375h43.65625c3.152344 0 3.148437 3.1406245 3.148437 3.1406245v43.671876s.003907 3.140624-3.148437 3.140624h-43.65625c-3.1523438 0-3.1484375-3.140624-3.1484375-3.140624v-43.671876s-.0039063-3.1406245 3.1484375-3.1406245zm0 0"/><path d="m32.074219 44.910156v-7.007812h4.507812v1h-3.441406v2.003906h2.941406v.9375h-2.941406v2.066406h3.441406v1zm-6.878907 0v-7.007812h1l3.191407 5.003906v-5.003906h1.0625v7.007812h-1l-3.191407-5.003906v5.003906zm-5.316406-2.441406c0 .796875.640625 1.441406 1.4375 1.441406s1.4375-.644531 1.4375-1.441406v-2.125c0-.792969-.640625-1.441406-1.4375-1.441406s-1.4375.648437-1.4375 1.441406zm-1.066406 0v-2.125c0-1.382812 1.121094-2.503906 2.503906-2.503906 1.382813 0 2.503906 1.121094 2.503906 2.503906v2.125c0 1.382812-1.121093 2.503906-2.503906 2.503906-1.382812 0-2.503906-1.121094-2.503906-2.503906zm-5.503906 2.441406v-.875l3.191406-5.195312h-3.066406v-.9375h4.378906v.8125l-3.191406 5.195312h3.191406v1"/><path d="m39.960938 20.015625c0 8.285156-6.714844 15-15 15-8.285157 0-15-6.714844-15-15s6.714843-15 15-15c8.285156 0 15 6.714844 15 15zm0 0" fill="#154889"/><path d="m10.960938 6.195312v.003907h-.003907zm0 0"/><path d="m10.957031 6.195312h.003907v.003907h-.003907zm0 0"/><path d="m10.957031 6.199219v-.003907l.003907.003907zm.003907 0-.003907-.003907v.003907zm0 0"/><path d="m10.960938 6.199219h-.003907v-.003907zm0 0"/><path d="m10.957031 6.199219v-.003907.003907l.003907-.003907zm0 0"/><path d="m10.957031 6.195312h.003907v.003907h-.003907zm0 0"/><path d="m10.960938 6.195312v.003907h-.003907zm0 0"/><path d="m10.957031 6.195312h.003907v.003907h-.003907zm0 0"/><path d="m10.957031 6.199219v-.003907l.003907.003907zm.003907 0-.003907-.003907v.003907zm0 0"/><path d="m10.960938 6.199219h-.003907v-.003907zm0 0"/><path d="m10.957031 6.199219v-.003907.003907l.003907-.003907zm0 0"/><path d="m10.957031 6.195312h.003907v.003907h-.003907zm0 0"/><path d="m10.960938 6.195312v.003907h-.003907zm0 0"/><path d="m10.957031 6.195312h.003907v.003907h-.003907zm0 0"/><path d="m10.957031 6.199219v-.003907l.003907.003907zm.003907 0-.003907-.003907v.003907zm0 0"/><path d="m10.960938 6.199219h-.003907v-.003907zm0 0"/><path d="m10.957031 6.199219v-.003907.003907l.003907-.003907zm0 0"/><path d="m10.957031 6.195312h.003907v.003907h-.003907zm0 0"/><path d="m30.507812 19.335938c0-.875-.707031-1.585938-1.585937-1.585938-.875 0-1.582031.710938-1.582031 1.585938s.707031 1.585937 1.582031 1.585937c.878906 0 1.585937-.710937 1.585937-1.585937zm-7.699218-9.285157c0 1-.8125 1.8125-1.8125 1.8125s-1.8125-.8125-1.8125-1.8125.8125-1.8125 1.8125-1.8125 1.8125.8125 1.8125 1.8125zm-3.625 9.242188.320312-.3125c.085938-.085938.132813-.203125.132813-.324219v-3.398438c0-.125-.097657-.222656-.226563-.222656-.121094 0-.226562.097656-.226562.222656zm-2.714844 5.25c.261719-1.734375 1.011719-3.355469 2.167969-4.675781-.519531-.582032-.808594-1.335938-.808594-2.117188v-1.8125c0-1.75 1.417969-3.167969 3.167969-3.167969 1.183594 0 2.265625.65625 2.8125 1.707031l1.882812 3.613282c.273438.523437.175782 1.164062-.238281 1.582031l1.867187 1.570313c.636719.535156 1.492188.714843 2.289063.488281l.335937-.09375c.34375-.101563.714844.015625.945313.292969l2.304687 2.800781c.390626.476562.332032 1.179687-.136718 1.578125l-2.097656-2.445313.679687 3.398438-.867187.128906.519531 3.292969c.050781.308594-.160157.597656-.46875.648437-.300781.046875-.585938-.152343-.644531-.449219l-.644532-3.308593-.730468.109375-.335938 3.59375c-.027344.3125-.304688.539062-.617188.511718-.300781-.027343-.53125-.292968-.511718-.597656l.453125-7.78125-3.226563-3.046875c-.300781-.421875-.277344-.992187.054688-1.386719l-2.007813-3.859374c-.035156-.066407-.117187-.09375-.183593-.058594-.046876.023437-.074219.070312-.074219.121094v3.476562c0 .121094.050781.238281.136719.324219l.402343.394531c1.414063 1.390625 2.335938 3.207031 2.632813 5.167969zm4.753906.453125h1.359375v6.117187c0 .375-.304687.679688-.679687.679688s-.679688-.304688-.679688-.679688zm-1.8125 0h1.359375v4.757812c0 .375-.304687.679688-.675781.679688-.378906 0-.683594-.304688-.683594-.679688" fill="#fff"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_244.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_244.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_244.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m3.171875.0234375c-3.1523438 0-3.1484375 3.1406245-3.1484375 3.1406245v43.671876s-.0039063 3.140624 3.1484375 3.140624h43.65625c3.152344 0 3.148437-3.140624 3.148437-3.140624v-43.671876s.003907-3.1406245-3.148437-3.1406245zm0 0" fill="#fff"/><path d="m3.105469.847656c-2.257813-.003906-2.25 2.25-2.25 2.25v43.804688s-.007813 2.253906 2.25 2.25h43.789062c2.257813.003906 2.25-2.25 2.25-2.25v-43.804688s.007813-2.253906-2.25-2.25zm0 1.25h43.789062s.996094.039063 1 1v43.804688c-.003906.960937-1 1-1 1h-43.789062s-.996094-.039063-1-1v-43.804688c.003906-.960937 1-1 1-1zm0 0"/><path d="m3.171875 0c-1.585937 0-2.382813.792969-2.777344 1.582031-.39843725.792969-.394531 1.582031-.394531 1.582031v43.671876s-.00390625.789062.394531 1.582031c.394531.789062 1.191407 1.582031 2.777344 1.582031h43.65625c1.585937 0 2.382813-.792969 2.777344-1.582031.398437-.792969.394531-1.582031.394531-1.582031v-43.671876s.003906-.789062-.394531-1.582031c-.394531-.789062-1.191407-1.582031-2.777344-1.582031zm0 .0234375h43.65625c3.152344 0 3.148437 3.1406245 3.148437 3.1406245v43.671876s.003907 3.140624-3.148437 3.140624h-43.65625c-3.1523438 0-3.1484375-3.140624-3.1484375-3.140624v-43.671876s-.0039063-3.1406245 3.1484375-3.1406245zm0 0"/><path d="m4.324219 44.90625v-4.660156h2.996093v.667968h-2.289062v1.371094h1.953125v.625h-1.953125v1.996094zm5.910156 0h-.667969v-.34375l-.019531.035156-.046875.066406-.050781.058594-.058594.046875-.066406.042969-.078125.042969-.066406.023437-.082032.019532-.074218.007812h-.519532l-.125-.019531-.125-.023438-.117187-.050781-.105469-.058594-.101562-.074218-.09375-.082032-.074219-.101562-.066407-.109375-.058593-.109375-.03125-.113282-.027344-.128906-.007813-.125.007813-.125.027344-.125.03125-.117187.058593-.117188.066407-.105469.074219-.09375.09375-.082031.101562-.074219.105469-.070312.117187-.039062.125-.035157.125-.015625h1.0625v-.351562l-.007812-.050782-.011719-.039062-.015625-.042969-.015625-.035156-.027344-.039063-.023437-.035156-.035156-.023437-.03125-.027344-.042969-.023437-.039063-.015626-.042968-.007812-.015626-.007812-.09375-.019532-.175781-.007812h-.175781l-.183594.007812-.082031.019532-.023437.007812-.042969.007812-.042969.015626-.03125.023437-.042969.027344-.023437.03125-.035156.035156-.023438.03125-.011719.019531-.523437-.417968.03125-.042969.085937-.089844.082031-.085937.101563-.066407.101563-.058593.105468-.050782.175782-.046875.117187-.019531.234375-.015625h.234375l.242187.015625.117188.019531.054688.015625.117187.03125.109375.050782.109375.058593.089844.078125.09375.082032.074219.089843.066406.101563.058594.109375.042968.109375.023438.125.019531.117187zm-.667969-1.453125v.441406l-.007812.050781-.011719.050782-.015625.039062-.023438.050782-.035156.042968-.03125.035156-.035156.03125-.042969.027344-.039062.023438-.101563.03125-.050781.007812h-.589844l-.050781-.007812-.101562-.03125-.042969-.023438-.082031-.070312-.035157-.039063-.023437-.042969-.023438-.050781-.019531-.050781-.007813-.050781v-.097657l.007813-.058593.019531-.050781.023438-.042969.023437-.046875.078125-.078125.039063-.023438.042969-.027343.050781-.023438.101562-.015625zm1.660156 1.453125v-4.660156h.667969v1.710937l.042969-.046875.097656-.09375.101563-.082031.117187-.066406.117188-.058594.125-.035156.132812-.023438.125-.011719h.132813l.132812.027344.128907.03125.113281.050782.117187.066406.109375.085937.09375.082031.082031.101563.074219.109375.058594.125.050781.113281.023438.136719.019531.125.007813.066406v2.246094h-.667969v-2.078125l-.015625-.085937-.019532-.082032-.03125-.074218-.042968-.078126-.050782-.066406-.050781-.058594-.066406-.050781-.074219-.046875-.074218-.035156-.074219-.023438-.085938-.015624-.082031-.011719-.082031.011719-.085938.015624-.074219.023438-.074218.035156-.074219.046875-.070313.050781-.046874.058594-.050782.066406-.042968.078126-.03125.074218-.019532.082032-.015625.085937v2.078125zm3.664063 0v-3.324219h.667969v.375l.042968-.046875.089844-.09375.09375-.074218.109375-.066407.117188-.058593.113281-.035157.125-.03125.128906-.011719h.121094l.128906.019532.125.023437.117188.042969.113281.058594.101563.066406.050781.042969-.46875.582031-.03125-.03125-.066407-.042969-.070312-.042969-.074219-.023437-.082031-.015625-.074219-.007812h-.085937l-.082032.007812-.074218.015625-.074219.023437-.078125.042969-.058594.042969-.066406.058594-.050781.058594-.046875.066406-.035156.066406-.023438.074219-.027344.082031-.007812.078125v2.078125zm2.746094 0v-3.324219h.667969v.375l.042968-.046875.089844-.09375.09375-.074218.109375-.066407.117187-.058593.113282-.035157.128906-.03125.125-.011719h.121094l.128906.019532.125.023437.117188.042969.117187.058594.097656.066406.050781.042969-.46875.582031-.03125-.03125-.066406-.042969-.070312-.042969-.074219-.023437-.082031-.015625-.074219-.007812h-.085937l-.082032.007812-.074218.015625-.074219.023437-.078125.042969-.058594.042969-.066406.058594-.046875.058594-.050781.066406-.035157.066406-.023437.074219-.027344.082031-.007812.078125v2.078125zm5.242187 0h-.660156v-.34375l-.023438.035156-.042968.066406-.058594.058594-.058594.046875-.132812.085938-.074219.023437-.074219.019532-.085937.007812h-.515625l-.125-.019531-.117188-.023438-.117187-.050781-.109375-.058594-.097656-.074218-.09375-.082032-.082032-.101562-.070312-.109375-.046875-.109375-.042969-.113282-.023438-.128906-.007812-.125.007812-.125.023438-.125.042969-.117187.046875-.117188.070312-.105469.082032-.09375.09375-.082031.097656-.074219.109375-.070312.117187-.039062.117188-.035157.125-.015625h1.066406v-.335937l-.007812-.015625v-.050782l-.007813-.039062-.015625-.042969-.027344-.035156-.015625-.039063-.03125-.035156-.070312-.050781-.03125-.023437-.042969-.015626-.039062-.007812-.027344-.007812-.082032-.019532-.183593-.007812h-.175781l-.175782.007812-.089844.019532-.019531.007812-.039062.007812-.042969.015626-.042969.023437-.03125.027344-.035156.03125-.023437.035156-.027344.03125-.007813.019531-.523437-.417968.03125-.042969.074218-.089844.09375-.085937.089844-.066407.109375-.058593.109375-.050782.109375-.03125.058594-.015625.117187-.019531.238282-.015625h.234375l.234375.015625.117187.019531.175781.046875.109376.050782.105468.058593.101563.078125.085937.082032.082032.089843.066406.101563.050781.109375.039063.109375.027343.125.015625.117187zm-.660156-1.453125v.417969l-.007812.023437v.050781l-.015626.050782-.015624.039062-.027344.050782-.023438.042968-.035156.035156-.039062.03125-.042969.027344-.042969.023438-.050781.015625-.039063.015625-.050781.007812h-.59375l-.050781-.007812-.058594-.015625-.039062-.015625-.050782-.023438-.042968-.035156-.03125-.035156-.035157-.039063-.03125-.042969-.019531-.050781-.03125-.101562v-.097657l.015625-.058593.015625-.050781.019531-.042969.03125-.046875.035157-.035156.03125-.042969.042968-.023438.050782-.027343.039062-.023438.058594-.007812.050781-.007813zm4.234375 1.453125h-.667969v-.375l-.042968.046875-.089844.09375-.109375.082031-.109375.066406-.125.058594-.125.035156-.125.023438-.125.007812h-.132813l-.125-.023437-.125-.035156-.125-.046875-.117187-.070313-.203125-.164062-.082031-.101563-.074219-.109375-.058594-.125-.042969-.117187-.03125-.132813-.019531-.125v-1.300781l.019531-.125.03125-.136719.042969-.113281.058594-.125.074219-.109375.082031-.101563.101562-.082031.101563-.085937.117187-.066406.125-.050782.125-.03125.125-.027344h.132813l.125.011719.125.023438.125.035156.125.058594.109375.066406.109375.082031.089844.09375.042968.046875v-1.710937h.667969zm-.667969-1.285156v.039062l-.007812.085938-.027344.082031-.023438.074219-.042968.074218-.050782.070313-.058593.058594-.066407.046875-.066406.050781-.074218.035156-.082032.023438-.085937.015625-.082031.007812-.082032-.007812-.070312-.015625-.082032-.023438-.074218-.035156-.066406-.050781-.066407-.046875-.058593-.058594-.050782-.070313-.042968-.074218-.023438-.074219-.027344-.082031-.007812-.085938v-.832031l.007812-.085937.027344-.082032.023438-.074218.042968-.078126.050782-.066406.058593-.058594.066407-.050781.066406-.046875.074218-.035156.082032-.023438.070312-.015624.082032-.011719.082031.011719.085937.015624.082032.023438.074218.035156.066406.046875.066407.050781.058593.058594.050782.066406.042968.078126.023438.074218.027344.082032.007812.085937zm1.5.757812.085938.074219.183594.152344.199218.125.21875.097656.214844.078125.234375.050781.234375.015625h.234375l.234375-.035156.234375-.058594.105469-.03125.058594-.027344.101562-.050781.097656-.066406.09375-.082031.074219-.082032.066406-.101562.058594-.101562.042969-.105469.035156-.117188.015625-.117187.007813-.117188-.015626-.117187-.027343-.117188-.03125-.109375-.050781-.109375-.066407-.097656-.074219-.09375-.085937-.082031-.089844-.066406-.101562-.066407-.109375-.042969-.117188-.03125-.105468-.027343-.070313-.007813-.699219-.042968h-.023437l-.035157-.007813-.042968-.007813-.03125-.015624-.035156-.027344-.03125-.023438-.027344-.027344-.023438-.03125-.027344-.035156-.015624-.03125-.007813-.035156-.007813-.039062-.007812-.042969.007812-.035157v-.039062l.007813-.042969.015625-.035156.027344-.03125.015625-.035156.035156-.023438.023437-.023437.03125-.027344.035157-.015625.042969-.015625.015624-.007812.074219-.011719.160157-.023438h.15625l.160156.015625.160156.035156.148438.050782.140624.074218.136719.082032.066407.050781.417968-.527344-.101562-.066406-.191406-.125-.21875-.097656-.214844-.085938-.234375-.050781-.234375-.023438-.234375.007813-.234375.023437-.117188.027344-.058594.015625-.105468.042969-.101563.050781-.101562.066407-.089844.074218-.085937.09375-.066407.089844-.058593.109375-.039063.109375-.035156.105469-.015625.117187v.125l.007812.117188.023438.109375.035156.117187.050781.109375.066407.097657.074218.09375.085938.082031.089844.066406.101562.066406.109375.042969.113281.035156.117188.023438.058594.007812.710937.042969h.015625l.035156.007813.039063.007812.035156.015625.035156.027344.03125.023437.027344.027344.046875.066406.019531.03125.007813.035156.015625.082032v.035156l-.007813.039062-.007812.035157-.019532.042969-.015624.03125-.023438.035156-.027344.023437-.03125.027344-.035156.023437-.03125.015626-.019531.011718-.074219.023438-.15625.039062-.160156.019532-.160156.007812-.15625-.015625-.152344-.035156-.15625-.050781-.144532-.074219-.132812-.082031-.125-.09375-.058594-.058594zm4.910156.527344h-.460937l-.089844-.007812-.09375-.027344-.082031-.03125-.074219-.042969-.074219-.050781-.066406-.058594-.070312-.066406-.046875-.074219-.042969-.085937-.035156-.082032-.015625-.082031-.015625-.09375v-2.085937h-.335938v-.535157h.335938v-1h.667968v1h.5v.535157h-.5v1.996093l.015626.050781.015624.023438.007813.015625.019531.019531.023438.015625.015625.015625.027343.007813.023438.007812.027344.007813.023437.007812h.300781zm.917969 0v-3.324219h.660157v.375l.042968-.046875.089844-.09375.101562-.074218.109376-.066407.105468-.058593.125-.035157.117188-.03125.125-.011719h.132812l.128906.019532.113282.023437.117187.042969.117188.058594.109375.066406.050781.042969-.476563.582031-.03125-.03125-.070312-.042969-.066406-.042969-.074219-.023437-.074219-.015625-.082031-.007812h-.085937l-.074219.007812-.082031.015625-.078126.023437-.132812.085938-.117188.117188-.042968.066406-.039063.066406-.027343.074219-.015626.082031-.015624.078125v2.078125zm5.242188 0h-.667969v-.34375l-.015625.035156-.050781.066406-.050782.058594-.066406.046875-.058594.042969-.074218.042969-.074219.023437-.074219.019532-.078125.007812h-.515625l-.125-.019531-.125-.023438-.117187-.050781-.109375-.058594-.101563-.074218-.089843-.082032-.085938-.101562-.066406-.109375-.050782-.109375-.039062-.113282-.019531-.128906-.007813-.125.007813-.125.019531-.125.039062-.117187.050782-.117188.066406-.105469.085938-.09375.089843-.082031.101563-.074219.109375-.070312.117187-.039062.125-.035157.125-.015625h1.058594v-.351562l-.007812-.050782-.007813-.039062-.015625-.042969-.019531-.035156-.023438-.039063-.023437-.035156-.070313-.050781-.039062-.023437-.042969-.015626-.042969-.007812-.015625-.007812-.089844-.019532-.175781-.007812h-.183593l-.175782.007812-.085937.019532-.023438.007812-.042969.007812-.039062.015626-.035156.023437-.042969.027344-.023437.03125-.03125.035156-.027344.03125-.007813.019531-.527343-.417968.035156-.042969.074218-.089844.09375-.085937.097657-.066407.101562-.058593.109375-.050782.117188-.03125.054687-.015625.117188-.019531.234375-.015625h.234375l.242187.015625.117188.019531.175781.046875.109375.050782.097656.058593.101563.078125.089843.082032.078126.089843.066406.101563.050781.109375.039063.109375.035156.125.007812.117187.007813.054688zm-.667969-1.453125v.441406l-.015625.101563-.015625.039062-.027344.050782-.03125.042968-.066406.066406-.042969.027344-.042969.023438-.097656.03125-.050781.007812h-.59375l-.050781-.007812-.101563-.03125-.039062-.023438-.050781-.035156-.03125-.035156-.035157-.039063-.027343-.042969-.023438-.050781-.015625-.050781-.007813-.050781-.011718-.046875.011718-.050782.007813-.058593.015625-.050781.023438-.042969.027343-.046875.035157-.035156.03125-.042969.050781-.023438.039062-.027343.050781-.023438.101563-.015625zm1.660156 1.453125v-3.65625l.011719-.058594.007813-.117187.023437-.109375.042969-.109375.050781-.097657.058594-.09375.066406-.089843.082031-.078125.089844-.074219.09375-.058594.109375-.039062.050781-.027344.105469-.035156.210937-.039063.222657-.023437h.21875l.21875.023437.214843.039063.109376.035156.050781.027344.097656.039062.101563.058594.09375.074219.074218.078125.074219.089843.058594.09375.050781.097657.042969.109375.023437.109375.007813.117187v.214844l-.007813.085938-.015625.074218-.027343.074219-.03125.066406-.042969.066407-.050781.066406-.058594.058594-.058594.042968-.066406.050782-.066406.03125-.042969.011718.042969.015625.066406.03125.066406.042969.058594.050781.058594.058594.050781.058594.042969.066406.03125.074219.027343.074218.015625.078126.007813.074218v1.386719l-.007813.105469-.066406.21875-.050781.089844-.066407.09375-.074218.082031-.085938.074219-.089844.070312-.09375.046875-.214843.070313-.109375.007812h-.46875v-.621094h.351562l.042969-.007812.039063-.007813.070312-.03125.03125-.027343.035156-.023438.023438-.035156.023437-.03125.035157-.066406.015624-.085938v-1.285156l-.015624-.082032-.035157-.066406-.023437-.035156-.023438-.03125-.035156-.027344-.03125-.023437-.035156-.015625-.035156-.019532-.039063-.007812-.042969-.007812h-.433594v-.617188h.417969l.015625-.007812h.042969l.039063-.007813.070312-.035156.03125-.023438.035156-.027343.023438-.03125.023437-.035157.019531-.03125.015626-.035156.015624-.082031v-.210938l-.015624-.066406-.015626-.039062-.007812-.035157-.027344-.035156-.023437-.023437-.027344-.023438-.03125-.027344-.027344-.015625-.058593-.023437-.066407-.027344-.148437-.023438-.140625-.019531h-.152344l-.152344.019531-.140625.023438-.074218.027344-.015626.007812-.035156.015625-.03125.015625-.027344.027344-.03125.023438-.019531.023437-.023437.035156-.015625.035157-.007813.039062-.011718.035156-.007813.03125v3.683594zm6.328125-1.414062h-2.078125v.128906l.007813.082031.027343.082031.023438.078125.042969.074219.039062.066406.058594.066406.058594.058594.078125.050782.066406.042968.039062.015625.050782.015625.101562.023438.109375.019531.097657.007813.109374-.007813.101563-.027344.097656-.023437.101563-.042969.089844-.058594.085937-.058593.109375-.109376.507812.4375-.066406.066407-.125.117187-.152344.105469-.148437.09375-.167969.066406-.175781.058594-.175781.035156-.183594.007813-.175781-.007813-.183594-.027343-.164063-.050782-.09375-.023437-.074218-.035157-.140625-.082031-.136719-.09375-.113281-.105469-.109375-.125-.09375-.136718-.074219-.148438-.058594-.152344-.035156-.15625-.023437-.160156v-.832031l.023437-.175781.042969-.167969.066406-.160156.085938-.148438.097656-.140625.117187-.125.132813-.109375.144531-.09375.15625-.074219.167969-.050781.167968-.03125.175782-.011719.164062.011719.167969.03125.167969.050781.15625.074219.144531.09375.132813.109375.117187.125.101563.140625.082031.148438.066406.160156.042969.167969.023437.175781zm-2.078125-.582032v-.042968l.007813-.089844.027343-.085938.03125-.082031.042969-.074219.050781-.074218.066407-.070313.066406-.046875.074219-.050781.074218-.042969.085938-.023438.089844-.015624.09375-.011719.082031.011719.089844.015624.085937.023438.074219.042969.074219.050781.078125.046875.058593.070313.046876.074218.042968.074219.035156.082031.023438.085938.007812.089844v.042968zm0 0" fill-rule="evenodd"/><path d="m40.625 21.148438c0 8.628906-6.996094 15.625-15.625 15.625s-15.625-6.996094-15.625-15.625c0-8.628907 6.996094-15.625 15.625-15.625s15.625 6.996093 15.625 15.625zm0 0" fill="#154889"/><path d="m23.078125 13.476562h-1.683594l-.21875.027344-.214843.046875-.210938.078125-.199219.097656-.183593.117188-.175782.144531-.148437.164063-.136719.175781-.105469.191406-.09375.203125-.03125.105469-1.402343 4.5-.292969-.050781-.59375-.039063-.59375.023438-.582031.109375-.578126.167968-.542968.25-.507813.308594-.46875.367188-.414062.425781-.359375.464844-.300782.519531-.234374.542969-.167969.574219-.089844.585937-.027344.601563.058594.589843.125.578125.203125.558594.265625.535156.324219.492188.394531.449218.441406.402344.484375.34375.523438.273438.5625.207031.574218.144531.59375.066406h.601563l.582031-.082031.578125-.152343.558594-.226563.515625-.28125.484375-.351563.4375-.410156.375-.457031.316406-.503906.257813-.539063.183594-.570312.117187-.574219.042969-.59375-.027344-.59375-.105469-.582031-.175781-.570313-.25-.539062-.308594-.511719-.371094-.464844-.433593-.417968-.464844-.359376-.519531-.300781-.273438-.125.382813-1.226562 5.667969 6.292969.035156.03125.074218.070312.082032.066406.082031.050782.09375.03125.101563.035156.097656.023437.101562.007813h2.0625l.066406.285156.191407.558594.257812.535156.328125.5.375.457031.433594.402344.484375.351563.515625.285156.550781.214844.578125.152343.59375.082031h.589844l.585938-.066406.574218-.144531.558594-.207031.527344-.273438.484375-.34375.441406-.402344.386719-.441406.332031-.5.265625-.527344.203125-.558593.125-.574219.058594-.585938-.019531-.601562-.089844-.582031-.167969-.570313-.234375-.550781-.289062-.507813-.359376-.476562-.417968-.425781-.460938-.367188-.507812-.316406-.542969-.242187-.558594-.175782-.585937-.109375-.601563-.03125-.582031.039063-.585938.109375-.28125.082031-1.394531-3.113281.359375-.957031h1.074219v-.960938h-4.121094l-.027343.007812-.023438.007813-.035156.015625-.015625.019531-.023438.015625-.019531.023438-.015625.027344-.015625.023437-.007812.027344-.011719.023437v.09375l.011719.023438.007812.023437.03125.050781.019531.027344.046875.03125.027344.015625.023438.011719h.015624l2.03125.492188-.359374.957031h-8.574219l.382812-1.242188.027344-.058593.042969-.101563.058594-.089844.066406-.09375.074218-.074219.082032-.074218.09375-.058594.097656-.050781.109375-.042969.109375-.023438.109375-.007812h1.625zm-3.171875 3.839844 6.003906 6.671875 2.503906-6.671875zm-1.917969 2.9375-.234375-.03125-.46875-.023437-.472656.03125-.460938.09375-.449218.148437-.425782.199219-.402343.25-.367188.300781-.324219.34375-.285156.375-.234375.417969-.175781.433594-.125.460937-.066406.464844-.015625.46875.050781.476562.109375.449219.15625.441407.21875.417968.257813.394532.308593.355468.359375.320313.382813.265625.417969.226562.441406.167969.460937.105469.46875.058594.472657-.007813.46875-.058594.460937-.125.441406-.167969.40625-.222656.386719-.285156.351562-.316406.296876-.359375.261718-.402344.207032-.417969.160156-.441406.089844-.457031.042968-.476563-.015625-.46875-.078125-.464844-.132812-.460937-.183594-.433594-.242188-.402343-.28125-.375-.335937-.339844-.367187-.292969-.398438-.25-.21875-.101563-1.128906 3.640626-.007813.023437-.023437.058594-.035156.050781-.03125.050781-.050782.039063-.042968.035156-.058594.035156-.046875.015625-.058594.015625-.058594.007813h-.125l-.058593-.015625-.058594-.023438-.050782-.027344-.050781-.03125-.042969-.042968-.039062-.050782-.035156-.050781-.023438-.050781-.035156-.113281v-.117188l.007812-.070312.007813-.023438zm8.929688 3.78125h.960937l.007813-.28125.058593-.558594.136719-.542968.191407-.527344.257812-.507812.308594-.46875.367187-.425782.410157-.382812.449218-.335938.242188-.140625-.992188-2.230469zm1.921875 0h3.339844l-1.480469-3.296875-.179688.117188-.351562.269531-.308594.308594-.285156.339844-.242188.367187-.191406.394531-.152344.417969-.097656.425781-.050781.441406zm.117187.960938.066407.21875.175781.433594.214843.410156.277344.382812.308594.34375.359375.308594.382813.257812.425781.207032.433593.160156.460938.097656.464844.050782.46875-.007813.460937-.066406.449219-.125.433594-.175781.410156-.222657.375-.277343.34375-.324219.300781-.351563.25-.394531.207031-.425781.152344-.433594.097656-.449219.042969-.46875-.015625-.464843-.078125-.46875-.125-.441407-.183593-.4375-.230469-.40625-.277344-.367187-.324219-.34375-.359375-.292969-.394531-.25-.425781-.199219-.441407-.148437-.457031-.09375-.46875-.03125-.46875.015625-.457031.082031-.226562.058594 1.769531 3.964843.007812.023438.015625.058594.019532.050781v.117187l-.007813.050782-.019531.058594-.023438.050781-.027344.050781-.03125.039062-.082031.085938-.050781.023438-.101562.050781-.050782.007812-.058594.007813zm0 0" fill="#fff" fill-rule="evenodd"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_250.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_250.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_250.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m440.2325 240.395992c0-110.358625-89.473875-199.8325-199.8325-199.8325s-199.8325 89.473875-199.8325 199.8325 89.473875 199.8325 199.8325 199.8325 199.8325-89.473875 199.8325-199.8325zm0 0" fill="none" stroke="#c1121c" stroke-width="64.316834" transform="matrix(.103993 0 0 -.103993 0 49.999583)"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_251.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_251.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_251.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m17.558594 15.476562c-.589844 0-1.125.351563-1.363282.894532l-2.355468 5.410156c-.164063.382812-.375.742188-.628906 1.074219l-.355469.476562c-.230469.308594-.355469.6875-.355469 1.070313v3.871094c0 .820312.664062 1.488281 1.488281 1.488281h22.023438c.820312 0 1.488281-.667969 1.488281-1.488281v-3.871094c0-.382813-.125-.761719-.355469-1.070313l-.359375-.476562c-.25-.332031-.457031-.691407-.625-1.074219l-2.355468-5.410156c-.234376-.542969-.773438-.894532-1.363282-.894532zm.359375 1.488282h14.164062c.234375 0 .449219.136718.546875.355468l2.042969 4.703126h-19.34375l2.042969-4.703126c.097656-.21875.3125-.355468.546875-.355468zm-2.144531 6.546875c.988281 0 1.785156.800781 1.785156 1.785156 0 .988281-.796875 1.785156-1.785156 1.785156-.984376 0-1.785157-.796875-1.785157-1.785156 0-.984375.800781-1.785156 1.785157-1.785156zm18.453124 0c.988282 0 1.785157.800781 1.785157 1.785156 0 .988281-.796875 1.785156-1.785157 1.785156-.984374 0-1.785156-.796875-1.785156-1.785156 0-.984375.800782-1.785156 1.785156-1.785156zm-20.238281 6.84375v3.273437c0 .496094.398438.894532.890625.894532h1.785156c.496094 0 .894532-.398438.894532-.894532v-3.273437zm18.453125 0v3.273437c0 .496094.398438.894532.894532.894532h1.785156c.492187 0 .890625-.398438.890625-.894532v-3.273437zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_253.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_253.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_253.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m19.847656 18.417969v9.226562h19.109375v-9.226562zm-1.316406 2.308593-5.710938.355469c-.257812.015625-.484374.183594-.574218.425781l-1.453125 3.875c-.113281.296876-.167969.613282-.167969.925782v3.640625c0 .363281.292969.660156.660156.660156h.328125c0-1.636719 1.328125-2.964844 2.964844-2.964844 1.640625 0 2.964844 1.328125 2.964844 2.964844h11.863281c0-.894531.402344-1.742187 1.097656-2.308594h-11.972656zm-2.304688 1.152344v3.296875l-4.375.511719c-.011718 0-.027343.003906-.039062.003906-.183594 0-.328125-.148437-.328125-.332031 0-.039063.007813-.078125.019531-.113281l1.105469-2.945313c.042969-.121093.15625-.203125.285156-.214843zm-1.648437 6.421875c-1.273437 0-2.304687 1.035157-2.304687 2.308594s1.03125 2.304687 2.304687 2.304687 2.304687-1.03125 2.304687-2.304687-1.03125-2.308594-2.304687-2.308594zm17.789063 0c-1.273438 0-2.304688 1.035157-2.304688 2.308594s1.03125 2.304687 2.304688 2.304687c1.273437 0 2.308593-1.03125 2.308593-2.304687s-1.035156-2.308594-2.308593-2.308594zm1.867187 0c.695313.566407 1.101563 1.414063 1.101563 2.308594h1.644531l1.976562-.660156v-1.648438zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_254.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_254.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_254.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m201.710625 272.891561c0 27.19525-22.011625 49.206875-49.206875 49.206875s-49.244437-22.011625-49.244437-49.206875 22.049187-49.244438 49.244437-49.244438 49.206875 22.049188 49.206875 49.244438zm0 0" fill="none" stroke="#000" stroke-width="12.229226" transform="scale(.103993)"/><path d="m377.503125 271.952498c0 27.19525-22.011625 49.244438-49.206875 49.244438s-49.206875-22.049188-49.206875-49.244438c0-27.157687 22.011625-49.206875 49.206875-49.206875s49.206875 22.049188 49.206875 49.206875zm0 0" fill="none" stroke="#000" stroke-width="12.229226" transform="scale(.103993)"/><path d="m22.679688 15.867188c-4.214844.039062-3.5-.4375-5.769532 6.851562-1.847656 5.824219-1.644531 5.1875-1.65625 5.597656-.007812.316406.25.566406.570313.589844.671875-.070312.390625.070312 2.710937-7.136719 8.480469 8.945313 5.296875 7.496094 9.863282 7.679688 5.996093-.058594 6.484374.3125 6.554687-.570313-.007813-.296875-.148437-.476562-4.265625-9.636718l.394531-1.082032 1.355469-.027344-.046875-1.132812h-5.054687c-.445313.609375.179687.609375 2.441406 1.109375l-.394532 1.109375-10.082031.023438c.679688-2.371094.296875-2.222657 3.351563-2.21875zm-3.667969 4.59375 9.863281-.019532-2.851562 7.660156zm11.050781.453124-2.796875 7.34375 6.121094.019532zm0 0" fill-rule="evenodd"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_255.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_255.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_255.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m27.382812 26.554688 1.089844-2.503907c.054688-.117187.167969-.191406.292969-.191406h7.550781c.128906 0 .242188.074219.292969.191406l1.089844 2.503907" fill="#fff"/><path d="m26.933594 16.152344c-.890625-.5625-2.03125-.515625-2.871094.117187l-.746094.5625-.945312.132813v-1.472656l1.722656-.246094v-1.230469l-1.738281.25c.269531-1.367187 1.597656-2.257813 2.964843-1.988281 1.367188.269531 2.257813 1.597656 1.988282 2.964844-.066406.324218-.191406.632812-.375.910156zm2.507812 14.941406c-5.363281-.160156-8.148437.261719-8.6875-2.371094l-.109375-.5c-.628906-2.296875-2.820312-3.808594-5.1875-3.578125-.84375-1.703125-1.683593-3.492187 3.996094-5.207031-.074219.296875-.109375.605469-.105469.910156l4.96875-3.742187c.925782-.699219 2.246094-.515625 2.941406.414062l2.628907 3.480469-2.792969 2.105469-2.882812-3.828125-4.402344 3.320312c.515625.925782 1.398437 1.585938 2.433594 1.8125.042968-.546875.5-.96875 1.046874-.96875h4.058594l2.789063-2.105468 1.027343 1.363281c.167969.222656.289063.472656.359376.742187h4.125c.292968 0 .527343.375.527343.839844s-.234375.84375-.527343.84375h-1.578126c-2.699218 0-4.890624 2.1875-4.890624 4.890625 0 .535156.089843 1.070313.261718 1.578125zm7.523438-1.578125c0-1.597656-1.296875-2.894531-2.894532-2.894531-1.597656 0-2.890624 1.296875-2.890624 2.894531s1.292968 2.890625 2.890624 2.890625c1.597657 0 2.894532-1.292969 2.894532-2.890625zm1.578125 0c0 2.46875-2.003907 4.46875-4.472657 4.46875s-4.46875-2-4.46875-4.46875 2-4.472656 4.46875-4.472656 4.472657 2.003906 4.472657 4.472656zm-19.722657 0c0-1.597656-1.292968-2.894531-2.894531-2.894531-1.59375 0-2.890625 1.296875-2.890625 2.894531s1.296875 2.890625 2.890625 2.890625c1.601563 0 2.894531-1.292969 2.894531-2.890625zm1.578126 0c0 2.46875-2 4.46875-4.472657 4.46875-2.464843 0-4.46875-2-4.46875-4.46875s2.003907-4.472656 4.46875-4.472656c2.472657 0 4.472657 2.003906 4.472657 4.472656"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_257-50.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_257-50.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_257-50.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m440.2325 240.399998c0 110.358625-89.473875 199.8325-199.8325 199.8325s-199.8325-89.473875-199.8325-199.8325 89.473875-199.8325 199.8325-199.8325 199.8325 89.473875 199.8325 199.8325zm0 0" fill="none" stroke="#c1121c" stroke-width="64.316834" transform="scale(.103993)"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m191.981938 267.895748c0 23.58925-19.119313 42.671-42.671 42.671-23.58925 0-42.708563-19.08175-42.708563-42.671s19.119313-42.671 42.708563-42.671c23.551687 0 42.671 19.08175 42.671 42.671zm0 0" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="12.375091" transform="scale(.103993)"/><g fill-rule="evenodd"><path d="m38.511719 20.738281h-9.320313c-.351562.136719-.601562.359375-.402344.976563l2.40625 1.554687c1.027344-.769531 2.09375-.898437 3.15625-1.054687l4.1875-.015625zm0 0"/><path d="m35.625 29.011719-9.699219-.011719c-2.027343-.0625-3.183593-1.742188-4.441406-3.558594-2.199219-3.179687-2.519531-3.210937-2.96875-4.6875l3.230469.003906c.214844.0625.429687.09375.644531.363282l1.945313 2.765625c.160156.6875.027343 1.242187-.144532 1.828125-.195312.679687.585938 1.886718 1.800782 1.835937l9.65625-.5625zm0 0"/><path d="m14.886719 27.519531c.078125-.238281 3.746093-9.179687 3.746093-9.179687.449219-.800782 1.074219-1.242188 1.890626-1.300782h2.515624l-.011718 1.480469h-2.429688c-.296875-.027343-.519531.160157-.703125.683594l-3.660156 8.933594c-.355469.828125-1.707031.535156-1.347656-.617188zm0 0"/></g><path d="m374.197625 268.045998c0 23.58925-19.119312 42.708563-42.708562 42.708563-23.551688 0-42.671-19.119313-42.671-42.708563 0-23.551687 19.119312-42.671 42.671-42.671 23.58925 0 42.708562 19.119313 42.708562 42.671zm0 0" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="12.375091" transform="scale(.103993)"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_257-51.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_257-51.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_257-51.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m440.2325 240.395992c0-110.358625-89.473875-199.8325-199.8325-199.8325s-199.8325 89.473875-199.8325 199.8325 89.473875 199.8325 199.8325 199.8325 199.8325-89.473875 199.8325-199.8325zm0 0" fill="none" stroke="#c1121c" stroke-width="64.316834" transform="matrix(.103993 0 0 -.103993 0 49.999583)"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m14.871094 14.105469.035156 1.648437-3.230469 3.648438.808594.84375 3.683594-.773438 1.613281 2.773438c-.707031 1.695312-.101562 2.46875.28125 3.613281l-4 2.527344v5.578125l1.4375-.773438-.035156-3.789062 3.335937-1.824219 3.121094 7.089844-.273437 1.414062 1.433593.023438.210938-1.402344-2.496094-7.230469c2.375.671875 4.769531.796875 7.195313 0l2.351562 4.175782-2.390625 4.425781 1.652344.039062 2.492187-4.601562-.527344-3.511719 3.652344 2.878906-.808594 4.875 1.613282-.421875.773437-4.980469-2.070312-3.542968c.292969-1.808594-.085938-3.179688-.855469-4.109375l.734375-.636719c1.238281-.429688 1.988281.019531 2.421875 1.050781l.417969 2.550781 2.101562-1.082031-.5625-2.03125c-.695312-1.820312-2.785156-3.058593-5.125-1.398437 0 0-.746093.757812-.832031.792968-1.242188-.816406-2.949219-.933593-4.558594-.335937h-.28125c.507813-.257813.535156-.914063.363282-1.398437l-2.492188-4.316407c-.953125-1.117187-3.242188-.09375-2.804688 1.546875l.324219.601563-2.195312 1.035156c-1.113281-1.960937-2.277344-3.890625-5.394531-3.886719zm9.363281 5.191406.816406 1.367187-1.941406.96875h-.027344c-.347656-.375-.648437-.796874-.925781-1.238281zm0 0" fill-rule="evenodd"/><path d="m25.191406 13.644531c0 .898438-.726562 1.625-1.625 1.625-.898437 0-1.625-.726562-1.625-1.625 0-.898437.726563-1.625 1.625-1.625.898438 0 1.625.726563 1.625 1.625zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_259.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_259.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_259.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m26.898438 11.847656c0 1.308594-1.0625 2.371094-2.371094 2.371094s-2.367188-1.0625-2.367188-2.371094 1.058594-2.371094 2.367188-2.371094 2.371094 1.0625 2.371094 2.371094zm0 0"/><path d="m17.503906 25.476562c6.417969-10.015624 5.8125-10.296874 8.210938-10.367187 1.394531.039063 1.4375.421875 3.808594 2.285156 2.917968 2.144531 2.707031 2.171875 2.664062 4.527344-.011719 2.835937.183594 2.625-2.074219 3.683594v-4.785157l-1.988281-1.777343v6.730469l-4.738281-.042969-.042969-5.332031c-3.894531 6.007812-3.640625 5.671874-5.839844 5.078124zm5.964844.972657h4.613281c0 1.058593.339844.972656 2.796875 5.589843 2.578125 4.753907 2.621094 4.429688 1.140625 7.152344l-6.390625-11.472656c-6.050781 11.710938-5.289062 11.359375-8.632812 11.132812l3.34375-6.265624c2.863281-5.175782 3.019531-5.191407 3.128906-6.136719zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_260.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_260.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_260.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m8.539062 24.582031v-.832031h32.917969v.832031zm0 0"/><path d="m26.25 11.394531c-.574219-.363281-1.3125-.332031-1.855469.074219l-.484375.363281-.609375.089844v-.953125l1.113281-.160156v-.792969l-1.125.160156c.175782-.886719 1.035157-1.460937 1.917969-1.285156.882813.175781 1.460938 1.03125 1.285157 1.917969-.042969.207031-.125.410156-.242188.585937zm1.621094 9.652344c-3.464844-.101563-5.265625.171875-5.613282-1.53125l-.070312-.324219c-.410156-1.480468-1.824219-2.457031-3.355469-2.308594-.542969-1.101562-1.085937-2.257812 2.582031-3.367187-.046874.195313-.070312.390625-.066406.589844l3.210938-2.417969c.597656-.453125 1.449218-.332031 1.902344.265625l1.695312 2.253906-1.800781 1.355469-1.867188-2.46875-2.84375 2.140625c.332031.597656.90625 1.027344 1.574219 1.171875.027344-.355469.324219-.625.675781-.625h2.621094l1.804687-1.359375.664063.882813c.105469.140624.1875.304687.230469.476562h2.667968c.1875 0 .339844.242188.339844.542969s-.152344.542969-.339844.542969h-1.019531c-1.746093 0-3.164062 1.414062-3.164062 3.160156 0 .347656.058593.691406.171875 1.019531zm4.859375-1.019531c0-1.03125-.835938-1.867188-1.867188-1.867188-1.035156 0-1.871093.835938-1.871093 1.867188 0 1.035156.835937 1.871094 1.871093 1.871094 1.03125 0 1.867188-.835938 1.867188-1.871094zm1.019531 0c0 1.597656-1.292969 2.890625-2.886719 2.890625-1.597656 0-2.890625-1.292969-2.890625-2.890625 0-1.59375 1.292969-2.886719 2.890625-2.886719 1.59375 0 2.886719 1.292969 2.886719 2.886719zm-12.742188 0c0-1.03125-.839843-1.867188-1.871093-1.867188s-1.867188.835938-1.867188 1.867188c0 1.035156.835938 1.871094 1.867188 1.871094s1.871093-.835938 1.871093-1.871094zm1.019532 0c0 1.597656-1.292969 2.890625-2.890625 2.890625-1.59375 0-2.886719-1.292969-2.886719-2.890625 0-1.59375 1.292969-2.886719 2.886719-2.886719 1.597656 0 2.890625 1.292969 2.890625 2.886719"/><path d="m20.039062 26.667969c-.394531 0-.75.230469-.910156.59375l-1.570312 3.609375c-.109375.253906-.246094.496094-.414063.714844l-.238281.320312c-.15625.203125-.238281.453125-.238281.710938v2.582031c0 .546875.441406.992187.988281.992187h14.6875c.546875 0 .992188-.445312.992188-.992187v-2.582031c0-.257813-.085938-.507813-.238282-.710938l-.242187-.320312c-.164063-.21875-.304688-.460938-.417969-.714844l-1.566406-3.609375c-.160156-.363281-.515625-.59375-.910156-.59375zm.242188.988281h9.4375c.160156 0 .304688.097656.367188.242188l1.363281 3.132812h-12.898438l1.367188-3.132812c.0625-.144532.203125-.242188.363281-.242188zm-1.433594 4.367188c.660156 0 1.191406.535156 1.191406 1.191406s-.53125 1.191406-1.191406 1.191406c-.65625 0-1.191406-.535156-1.191406-1.191406s.535156-1.191406 1.191406-1.191406zm12.304688 0c.65625 0 1.191406.535156 1.191406 1.191406s-.535156 1.191406-1.191406 1.191406c-.660156 0-1.191406-.535156-1.191406-1.191406s.53125-1.191406 1.191406-1.191406zm-13.496094 4.5625v2.183593c0 .328125.265625.597657.597656.597657h1.191406c.328126 0 .59375-.269532.59375-.597657v-2.183593zm12.304688 0v2.183593c0 .328125.265624.597657.59375.597657h1.191406c.328125 0 .597656-.269532.597656-.597657v-2.183593zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_261.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_261.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_261.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><g fill-rule="evenodd"><path d="m32.359375 12.980469-14.707031.015625c-.675782 0-1.4375.769531-1.4375 1.300781l-.011719 14.835937h17.597656l.003907-14.785156c0-.515625-.796876-1.367187-1.445313-1.367187zm-13.707031 1.957031 12.75.023438v12.28125h-12.75zm0 0"/><path d="m18.652344 14.9375v12.304688h12.75v-12.28125zm0 0" fill="#ec7c25"/><path d="m15.199219 29.5625.007812 1.070312 19.585938-.007812.007812-1.058594zm0 0"/><path d="m16.449219 31.058594h2.011719l.246093.367187.007813 5.167969-.378906.367188-1.816407.019531-.3125-.3125.015625-5.355469zm0 0"/><path d="m19.386719 31.09375-.230469.253906-.015625 5.355469.3125.316406 1.816406-.023437.378907-.367188-.003907-1.691406.210938-.21875 1.429687-.007812.003906.066406.199219-.003906c.007813.144531.800781.875 1.535157.875v-.007813c.730468 0 1.523437-.726563 1.527343-.867187l.203125.003906.003906-.070313 1.433594.007813.195313.207031-.003907 1.78125.3125.316406 1.816407-.023437.378906-.367188-.007813-5.167968-.246093-.367188h-2.011719l-.226562.253906-.003907 1.691406-.289062.296876-1.351563-.003907.003906-.070312h-.21875c0-.207031-.785156-.859375-1.519531-.859375-.730469.003906-1.515625.65625-1.515625.863281h-.21875v.070313l-1.347656.003906-.296875-.304688v-1.574218l-.242187-.367188zm0 0"/><path d="m31.539062 31.050781h2.011719l.242188.371094.007812 5.164063-.378906.367187-1.816406.023437-.308594-.3125.011719-5.355468zm0 0"/></g></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_262.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_262.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_262.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m21.402344 31.546875 2.222656-.011719v2.277344l-2.21875 1.636719zm0 0" fill-rule="evenodd"/><path d="m20.027344 14.734375h-7.785156v10.234375h2.398437c.160156-.320312.453125-1.039062 1.386719-1.039062.746094 0 1.28125.613281 1.28125 1.359374v4.449219c0 .878907-.480469 1.414063-1.28125 1.414063-.800782 0-1.386719-.535156-1.386719-1.464844v-.695312h-2.714844v.800781c0 2.53125 1.890625 4.078125 4.050781 4.078125 2.15625 0 4.050782-1.546875 4.050782-4.078125v-4.902344c0-2.1875-1.28125-3.359375-3.121094-3.359375-.957031 0-1.757812.398438-2.265625.878906v-5.117187h5.386719zm0 0"/><path d="m31.65625 18.894531h-6.089844v8.007813h1.878906c.125-.25.351563-.8125 1.082032-.8125.585937 0 1 .480468 1 1.0625v3.484375c0 .6875-.375 1.105469-1 1.105469s-1.082032-.417969-1.082032-1.148438v-.539062h-2.128906v.625c0 1.980468 1.480469 3.191406 3.171875 3.191406 1.6875 0 3.167969-1.210938 3.167969-3.191406v-3.839844c0-1.707032-1-2.625-2.441406-2.625-.75 0-1.375.3125-1.769532.6875v-4.003906h4.210938zm0 0"/><path d="m34.632812 23.171875h-1.0625v1.667969h1.0625v6.421875c0 1.128906.648438 2.484375 2.566407 2.484375h.875v-2.003906c-.9375 0-1.3125-.0625-1.3125-1.042969v-5.859375h1.3125v-1.667969h-1.3125v-3.214844h-2.128907zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_263.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_263.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_263.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m34.894531 35.601562c-.386719 0-.703125-.316406-.703125-.707031v-7.066406c0-.390625.316406-.707031.703125-.707031h2.121094c.390625 0 .707031.316406.707031.707031v7.066406c0 .390625-.316406.707031-.707031.707031zm-17.667969 0c-.394531 0-.710937-.316406-.710937-.707031v-7.066406c0-.390625.316406-.707031.710937-.707031h2.117188c.390625 0 .707031.316406.707031.707031v1.941406c0 .394531.316407.710938.707031.710938h1.34375c.363282 0 .710938-.140625.976563-.394531l.457031-.433594c.820313-.78125 2.109375-.78125 2.925782 0l.460937.433594c.265625.253906.613281.394531.976563.394531h1.34375c.390624 0 .707031-.316407.707031-.710938v-1.941406c0-.390625.316406-.707031.707031-.707031h2.121094c.386718 0 .707031.316406.707031.707031v7.066406c0 .390625-.320313.707031-.707031.707031h-2.121094c-.390625 0-.707031-.316406-.707031-.707031v-1.941406c0-.390625-.316407-.707031-.707031-.707031h-1.34375c-.363282 0-.710938.140625-.976563.390625l-.460937.4375c-.816407.78125-2.105469.78125-2.925782 0l-.457031-.4375c-.265625-.25-.613281-.390625-.976563-.390625h-1.34375c-.390624 0-.707031.316406-.707031.707031v1.941406c0 .390625-.316406.707031-.707031.707031zm-4.242187 0c-.390625 0-.707031-.316406-.707031-.707031v-7.066406c0-.390625.316406-.707031.707031-.707031h2.121094c.386719 0 .703125.316406.703125.707031v7.066406c0 .390625-.316406.707031-.703125.707031"/><path d="m25 27.757812-2.785156-2.785156v-1.546875l2.167968 2.164063v-3.398438h1.234376v3.398438l2.167968-2.164063v1.546875"/><path d="m30.378906 20.757812h-.949218c-.941407 0-1.703126-.761718-1.703126-1.703124v-4.636719h-.757812v-1.234375h.757812v-2.269532h1.515626v2.269532h1.136718v1.234375h-1.136718v4.445312c0 .261719.210937.476563.472656.476563h.664062zm-10.035156-7.667968c0 .835937.675781 1.515625 1.511719 1.515625.835937 0 1.515625-.679688 1.515625-1.515625 0-.835938-.679688-1.515625-1.515625-1.515625-.835938 0-1.511719.679687-1.511719 1.515625zm-.191406 4.546875c0 .9375.761718 1.703125 1.703125 1.703125.941406 0 1.707031-.765625 1.707031-1.703125 0-.941407-.765625-1.707031-1.707031-1.707031-.941407 0-1.703125.765624-1.703125 1.707031zm-.28125-2.390625c-.660156-.523438-1.042969-1.316406-1.042969-2.15625 0-1.671875 1.355469-3.027344 3.027344-3.027344 1.675781 0 3.03125 1.355469 3.03125 3.027344 0 .839844-.386719 1.632812-1.042969 2.15625.773438.546875 1.234375 1.441406 1.234375 2.390625 0 1.777343-1.445313 3.214843-3.222656 3.214843-1.777344 0-3.21875-1.4375-3.21875-3.214843 0-.949219.460937-1.84375 1.234375-2.390625"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_264.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_264.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_264.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m12.429688 25-3.503907 6.167969c-1.523437-3.96875-1.523437-8.367188 0-12.339844"/><path d="m37.570312 25 3.5-6.171875c1.527344 3.972656 1.527344 8.371094 0 12.339844"/><path d="m28.113281 36.941406v-7.269531h1.457031v.726563c.398438-.75 1.335938-1.035157 2.089844-.636719.238282.128906.441406.320312.585938.554687.550781-.78125 1.625-.96875 2.402344-.421875.460937.324219.734374.851563.734374 1.414063v5.632812h-1.453124v-5.179687c0-.402344-.324219-.726563-.726563-.726563s-.726563.324219-.726563.726563v5.179687h-1.453124v-5.179687c0-.402344-.324219-.726563-.726563-.726563s-.726563.324219-.726563.726563v5.179687zm-12.539062 0v-3.199218l6.433593-12.277344c.253907-.488282.386719-1.03125.386719-1.582032v-1.917968c0-.941406-.761719-1.707032-1.703125-1.707032-.945312 0-1.707031.765626-1.707031 1.707032v1.917968h-3.410156v-1.917968c0-2.828125 2.289062-5.121094 5.117187-5.121094 2.824219 0 5.117188 2.292969 5.117188 5.121094v1.917968c0 1.085938-.261719 2.160157-.757813 3.128907l-5.425781 10.515625h6.183594v3.414062"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_265.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_265.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_265.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m25 37.59375 6.183594 3.511719c-3.980469 1.527343-8.386719 1.527343-12.367188 0"/><path d="m25 12.40625-6.183594-3.511719c3.980469-1.527343 8.386719-1.527343 12.367188 0"/><path d="m30 32.917969v-8.484375h1.695312v.847656c.46875-.875 1.5625-1.207031 2.441407-.742188.277343.152344.515625.375.683593.644532.640626-.910156 1.894532-1.128906 2.808594-.488282.535156.378907.855469.992188.855469 1.648438v6.574219h-1.699219v-6.042969c0-.46875-.378906-.851562-.847656-.851562s-.847656.382812-.847656.851562v6.042969h-1.695313v-6.042969c0-.46875-.382812-.851562-.847656-.851562-.46875 0-.851563.382812-.851563.851562v6.042969zm-5.554688-7.742188c0 .46875.382813.847657.851563.847657.464844 0 .847656-.378907.847656-.847657v-1.695312c0-.46875-.382812-.847657-.847656-.847657-.46875 0-.851563.378907-.851563.847657zm0 5.300781c0 .46875.382813.851563.851563.851563.464844 0 .847656-.382813.847656-.851563v-2.332031c0-.46875-.382812-.847656-.847656-.847656-.46875 0-.851563.378906-.851563.847656zm-.84375-3.816406c-.53125-.351562-.851562-.949218-.851562-1.589844v-1.589843c0-1.40625 1.140625-2.542969 2.546875-2.542969 1.402344 0 2.542969 1.136719 2.542969 2.542969v1.589843c0 .640626-.320313 1.238282-.855469 1.589844.535156.355469.855469.949219.855469 1.589844v2.226562c0 1.40625-1.140625 2.546876-2.542969 2.546876-1.40625 0-2.546875-1.140626-2.546875-2.546876v-2.226562c0-.640625.320312-1.234375.851562-1.589844zm-4.101562 7.527344v-2.964844h1.695312v1.695313zm-8.25-6.089844h2.410156v1.355469c0 .664063.539063 1.203125 1.207032 1.203125.664062 0 1.203124-.539062 1.203124-1.203125v-3.015625c0-.664062-.539062-1.207031-1.203124-1.207031h-.753907v-2.105469h.753907c.664062 0 1.203124-.539062 1.203124-1.207031v-2.410157c0-.664062-.539062-1.207031-1.203124-1.207031-.667969 0-1.207032.542969-1.207032 1.207031v1.355469h-2.410156v-1.355469c0-1.996093 1.617188-3.617187 3.617188-3.617187 1.996093 0 3.617187 1.621094 3.617187 3.617187v2.257813c0 1.015625-.570313 1.945313-1.472656 2.410156.902343.46875 1.472656 1.398438 1.472656 2.414063v2.863281c0 1.996094-1.621094 3.613281-3.617187 3.613281-2 0-3.617188-1.617187-3.617188-3.613281"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_266.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_266.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_266.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m33.675781 26.503906c0 1.199219-.972656 2.171875-2.167969 2.171875-1.199218 0-2.171874-.972656-2.171874-2.171875 0-1.199218.972656-2.171875 2.171874-2.171875 1.195313 0 2.167969.972657 2.167969 2.171875zm-16.742187 0c0 1.199219-.972656 2.171875-2.171875 2.171875s-2.167969-.972656-2.167969-2.171875c0-1.199218.96875-2.171875 2.167969-2.171875s2.171875.972657 2.171875 2.171875zm20.777344-2.789062h-17.988282v-8.683594h17.988282zm-1.863282 2.789062h-1.550781c0-.84375-.378906-1.640625-1.035156-2.171875h4.449219v1.550781zm-17.363281-9.300781v7.128906h11.265625c-.652344.53125-1.035156 1.328125-1.035156 2.171875h-11.160156c0-1.539062-1.25-2.789062-2.792969-2.789062-1.539063 0-2.789063 1.25-2.789063 2.789062h-.3125c-.339844 0-.617187-.277344-.617187-.621094v-3.425781c0-.296875.050781-.589843.15625-.871093l1.367187-3.644532c.085938-.230468.300782-.386718.542969-.402344"/><path d="m16.3125 21.390625-4.117188.484375c-.167968.019531-.324218-.105469-.34375-.273438-.003906-.050781 0-.097656.019532-.144531l1.035156-2.773437c.046875-.113282.152344-.191406.273438-.199219l3.132812-.195313" fill="#fff"/><path d="m12.292969 33.050781 2.914062-2.917969h1.621094l-2.265625 2.269532h4.394531v1.292968h-4.394531l2.265625 2.269532h-1.621094"/><path d="m38.957031 33.050781-2.917969 2.914063h-1.617187l2.269531-2.269532h-4.398437v-1.292968h4.398437l-2.269531-2.269532h1.617187"/><path d="m26.328125 35.550781v-3.570312h.714844v.402343c.417969-.519531 1.179687-.597656 1.695312-.179687.082031.0625.152344.136719.214844.222656.46875-.574219 1.3125-.65625 1.882813-.191406.3125.253906.492187.636719.492187 1.039063v2.277343h-.714844v-2.1875c0-.394531-.320312-.714843-.714843-.714843-.390626 0-.710938.320312-.710938.714843v2.1875h-.714844v-2.1875c0-.394531-.320312-.714843-.714844-.714843-.394531 0-.714843.320312-.714843.714843v2.1875zm-3.105469-1.386719c0 .394532.320313.714844.714844.714844s.714844-.320312.714844-.714844v-2.230468c0-.394532-.320313-.714844-.714844-.714844s-.714844.320312-.714844.714844zm-.714844 0v-2.230468c0-.789063.640626-1.429688 1.429688-1.429688s1.429688.640625 1.429688 1.429688v2.230468c0 .789063-.640626 1.429688-1.429688 1.429688s-1.429688-.640625-1.429688-1.429688zm-2.585937-2.320312v-.757812l.714844-.535157h.710937v5h-.710937v-4.242187"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_269.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_269.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_269.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m15.308594 36.179688c.992187-.375 2.011718-.65625 4.144531 0 1.140625.347656 2.335937.375 3.59375 0 1.253906-.441407 2.566406-.535157 3.976563 0 1.214843.433593 2.648437.261718 4.019531-.09375 1.359375-.472657 2.460937-.234376 3.71875.09375v1.089843c-1.375-.554687-2.75-.433593-4.121094 0-1.429687.558594-2.492187.316407-3.523437 0-1.535157-.6875-2.882813-.445312-4.191407 0-1.496093.558594-2.5625.269531-3.640625 0-1.800781-.636719-2.902344-.320312-4 0zm0-2.007813c.992187-.378906 2.011718-.660156 4.144531 0 1.140625.34375 2.335937.371094 3.59375 0 1.253906-.445313 2.566406-.539063 3.976563 0 1.214843.429687 2.648437.257813 4.019531-.097656 1.359375-.472657 2.460937-.234375 3.71875.097656v1.089844c-1.375-.558594-2.75-.4375-4.121094 0-1.429687.554687-2.492187.3125-3.523437 0-1.535157-.691407-2.882813-.449219-4.191407 0-1.496093.554687-2.5625.265625-3.640625 0-1.800781-.640625-2.902344-.324219-4 0zm0 0" fill="#154889" fill-rule="evenodd"/><path d="m15.238281 23.609375v2.980469h19.503907l.011718-2.980469h-2.6875c-3.984375 2.414063-10.097656 2.359375-14.125 0zm16.304688 3.347656h2.007812l.242188.367188.007812 5.160156-.378906.367187-1.8125.023438-.3125-.3125.015625-5.351562zm-12.128907.042969-.226562.253906-.015625 5.351563.3125.3125 1.8125-.023438.375-.367187v-1.6875l.207031-.21875 1.429688-.007813.003906.066407.199219-.003907c.003906.144531.796875.871094 1.527343.871094v-.003906c.730469 0 1.519532-.726563 1.527344-.867188l.199219.003907.003906-.070313 1.433594.007813.195313.207031-.003907 1.78125.3125.3125 1.808594-.023438.378906-.367187-.007812-5.160156-.242188-.367188h-2.007812l-.230469.253906-.003906 1.691406-.285156.292969-1.347657-.003906v-.066406l-.214843-.003907c0-.207031-.785157-.859374-1.515626-.859374v.003906c-.730468 0-1.511718.65625-1.511718.859375h-.21875v.070312l-1.347656.003907-.292969-.304688-.003907-1.570312-.242187-.367188zm-2.929687-.035156h2.007813l.242187.367187.007813 5.160157-.375.367187-1.8125.023437-.3125-.3125.015624-5.351562zm0 0"/><path d="m327.807938 180.562936c.45075 30.80125-38.726938 55.893-87.182563 55.893-48.493187 0-87.633312-25.09175-87.220125-55.893-.413187-30.80125 38.726938-55.893 87.220125-55.893 48.455625 0 87.633313 25.09175 87.182563 55.893zm0 0" fill="#ec7c25" stroke="#000" stroke-width="10.950249" transform="scale(.103993)"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_274.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_274.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_274.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m49.957031 25c0 13.785156-11.171875 24.957031-24.957031 24.957031s-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312 24.957031 11.1718752 24.957031 24.9570312zm0 0" fill="#fff"/><path d="m25 0c-13.808594 0-25 11.191406-25 25 0 13.804688 11.191406 25 25 25 13.804688 0 25-11.195312 25-25 0-13.808594-11.195312-25-25-25zm0 .0429688c13.785156 0 24.957031 11.1718752 24.957031 24.9570312s-11.171875 24.957031-24.957031 24.957031-24.9570312-11.171875-24.9570312-24.957031 11.1718752-24.9570312 24.9570312-24.9570312zm0 0"/><path d="m25 .875c-13.285156 0-24.125 10.839844-24.125 24.125s10.839844 24.125 24.125 24.125 24.125-10.839844 24.125-24.125-10.839844-24.125-24.125-24.125zm0 6.6875c9.671875 0 17.4375 7.765625 17.4375 17.4375s-7.765625 17.4375-17.4375 17.4375-17.4375-7.765625-17.4375-17.4375 7.765625-17.4375 17.4375-17.4375zm0 0" fill="#c1121c"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.480469 2.527344v.003906h-.003907zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m2.476562 2.53125v-.003906l.003907.003906zm.003907 0-.003907-.003906v.003906zm0 0"/><path d="m2.480469 2.53125h-.003907v-.003906zm0 0"/><path d="m2.476562 2.53125v-.003906.003906l.003907-.003906zm0 0"/><path d="m2.476562 2.527344h.003907v.003906h-.003907zm0 0"/><path d="m12.839844 25.757812c-.523438 1.054688-.789063 2.210938-.789063 3.476563 0 .957031.15625 1.820313.46875 2.601563.332031.777343.769531 1.449218 1.3125 2.015624.566407.5625 1.191407.992188 1.871094 1.285157.703125.292969 1.414063.4375 2.132813.4375.816406 0 1.585937-.125 2.308593-.378907.71875-.253906 1.371094-.652343 1.957031-1.199218.582032-.542969 1.042969-1.234375 1.371094-2.074219.332032-.855469.496094-1.859375.496094-3.007813 0-1.910156-.476562-3.347656-1.429688-4.324218-.933593-.972656-2.113281-1.460938-3.535156-1.460938-.601562 0-1.128906.089844-1.578125.265625h-.058593l4.382812-8.792969h-3.328125zm5.171875 0c.875 0 1.585937.292969 2.132812.878907.5625.582031.847657 1.429687.847657 2.539062 0 1.148438-.304688 2.007813-.90625 2.570313-.585938.566406-1.277344.847656-2.074219.847656-.933594 0-1.664063-.28125-2.191407-.847656-.527343-.582032-.789062-1.4375-.789062-2.570313 0-1.109375.273438-1.957031.820312-2.539062.5625-.585938 1.285157-.878907 2.160157-.878907zm0 0"/><path d="m34.96875 29.410156c0 .992188-.265625 1.773438-.789062 2.335938-.527344.566406-1.238282.847656-2.132813.847656s-1.605469-.28125-2.132813-.847656c-.527343-.5625-.789062-1.34375-.789062-2.335938v-8.820312c0-.992188.261719-1.773438.789062-2.335938.527344-.566406 1.238282-.847656 2.132813-.847656s1.605469.28125 2.132813.847656c.523437.5625.789062 1.34375.789062 2.335938zm-8.824219.175782c0 .933593.15625 1.773437.46875 2.511718.332031.742188.769531 1.375 1.316407 1.898438.5625.527344 1.195312.925781 1.898437 1.199218.699219.253907 1.4375.378907 2.21875.378907.777344 0 1.519531-.125 2.21875-.378907.722656-.273437 1.355469-.664062 1.898437-1.167968.546876-.527344.976563-1.160156 1.285157-1.898438.332031-.761718.5-1.609375.5-2.542968v-9.171876c0-.933593-.15625-1.773437-.46875-2.511718-.3125-.742188-.75-1.375-1.316407-1.898438-.5625-.527344-1.195312-.917968-1.898437-1.167968-.699219-.273438-1.441406-.410157-2.21875-.410157-.78125 0-1.527344.136719-2.25.410157-.699219.25-1.324219.640624-1.867187 1.167968-.546876.503906-.984376 1.136719-1.316407 1.898438-.3125.738281-.46875 1.578125-.46875 2.511718zm0 0"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_274_1.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_274_1.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_274_1.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m3.375 49.949219c-1.835938 0-3.3242188-1.488281-3.3242188-3.328125v-43.246094c0-1.835938 1.4882808-3.3242188 3.3242188-3.3242188h43.25c1.835938 0 3.324219 1.4882808 3.324219 3.3242188v43.246094c0 1.839844-1.488281 3.328125-3.324219 3.328125" fill="#fff"/><path d="m3.375 0c-1.859375 0-3.375 1.515625-3.375 3.375v43.246094c0 1.863281 1.515625 3.378906 3.375 3.378906h43.25c1.859375 0 3.375-1.515625 3.375-3.378906v-43.246094c0-1.859375-1.515625-3.375-3.375-3.375zm0 .0507812h43.25c1.835938 0 3.324219 1.4882808 3.324219 3.3242188v43.246094c0 1.839844-1.488281 3.328125-3.324219 3.328125h-43.25c-1.835938 0-3.3242188-1.488281-3.3242188-3.328125v-43.246094c0-1.835938 1.4882808-3.3242188 3.3242188-3.3242188zm0 0"/><path d="m3.375.882812c-1.375 0-2.492188 1.117188-2.492188 2.492188v43.246094c0 1.378906 1.117188 2.496094 2.492188 2.496094h43.25c1.375 0 2.492188-1.117188 2.492188-2.496094v-43.246094c0-1.375-1.117188-2.492188-2.492188-2.492188zm0 1.246094h43.25c.6875 0 1.246094.558594 1.246094 1.246094v43.246094c0 .691406-.558594 1.25-1.246094 1.25h-43.25c-.6875 0-1.246094-.558594-1.246094-1.25v-43.246094c0-.6875.558594-1.246094 1.246094-1.246094zm0 0"/><path d="m25 4.429688c-8.746094 0-15.832031 7.089843-15.832031 15.832031 0 8.746093 7.085937 15.835937 15.832031 15.835937s15.835938-7.089844 15.835938-15.835937c0-8.742188-7.089844-15.832031-15.835938-15.832031zm0 4.167968c6.445312 0 11.667969 5.222656 11.667969 11.664063 0 6.445312-5.222657 11.667969-11.667969 11.667969-6.441406 0-11.667969-5.222657-11.667969-11.667969 0-6.441407 5.226563-11.664063 11.667969-11.664063zm0 0" fill="#c1121c"/><path d="m16.035156 23.667969h1.972656c.269532 1.105469 1.386719 1.789062 2.496094 1.519531.925782-.222656 1.578125-1.054688 1.578125-2.007812v-.242188c0-1.140625-.921875-2.066406-2.066406-2.066406h-.847656v-1.703125h.847656c1.074219 0 1.945313-.867188 1.945313-1.945313 0-1.070312-.871094-1.941406-1.945313-1.941406-.929687 0-1.734375.664062-1.90625 1.578125h-1.964844c.203125-2.136719 2.097657-3.707031 4.238281-3.507813 1.996094.191407 3.523438 1.867188 3.523438 3.871094 0 1.109375-.539062 2.148438-1.441406 2.785156.976562.652344 1.5625 1.753907 1.5625 2.929688v.242188c0 2.214843-1.792969 4.011718-4.011719 4.011718-2.023437 0-3.734375-1.511718-3.980469-3.523437"/><path d="m27.914062 23.300781c0 1.074219.871094 1.945313 1.945313 1.945313s1.945313-.871094 1.945313-1.945313v-6.078125c0-1.070312-.871094-1.941406-1.945313-1.941406s-1.945313.871094-1.945313 1.941406zm-1.941406 0v-6.078125c0-2.144531 1.742188-3.886718 3.886719-3.886718 2.148437 0 3.890625 1.742187 3.890625 3.886718v6.078125c0 2.148438-1.742188 3.890625-3.890625 3.890625-2.144531 0-3.886719-1.742187-3.886719-3.890625"/><path d="m32.125 45.570312v-7h4.5v.996094h-3.4375v2.003906h2.9375v.9375h-2.9375v2.0625h3.4375v1zm-6.875 0v-7h1l3.1875 4.996094v-4.996094h1.0625v7h-1l-3.1875-5v5zm-5.3125-2.4375c0 .792969.644531 1.4375 1.4375 1.4375s1.4375-.644531 1.4375-1.4375v-2.128906c0-.792968-.644531-1.4375-1.4375-1.4375s-1.4375.644532-1.4375 1.4375zm-1.0625 0v-2.128906c0-1.378906 1.121094-2.5 2.5-2.5s2.5 1.121094 2.5 2.5v2.128906c0 1.378907-1.121094 2.496094-2.5 2.496094s-2.5-1.117187-2.5-2.496094zm-5.5 2.4375v-.875l3.1875-5.1875h-3.0625v-.9375h4.375v.808594l-3.1875 5.191406h3.1875v1"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_275.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_275.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_275.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m42.652344 7.355469c3.246094 3.246093 5.269531 6.746093 6.457031 11.183593 1.191406 4.441407 1.191406 8.484376 0 12.925782-1.1875 4.433594-3.210937 7.9375-6.460937 11.1875-3.246094 3.246094-6.75 5.269531-11.1875 6.457031s-8.484376 1.191406-12.921876 0c-4.4375-1.1875-7.9375-3.210937-11.183593-6.457031-3.25-3.25-5.273438-6.753906-6.464844-11.191406-1.1875-4.4375-1.1875-8.484376 0-12.921876 1.191406-4.4375 3.214844-7.9375 6.460937-11.183593 3.25-3.25 6.753907-5.273438 11.1875-6.460938 4.4375-1.191406 8.484376-1.191406 12.921876-.003906 4.4375 1.191406 7.941406 3.214844 11.191406 6.464844zm-.03125.027343c-3.242188-3.242187-6.738282-5.261718-11.167969-6.453124-4.433594-1.183594-8.46875-1.1875-12.902344.003906-4.429687 1.1875-7.925781 3.207031-11.167969 6.449218-3.246093 3.246094-5.261718 6.738282-6.453124 11.167969-1.183594 4.429688-1.183594 8.46875.003906 12.898438 1.1875 4.433593 3.207031 7.925781 6.453125 11.171875 3.242187 3.242187 6.734375 5.261718 11.164062 6.449218 4.433594 1.1875 8.46875 1.1875 12.902344 0 4.429687-1.1875 7.921875-3.207031 11.167969-6.449218 3.242187-3.242188 5.261718-6.738282 6.449218-11.167969 1.1875-4.433594 1.1875-8.46875 0-12.902344-1.1875-4.429687-3.203124-7.925781-6.449218-11.167969zm0 0"/><path d="m7.382812 7.382812c3.242188-3.242187 6.738282-5.261718 11.167969-6.449218 4.433594-1.191406 8.46875-1.1875 12.902344-.003906 4.429687 1.191406 7.925781 3.210937 11.167969 6.453124 3.246094 3.242188 5.261718 6.738282 6.449218 11.167969 1.1875 4.433594 1.1875 8.46875 0 12.902344-1.1875 4.429687-3.207031 7.925781-6.449218 11.167969-3.246094 3.242187-6.738282 5.261718-11.167969 6.449218-4.433594 1.1875-8.46875 1.1875-12.902344 0-4.429687-1.1875-7.921875-3.207031-11.164062-6.449218-3.246094-3.246094-5.265625-6.738282-6.453125-11.171875-1.1875-4.429688-1.1875-8.46875 0-12.898438 1.1875-4.429687 3.203125-7.921875 6.449218-11.167969zm0 0" fill="#fff"/><path d="m8.207031 8.203125c3.089844-3.089844 6.421875-5.015625 10.644531-6.144531 4.226563-1.132813 8.074219-1.132813 12.296876-.003906 4.226562 1.132812 7.558593 3.058593 10.652343 6.152343 3.089844 3.089844 5.011719 6.421875 6.144531 10.644531 1.128907 4.226563 1.128907 8.074219 0 12.296876-1.132812 4.222656-3.054687 7.558593-6.144531 10.648437-3.09375 3.09375-6.425781 5.019531-10.652343 6.148437-4.222657 1.132813-8.070313 1.132813-12.296876-.003906-4.222656-1.128906-7.554687-3.050781-10.644531-6.140625-3.09375-3.09375-5.019531-6.429687-6.148437-10.652343-1.132813-4.222657-1.132813-8.074219 0-12.296876 1.128906-4.222656 3.054687-7.554687 6.148437-10.648437zm0 0" fill="#154889"/></g><path d="m8.535156 31.253906h3.625c.492188 2.035156 2.546875 3.285156 4.582032 2.792969 1.703124-.410156 2.902343-1.9375 2.902343-3.6875v-.445313c0-2.097656-1.699219-3.796874-3.796875-3.796874h-1.5625v-3.125h1.5625c1.972656 0 3.574219-1.597657 3.574219-3.570313s-1.601563-3.574219-3.574219-3.574219c-1.710937 0-3.1875 1.21875-3.507812 2.902344h-3.601563c.367188-3.925781 3.851563-6.8125 7.78125-6.441406 3.667969.34375 6.472657 3.425781 6.472657 7.113281 0 2.03125-.988282 3.9375-2.652344 5.109375 1.796875 1.203125 2.875 3.222656 2.875 5.382812v.445313c0 4.066406-3.296875 7.363281-7.367188 7.363281-3.722656 0-6.859375-2.773437-7.3125-6.46875" fill="#fff"/><path d="m30.359375 30.582031c0 1.972657 1.597656 3.570313 3.570313 3.570313 1.972656 0 3.570312-1.597656 3.570312-3.570313v-11.160156c0-1.972656-1.597656-3.574219-3.570312-3.574219-1.972657 0-3.570313 1.601563-3.570313 3.574219zm-3.574219 0v-11.160156c0-3.945313 3.199219-7.144531 7.144532-7.144531 3.945312 0 7.144531 3.199218 7.144531 7.144531v11.160156c0 3.945313-3.199219 7.140625-7.144531 7.140625-3.945313 0-7.144532-3.195312-7.144532-7.140625" fill="#fff"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_325.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_325.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_325.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 74 50" width="74pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m0 .0195312h74v49.9531248h-74zm0 0"/></clipPath><g clip-path="url(#a)"><path d="m3.332031 49.910156c-1.8125 0-3.2812498-1.488281-3.2812498-3.324218v-43.191407c0-1.835937 1.4687498-3.3242185 3.2812498-3.3242185h67.34375c1.8125 0 3.285157 1.4882815 3.285157 3.3242185v43.191407c0 1.835937-1.472657 3.324218-3.285157 3.324218" fill="#fff"/><path d="m3.332031.0195312c-1.835937 0-3.332031 1.5156248-3.332031 3.3749998v43.191407c0 1.859374 1.496094 3.375 3.332031 3.375h67.34375c1.835938 0 3.332031-1.515626 3.332031-3.375v-43.191407c0-1.859375-1.496093-3.3749998-3.332031-3.3749998zm0 .0507813h67.34375c1.8125 0 3.285157 1.4882815 3.285157 3.3242185v43.191407c0 1.835937-1.472657 3.324218-3.285157 3.324218h-67.34375c-1.8125 0-3.2812498-1.488281-3.2812498-3.324218v-43.191407c0-1.835937 1.4687498-3.3242185 3.2812498-3.3242185zm0 0"/></g><path d="m3.332031 48.664062c-1.132812 0-2.050781-.929687-2.050781-2.078124v-43.191407c0-1.148437.917969-2.078125 2.050781-2.078125h67.34375c1.132813 0 2.054688.929688 2.054688 2.078125v43.191407c0 1.148437-.921875 2.078124-2.054688 2.078124" fill="#154889"/><g fill="#fff"><path d="m15.9375 30.101562v15.324219c-1.453125 0-2.632812-1.195312-2.632812-2.667969v-9.324218l-6.585938 10.65625c-1.234375-.777344-1.609375-2.421875-.839844-3.667969l4.792969-7.753906v-2.566407"/><path d="m15.9375 29.4375h-5.265625v-5.027344l-3.519531 5.691406c-1.078125-.679687-1.40625-2.121093-.730469-3.210937l4.652344-7.527344c.769531-1.246093 2.394531-1.625 3.628906-.847656.769531.488281 1.234375 1.339844 1.234375 2.261719v2.996094l4.941406 2.996093c-.65625 1.105469-2.070312 1.464844-3.160156.800781l-1.78125-1.078124"/><path d="m17.585938 14.449219c0 1.472656-1.179688 2.664062-2.632813 2.664062-1.457031 0-2.636719-1.191406-2.636719-2.664062 0-1.472657 1.179688-2.667969 2.636719-2.667969 1.453125 0 2.632813 1.195312 2.632813 2.667969"/><path d="m31.402344 43.492188c0 1.066406-.855469 1.933593-1.910156 1.933593-1.054688 0-1.910157-.867187-1.910157-1.933593 0-1.070313.855469-1.933594 1.910157-1.933594 1.054687 0 1.910156.863281 1.910156 1.933594"/><path d="m40.574219 35.375-2.402344 2.015625c-.535156.445313-1.3125.410156-1.800781-.082031l4.238281-4.289063c.882813.378907 1.890625.28125 2.691406-.25l2.828125.632813c.113282.027344.207032.097656.257813.203125l1.449219 2.929687c-.660157.332032-1.464844.0625-1.796876-.605468l-.6875-1.328126h-1.339843l1.148437 4.636719 2.585938.199219c.695312.050781 1.234375.640625 1.234375 1.347656h-4.378907c-.128906 0-.25-.066406-.320312-.171875l-.648438-.988281-1.339843.386719v4.0625c0 .722656-.5625 1.316406-1.277344 1.351562"/><path d="m43.632812 30.347656c0 1.070313-.855468 1.933594-1.910156 1.933594-1.058594 0-1.914062-.863281-1.914062-1.933594 0-1.066406.855468-1.929687 1.914062-1.929687 1.054688 0 1.910156.863281 1.910156 1.929687"/><path d="m28.691406 6.546875c-.367187 0-.703125.222656-.847656.5625l-1.460938 3.402344c-.105468.238281-.238281.464843-.390624.675781l-.222657.296875c-.140625.195313-.21875.429687-.21875.671875v2.433594c0 .511718.410157.929687.921875.929687h13.671875c.511719 0 .925781-.417969.925781-.929687v-2.433594c0-.242188-.078124-.476562-.222656-.671875l-.222656-.296875c-.15625-.210938-.285156-.4375-.386719-.675781l-1.464843-3.402344c-.144532-.339844-.480469-.5625-.847657-.5625zm.222656.9375h8.789063c.148437 0 .28125.089844.339844.226563l1.273437 2.949218h-12.011718l1.269531-2.949218c.058593-.136719.191406-.226563.339843-.226563zm-1.332031 4.113281c.613281 0 1.109375.5 1.109375 1.121094 0 .617188-.496094 1.121094-1.109375 1.121094s-1.109375-.503906-1.109375-1.121094c0-.621094.496094-1.121094 1.109375-1.121094zm11.453125 0c.613282 0 1.109375.5 1.109375 1.121094 0 .617188-.496093 1.121094-1.109375 1.121094-.609375 0-1.109375-.503906-1.109375-1.121094 0-.621094.5-1.121094 1.109375-1.121094zm0 0"/><path d="m26.472656 15.894531h2.214844v2.054688c0 .3125-.246094.5625-.554688.5625h-1.105468c-.308594 0-.554688-.25-.554688-.5625"/><path d="m37.929688 15.894531h2.214843v2.054688c0 .3125-.246093.5625-.554687.5625h-1.105469c-.308594 0-.554687-.25-.554687-.5625"/><path d="m59.917969 4.972656-1.988281 1.316406v-.914062h-1.992188v2.226562l-6.367188 4.210938h3.582032v14.09375h13.53125v-14.09375h3.582031zm0 1.207032 5.574219 4.628906v13.886718h-3.984376v-6.035156h-3.183593v6.035156h-3.976563v-13.886718zm0 0"/><path d="m55.933594 11.816406h3.1875v4.023438h-3.1875zm0 0"/><path d="m60.710938 11.816406h3.1875v4.023438h-3.1875zm0 0"/><path d="m66.566406 42.433594-13.65625-9.992188c-4.417968-3.230468-7.035156-8.414062-7.035156-13.929687h1.660156c0 4.976562 2.363282 9.652343 6.351563 12.570312l12.679687 9.328125"/></g></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_327.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_327.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_327.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 50 50" width="50pt" xmlns="http://www.w3.org/2000/svg"><path d="m3.035156.0429688c-2.9999998-.0039063-2.9921872 2.9921872-2.9921872 2.9921872v43.929688s-.0078126 2.996094 2.9921872 2.992187h43.929688c3.019531.003907 2.992187-2.992187 2.992187-2.992187v-43.929688s.027344-3.003906-2.992187-2.9921872zm0 0" fill="#fff"/><path d="m3.035156 1.039062c-1.101562 0-1.996094.894532-1.996094 1.996094v43.929688c0 1.101562.894532 1.996094 1.996094 1.996094h43.929688c1.101562 0 1.996094-.894532 1.996094-1.996094v-43.929688c0-1.101562-.894532-1.996094-1.996094-1.996094zm5.078125 7.074219h33.773438v33.773438h-33.773438zm0 0" fill="#154889"/><path d="m3.035156 0c-1.511718 0-2.28125.761719-2.660156 1.519531-.37890625.761719-.375 1.519531-.375 1.519531v43.925782s-.00390625.757812.375 1.515625c.378906.757812 1.148438 1.519531 2.660156 1.519531h43.929688c1.523437 0 2.289062-.761719 2.667968-1.519531.375-.757813.367188-1.515625.367188-1.515625v-43.929688s.007812-.757812-.371094-1.519531c-.375-.757813-1.140625-1.51953125-2.664062-1.515625zm0 .0429688h43.929688c3.019531-.0117188 2.992187 2.9921872 2.992187 2.9921872v43.929688s.027344 2.996094-2.992187 2.992187h-43.929688c-2.9999998.003907-2.9921872-2.992187-2.9921872-2.992187v-43.929688s-.0078126-2.9960935 2.9921872-2.9921872zm0 0"/><path d="m9.816406 36.496094v-10.933594l2.34375-5.550781 4.335938-4.164063 5.640625-2.34375h5.8125l5.550781 2.34375 4.339844 4.164063 2.34375 5.550781v10.933594zm2.515625-.433594h-2.082031v-4.339844h2.082031zm-2.082031-4.773438v-5.414062l2.238281.828125c-.003906.019531-.003906.039063-.007812.058594-.023438.136719-.042969.277343-.058594.414062-.015625.132813-.03125.265625-.039063.398438-.015624.128906-.023437.261719-.03125.394531-.003906.105469-.011718.210938-.011718.320312-.003906.113282-.007813.226563-.007813.339844v2.660156zm.085938-5.839843 2.105468-4.984375 1.816406 1.507812c-.023437.039063-.046874.078125-.070312.117188-.171875.277344-.332031.5625-.480469.855468-.140625.273438-.269531.554688-.386719.839844-.121093.285156-.230468.574219-.328124.871094-.082032.234375-.152344.472656-.21875.710938-.070313.253906-.128907.511718-.183594.769531-.007813.046875-.015625.089843-.027344.136719zm2.347656-5.34375 3.898437-3.734375 1.152344 1.9375c-.035156.027344-.074219.054687-.113281.078125-.265625.191406-.523438.390625-.769532.601562-.238281.199219-.46875.40625-.691406.625-.222656.214844-.433594.4375-.640625.671875-.164062.183594-.320312.375-.476562.570313-.164063.207031-.320313.417969-.46875.636719-.027344.039062-.050781.078124-.082031.113281zm4.261718-3.976563 5.070313-2.105468.355469 2.273437c-.046875.007813-.09375.019531-.136719.027344-.320313.074219-.636719.15625-.945313.253906-.296874.085937-.589843.191406-.878906.304687-.289062.109376-.574218.230469-.851562.367188-.226563.105469-.445313.21875-.664063.335938-.230469.128906-.457031.261718-.679687.402343-.039063.027344-.078125.050781-.121094.078125zm5.492188-2.191406h5.121094l-.355469 2.277344c-.023437-.003906-.042969-.007813-.066406-.011719-.152344-.027344-.304688-.050781-.460938-.070313-.144531-.019531-.292969-.039062-.4375-.050781-.148437-.015625-.296875-.027343-.441406-.035156-.117187-.007813-.238281-.015625-.351563-.019531-.128906-.003906-.253906-.007813-.378906-.007813h-.132812c-.046875 0-.089844 0-.132813 0-.113281.003907-.222656.007813-.332031.011719-.148438.007812-.296875.015625-.445312.027344-.144532.011718-.292969.023437-.4375.039062-.117188.015625-.238282.027344-.355469.046875-.121094.015625-.246094.035157-.371094.058594-.019531.003906-.042969.007813-.0625.011719zm17.3125 22.125h-2.082031v-4.339844h2.082031zm0-4.773438h-2.082031v-2.660156c0-.140625-.003907-.28125-.011719-.417968-.003906-.136719-.011719-.269532-.019531-.398438-.011719-.136719-.023438-.265625-.035157-.398438-.011718-.105468-.023437-.210937-.035156-.316406-.015625-.113281-.03125-.226562-.046875-.335937-.003906-.019531-.007812-.039063-.011719-.058594l2.242188-.828125zm-2.191406-10.824218 2.101562 4.984375-2.226562.824219c-.007813-.046876-.019532-.089844-.027344-.136719-.066406-.320313-.144531-.636719-.234375-.949219-.085937-.296875-.179687-.59375-.289063-.882812-.105468-.289063-.222656-.578126-.351562-.859376-.105469-.226562-.210938-.449218-.328125-.667968-.125-.230469-.253906-.464844-.390625-.6875-.023438-.039063-.046875-.078125-.074219-.117188zm-4.140625-4.09375 3.894531 3.734375-1.808594 1.5c-.027344-.035157-.054687-.074219-.078125-.113281-.1875-.269532-.378906-.53125-.585937-.78125-.195313-.246094-.402344-.476563-.613282-.699219-.210937-.230469-.433593-.445313-.660156-.65625-.183594-.167969-.371094-.328125-.5625-.484375-.207031-.167969-.414062-.328125-.628906-.484375-.035156-.023438-.074219-.050781-.113281-.078125zm-5.433594-2.347656 5.070313 2.105468-1.152344 1.9375c-.039063-.027344-.078125-.050781-.121094-.078125-.273438-.171875-.554688-.335937-.84375-.488281-.273438-.148438-.550781-.28125-.835938-.40625-.28125-.125-.570312-.242188-.859374-.34375-.238282-.082031-.472657-.15625-.710938-.226562-.253906-.074219-.511719-.140626-.765625-.199219-.046875-.007813-.09375-.019531-.136719-.027344z" fill="#0c0b09" fill-rule="evenodd"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images/DE/DE_Kraftfahrzeuge-frei.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images/DE/DE_Kraftfahrzeuge-frei.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images/DE/DE_Kraftfahrzeuge-frei.svg	(revision 36424)
@@ -0,0 +1,1 @@
+<svg height="50pt" viewBox="0 0 90 50" width="90pt" xmlns="http://www.w3.org/2000/svg"><path d="m38.791667 4.978125c-18.438802 0-28.817275 7.150781-28.817275 28.223438l-.31901 203.596875c0 21.072656 10.378472 28.223437 28.817274 28.223437l412.735677-.042187c18.438802 0 28.817275-7.129688 28.817275-28.223438l.31901-203.5125c0-21.09375-10.378472-28.223437-28.817274-28.223437zm0 0" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-width="2" transform="scale(.183673 .185185)"/><path d="m453.313802 17.803125-416.542535.021094c-8.421875 0-13.355902 6.011719-13.355902 14.871093v204.672657c0 8.859375 4.934027 14.871094 13.355902 14.871094l416.5-.042188c8.443143 0 13.37717-5.990625 13.37717-14.871094v-204.651562c0-8.880469-4.91276-14.871094-13.334635-14.871094zm0 0" fill="none" stroke="#000" stroke-width="10.050908" transform="scale(.183673 .185185)"/><path d="m48.679688 33.164062v-10.105468h-1.214844v-1.84375h1.214844v-1.574219c0-1.113281.308593-1.933594.925781-2.460937.617187-.523438 1.394531-.785157 2.335937-.785157h1.558594v2.253907h-1.363281c-.699219 0-1.050781.332031-1.050781.992187v1.574219h2.414062v1.84375h-2.414062v10.105468zm6.1875 0v-11.949218h2.414062v1.28125h.046875c.75-.945313 1.789063-1.417969 3.121094-1.417969.878906 0 1.714843.308594 2.511719.921875l-1.746094 2.070312c-.523438-.390624-1.058594-.585937-1.597656-.585937-.59375 0-1.128907.199219-1.613282.59375-.480468.394531-.722656 1.03125-.722656 1.902344v7.183593zm18.5-5.0625h-7.46875c0 .980469.265624 1.71875.800781 2.210938.535156.488281 1.21875.734375 2.054687.734375.992188 0 1.871094-.382813 2.632813-1.152344l1.746093 1.488281c-.59375.6875-1.261718 1.183594-2.003906 1.476563-.746094.296875-1.519531.445313-2.332031.445313-1.230469 0-2.425781-.398438-3.582031-1.191407-1.15625-.796875-1.734375-2.421875-1.734375-4.875 0-2.328125.535156-3.933593 1.601562-4.824219 1.066407-.890624 2.183594-1.335937 3.347657-1.335937 1.316406 0 2.46875.453125 3.457031 1.363281.984375.910156 1.480469 2.136719 1.480469 3.679688zm-7.46875-1.980468h5.0625c-.039063-.898438-.292969-1.585938-.761719-2.0625-.472657-.472656-1.0625-.710938-1.769531-.710938-.71875 0-1.3125.238282-1.789063.710938-.472656.476562-.722656 1.164062-.742187 2.0625zm10.082031 7.042968v-11.949218h2.414062v11.949218zm0-14.363281v-2.40625h2.414062v2.40625zm0 0"/><path d="m-554.882439 121.930802h349.214138" fill="none" stroke="#000" stroke-width="9.798565" transform="matrix(.0752471 0 0 .0758664 55.042345 15.628456)"/><path d="m17.394531 35.398438c-.042969-3.339844-.222656-.464844 1.773438-5.421876 1.445312-3.367187-.019531-2.460937 7.460937-2.582031 6.65625.136719 5.3125-.835937 6.84375 2.738281 1.914063 4.582032 1.765625 2.183594 1.753906 5.171876-.074218 3.277343 1.128907 2.433593-8.945312 2.542968-9.996094-.132812-8.816406.71875-8.886719-2.449218zm2.023438-3.222657 1.371093-3.1875c.253907-.566406.171876-.484375.769532-.488281h9.566406c.519531.003906.445312-.03125.65625.464844l1.363281 3.171875zm-.976563 6.039063 2.558594-.007813c-.007812 3.242188.257812 3.0625-1.136719 3.082031-1.664062-.007812-1.398437.164063-1.421875-3.074218zm13.179688.023437h2.5625c-.015625 3.246094.21875 3.023438-1.234375 3.03125-1.5-.019531-1.308594.21875-1.328125-3.03125zm0 0" fill-rule="evenodd"/><path d="m20.960938 34.558594c0 .695312-.558594 1.261718-1.25 1.261718-.6875 0-1.246094-.566406-1.246094-1.261718 0-.695313.558594-1.261719 1.246094-1.261719.691406 0 1.25.566406 1.25 1.261719zm0 0" fill="#fff"/><path d="m34.117188 34.558594c0 .695312-.558594 1.261718-1.25 1.261718-.6875 0-1.25-.566406-1.25-1.261718 0-.695313.5625-1.261719 1.25-1.261719.691406 0 1.25.566406 1.25 1.261719zm0 0" fill="#fff"/><g fill-rule="evenodd"><path d="m29.546875 21.621094c-1.933594-.097656-4.78125.246094-5.734375-.972656-.4375-2.324219-1.6875-3.492188-3.832031-3.515626-1.320313-2.566406 1.074219-2.96875 2.707031-3.628906.105469 1.195313.042969 2.433594 1.910156 3.128906.078125-.367187.230469-.667968.722656-.679687l2.765626.011719 1.957031-1.542969c.3125.507813.941406 1.15625.941406 1.519531l2.96875.011719c.214844.1875.398437.679687-.035156 1.167969-1.777344-.054688-5.007813.140625-4.371094 4.5zm0 0"/><path d="m24.722656 11.808594.007813-1.054688 1.171875-.160156v-.839844l-1.195313.199219c.085938-.753906.570313-1.300781 1.628907-1.460937.667968.050781 1.367187.085937 1.765624 1.34375.117188.496093.042969 1-.265624 1.4375-.992188-.550782-1.738282-.175782-2.414063.441406zm0 0"/><path d="m22.675781 14.09375 3.496094-2.664062c.472656-.25.988281-.300782 1.609375.082031.53125.484375 1.425781 1.828125 2.136719 2.742187l-1.992188 1.5-1.910156-2.679687-3.023437 2.335937c-.234376-.410156-.289063-.890625-.316407-1.316406zm0 0"/></g><path d="m-428.008743 64.418102c0 18.432897-14.950747 33.364574-33.379618 33.364574-18.376959 0-33.327706-14.931677-33.327706-33.364574s14.950747-33.364574 33.327706-33.364574c18.428871 0 33.379618 14.931677 33.379618 33.364574zm0 0" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="13.956994" transform="matrix(.0752471 0 0 .0758664 55.042345 15.628456)"/><path d="m-262.719934 64.469591c0 18.381408-14.898835 33.313085-33.327706 33.313085-18.428872 0-33.327706-14.931677-33.327706-33.313085 0-18.432898 14.898834-33.364574 33.327706-33.364574 18.428871 0 33.327706 14.931676 33.327706 33.364574zm0 0" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="13.956994" transform="matrix(.0752471 0 0 .0758664 55.042345 15.628456)"/></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_nodist/roadsigns.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_nodist/roadsigns.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_nodist/roadsigns.svg	(revision 36424)
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="Nederlands_verkeersbord_D4"
+   width="1205.02"
+   height="1205.02"
+   viewBox="0 0 1205.02 1205.02"
+   version="1.1"
+   inkscape:version="0.47pre4 r22446"
+   inkscape:export-xdpi="1.1950009"
+   inkscape:export-ydpi="1.1950009">
+  <metadata
+     id="metadata10">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 150 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="300 : 150 : 1"
+       inkscape:persp3d-origin="150 : 100 : 1"
+       id="perspective12" />
+    <inkscape:perspective
+       id="perspective2828"
+       inkscape:persp3d-origin="367.5 : 245 : 1"
+       inkscape:vp_z="735 : 367.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 367.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2844"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 362.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2870"
+       inkscape:persp3d-origin="376.56 : 223.84001 : 1"
+       inkscape:vp_z="753.12 : 335.76001 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 335.76001 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2899"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 362.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2914"
+       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="perspective2937"
+       inkscape:persp3d-origin="300 : 200 : 1"
+       inkscape:vp_z="600 : 300 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 300 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2975"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 362.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="865"
+     inkscape:window-height="816"
+     id="namedview6"
+     showgrid="false"
+     inkscape:zoom="0.2"
+     inkscape:cx="-563.87942"
+     inkscape:cy="1091.2698"
+     inkscape:window-x="106"
+     inkscape:window-y="46"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Nederlands_verkeersbord_D4" />
+  <g
+     id="g2902"
+     transform="matrix(0.88927866,0,0,0.88927866,554.95142,552.96099)">
+    <circle
+       id="circle2889"
+       cy="362.5"
+       cx="362.5"
+       r="350"
+       style="fill:#ffffff;stroke:#000000;stroke-width:2.5px"
+       sodipodi:cx="362.5"
+       sodipodi:cy="362.5"
+       sodipodi:rx="350"
+       sodipodi:ry="350"
+       d="m 712.5,362.5 c 0,193.29966 -156.70034,350 -350,350 -193.29966,0 -350,-156.70034 -350,-350 0,-193.29966 156.70034,-350 350,-350 193.29966,0 350,156.70034 350,350 z" />
+    <circle
+       id="circle2891"
+       style="fill:none;stroke:#cc0000;stroke-width:83.75"
+       r="295"
+       cy="362.5"
+       cx="362.5"
+       sodipodi:cx="362.5"
+       sodipodi:cy="362.5"
+       sodipodi:rx="295"
+       sodipodi:ry="295"
+       d="m 657.5,362.5 c 0,162.924 -132.076,295 -295,295 -162.924,0 -295,-132.076 -295,-295 0,-162.924 132.076,-295 295,-295 162.924,0 295,132.076 295,295 z" />
+  </g>
+  <g
+     id="g2847"
+     transform="matrix(0.83391798,0,0,0.83391798,588.32749,43.783839)">
+    <circle
+       id="circle4"
+       style="fill:#ffffff;stroke:#000000;stroke-width:2.5px"
+       r="350"
+       cy="362.5"
+       cx="362.5"
+       sodipodi:cx="362.5"
+       sodipodi:cy="362.5"
+       sodipodi:rx="350"
+       sodipodi:ry="350"
+       d="m 712.5,362.5 c 0,193.29966 -156.70034,350 -350,350 -193.29966,0 -350,-156.70034 -350,-350 0,-193.29966 156.70034,-350 350,-350 193.29966,0 350,156.70034 350,350 z" />
+    <path
+       id="path1883"
+       style="fill:#003399;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1.061206,0,0,1.061206,877.7452,-29.79549)"
+       d="m -176.30905,369.66949 a 309.2189,309.2189 0 1 1 -618.43781,0 309.2189,309.2189 0 1 1 618.43781,0 z" />
+    <path
+       id="path1885"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="M 383.65625,138.34375 473.3125,228 380.46875,228.46875 C 265.85778,233.37859 237.41403,333.38056 233.03125,362.5 l 0,232.78125 63.3125,0 0,-223.1875 c -10e-6,-10.79629 9.57271,-69.73935 80.78125,-82 l 97.8125,0.25 -91.34375,91.34375 78.65625,0 121.53125,-121.5625 0.3125,0 -0.15625,-0.15625 0.0937,-0.0937 -0.1875,0 -121.5625,-121.53125 -78.625,0 z" />
+  </g>
+  <g
+     id="layer1-4"
+     transform="matrix(1.0180822,0,0,1.0180822,83.599792,591.13918)">
+    <g
+       id="g3810"
+       transform="translate(-137.5187,76.8608)">
+      <path
+         id="path84"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-opacity:1"
+         d="M 729.60917,223.33738 C 730.75125,76.700028 619.28349,-48.694492 474.05023,-66.484189 306.65375,-87.444858 157.2418,37.136763 145.93513,205.19834 136.05271,372.84339 269.48216,515.94027 437.77215,515.1744 598.22876,516.26946 730.63705,383.6865 729.60917,223.33738" />
+      <path
+         id="path86"
+         d="m 729.60917,223.33738 -0.40309,-18.13904 m 0,0 -4.43399,-36.68117 m 0,0 -9.27107,-35.47191 m 0,0 -13.30196,-34.262629 m 0,0 -17.73595,-31.844095 m 0,0 -21.76685,-29.828645 m 0,0 -24.99157,-26.603927 m 0,0 -28.21628,-23.379209 m 0,0 -31.03792,-19.7514 m 0,0 -33.05336,-15.720502 m 0,0 -35.06882,-11.286515 m 0,0 -36.27808,-6.852527 m 0,0 -36.27808,-2.418538 m 0,0 -36.68117,2.418538 m 0,0 -35.875,6.852527 m 0,0 -35.06881,11.286515 m 0,0 -33.05336,15.720502 m 0,0 -31.03792,19.7514 m 0,0 -28.21628,23.379209 m 0,0 -24.99157,26.603927 m 0,0 -21.76685,29.828645 m 0,0 -17.73595,31.844095 m 0,0 -13.30196,34.262629 m 0,0 -9.27107,35.47191 m 0,0 -4.83708,36.68117 m 0,0 0,36.27808 m 0,0 4.83708,36.68117 m 0,0 9.27107,35.47191 m 0,0 13.30196,33.85954 m 0,0 17.73595,32.24718 m 0,0 21.76685,29.82865 m 0,0 24.99157,26.60393 m 0,0 28.21628,23.3792 m 0,0 31.03792,19.7514 m 0,0 33.05336,15.72051 m 0,0 35.06881,11.28651 m 0,0 35.875,6.85253 m 0,0 36.68117,2.01545 m 0,0 36.27808,-2.01545 m 0,0 36.27808,-6.85253 m 0,0 35.06882,-11.28651 m 0,0 33.05336,-15.72051 m 0,0 31.03792,-19.7514 m 0,0 28.21628,-23.3792 m 0,0 24.99157,-26.60393 m 0,0 21.76685,-29.82865 m 0,0 17.73595,-32.24718 m 0,0 13.30196,-33.85954 m 0,0 9.27107,-35.47191 m 0,0 4.43399,-36.68117 m 0,0 0.40309,-18.13904" />
+      <path
+         id="path88"
+         style="fill:#000000;fill-rule:evenodd;stroke:none"
+         d="M 719.93501,223.33738 C 720.4859,81.436333 613.98958,-39.443581 473.24405,-56.810033 311.79315,-77.542286 165.90823,42.974847 156.01238,205.60143 c -9.95632,162.80125 118.56886,299.91225 281.75977,299.89881 155.80764,0.2956 282.41143,-126.61051 282.16286,-282.16286" />
+      <path
+         id="path90"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="M 584.49684,-0.78055067 C 336.07259,-153.518 60.916774,121.63782 213.65422,370.06207 L 584.49684,-0.78055067" />
+      <path
+         id="path92"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         d="m 595.78335,7.2812454 4.43399,3.2247186 4.0309,2.821628 -376.48588,376.485878 -2.82163,-4.0309 -3.22472,-4.43399 L 595.78335,7.2812454" />
+      <path
+         id="path94"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         d="m 614.72857,22.195568 3.62781,3.627808 3.62781,3.224719 -378.50133,378.501325 -3.22471,-3.62781 -3.62781,-3.62781 378.09823,-378.098232" />
+      <path
+         id="path96"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         d="m 638.91396,46.380956 -3.62781,-3.627808 -3.62781,-4.030898 -378.50132,378.50133 4.0309,3.6278 3.62781,3.62781 378.09823,-378.098234" />
+      <path
+         id="path98"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         d="m 653.82828,65.326177 -3.22471,-4.433988 -3.22472,-4.030898 -376.08279,376.082789 4.0309,3.22472 4.43399,3.22471 374.06733,-374.067333" />
+      <path
+         id="path100"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="M 661.48699,76.612692 C 815.29934,323.98219 538.42367,600.86457 291.04746,447.05222 L 661.48699,76.612692" />
+    </g>
+  </g>
+  <g
+     id="layer1"
+     transform="translate(17.568028,2.2593869)">
+    <path
+       id="rect1924"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.03192091;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
+       d="M 391.91972,14.243162 722.65773,345.2093 c 15.15005,15.15006 9.69741,34.88788 -0.78328,45.95642 l -328.7798,329.79122 c -16.84198,16.84197 -40.52027,10.3968 -51.30871,-0.39164 L 14.964338,394.29884 C -0.7041983,378.6303 -1.0447956,357.69367 14.18105,342.46782 c 0,0 327.21325,-327.833017 327.21325,-327.833017 17.30914,-15.52546173 37.29919,-13.4160973 50.52542,-0.391641 z" />
+    <path
+       id="path2814"
+       style="fill:none;stroke:#000000;stroke-width:12.17423248;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       d="M 387.72893,30.498744 705.6622,348.22179 c 14.25215,14.25215 11.45922,25.81051 1.59969,36.22306 L 386.28527,705.52327 c -15.8438,15.84379 -26.6484,10.84268 -36.79744,0.69364 L 31.203018,388.24192 c -14.739903,-14.73991 -16.122382,-26.15155 -1.798932,-40.475 0,0 320.989804,-320.510776 320.989804,-320.510776 16.28327,-14.605304 24.8927,-9.009932 37.33504,3.2426 z" />
+    <rect
+       id="rect4591"
+       style="fill:#ffcc33;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.34560061;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       transform="matrix(0.707107,-0.707107,0.707107,0.707107,0,0)"
+       y="373.03519"
+       x="-146.68831"
+       height="293.37677"
+       width="293.37677" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1000-33.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1000-33.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1000-33.svg	(revision 36424)
@@ -0,0 +1,100 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1000-33.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata11">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1.05"
+     inkscape:cx="245"
+     inkscape:cy="79.901905"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <path
+     sodipodi:nodetypes="ccccccccc"
+     d="M 38.774314,2.2764824 C 20.349334,2.2764725 9.9608448,11.800443 9.9608448,39.939406 L 9.6483342,320.06059 C 9.6483342,348.19954 20.036823,357.72352 38.461803,357.72352 L 451.22569,357.6818 C 469.65066,357.6818 480.03915,348.15783 480.03916,320.01889 L 480.35167,39.981111 C 480.35167,11.842158 469.96317,2.3181773 451.5382,2.3181971 L 38.774314,2.2764824 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2.98416758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     sodipodi:nodetypes="ccccccccc"
+     d="M 453.23342,15.483526 L 36.797822,15.526436 C 28.375507,15.526436 23.425893,23.764976 23.425893,35.947756 L 23.425893,324.09514 C 23.425893,336.27788 28.375517,344.51647 36.797822,344.51647 L 453.20218,344.47356 C 461.62449,344.47355 466.57411,336.235 466.57411,324.05224 L 466.57411,35.904856 C 466.57411,23.722076 461.65573,15.483526 453.23342,15.483526 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g1974"
+     transform="translate(-10.33192,-365.1959)">
+    <g
+       id="g1901"
+       transform="matrix(0.281329,0,0,0.281329,113.9641,397.2582)">
+      <circle
+         id="circle1890"
+         style="fill:none;stroke:black;stroke-width:40px"
+         r="161"
+         cy="409"
+         cx="215"
+         sodipodi:cx="215"
+         sodipodi:cy="409"
+         sodipodi:rx="161"
+         sodipodi:ry="161" />
+      <circle
+         id="circle1892"
+         style="fill:none;stroke:black;stroke-width:40px"
+         r="161"
+         cy="406"
+         cx="790"
+         sodipodi:cx="790"
+         sodipodi:cy="406"
+         sodipodi:rx="161"
+         sodipodi:ry="161" />
+      <path
+         id="path1894"
+         style="fill:black;fill-rule:evenodd;stroke:none"
+         d="M 429.48437,15.467118 C 296.9179,16.75919 319.39993,1.7711686 248.07762,230.98455 C 189.97511,414.12586 196.30387,394.15363 196,407 C 195.78704,416.98022 203.84333,424.89312 213.96694,425.57043 C 235.02054,423.44166 226.16492,427.84741 299.15748,201.18078 C 565.86963,482.5364 465.80592,436.91194 609.34064,442.62576 C 797.98299,440.81686 813.31557,452.4455 815.55516,424.79518 C 815.29674,415.40613 810.90371,409.80716 681.4382,121.67535 L 693.84208,87.564675 L 736.48042,86.789433 L 734.92994,51.128275 L 576.00521,51.128275 C 561.96471,70.337063 581.69033,70.250925 652.75423,86.01419 L 640.35035,120.9001 L 323.27614,121.67535 C 344.63838,47.079788 332.57905,51.731243 428.70913,51.903518 L 429.48437,15.467118 z M 314.11415,159.91012 L 624.37752,159.36001 L 534.70921,400.30922 L 314.11415,159.91012 z M 661.78516,174.21304 L 573.76718,405.26023 L 766.3065,405.81034 L 661.78516,174.21304 z " />
+    </g>
+    <path
+       id="path1906"
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 203.15481,583.17833 L 202.8008,663.71655 L 227.82522,636.88253 L 227.82522,655.6129 L 195.36382,688.78231 L 162.15487,656.83217 L 162.15487,638.73167 L 188.47764,663.75608 L 187.4156,583.49282 L 203.15481,583.17833 z " />
+    <path
+       id="path1954"
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 326.99211,683.43737 L 326.6381,602.89915 L 351.66252,629.73317 L 351.66252,611.0028 L 319.20112,577.83339 L 285.99217,609.78353 L 285.99217,627.88403 L 312.31494,602.85962 L 311.2529,683.12288 L 326.99211,683.43737 z " />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-12.svg	(revision 36424)
@@ -0,0 +1,104 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1020-12.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1.05"
+     inkscape:cx="416.64094"
+     inkscape:cy="108.23622"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5738"
+     transform="translate(-340.163,-124.3555)">
+    <g
+       id="g1918"
+       transform="matrix(0.200056,0,0,0.200056,409.2681,162.2679)">
+      <circle
+         id="circle1907"
+         style="fill:none;stroke:black;stroke-width:40px"
+         r="161"
+         cy="409"
+         cx="215"
+         sodipodi:cx="215"
+         sodipodi:cy="409"
+         sodipodi:rx="161"
+         sodipodi:ry="161" />
+      <circle
+         id="circle1909"
+         style="fill:none;stroke:black;stroke-width:40px"
+         r="161"
+         cy="406"
+         cx="790"
+         sodipodi:cx="790"
+         sodipodi:cy="406"
+         sodipodi:rx="161"
+         sodipodi:ry="161" />
+      <path
+         id="path1911"
+         style="fill:black;fill-rule:evenodd;stroke:none"
+         d="M 429.48437,15.467118 C 296.9179,16.75919 319.39993,1.7711686 248.07762,230.98455 C 189.97511,414.12586 196.30387,394.15363 196,407 C 195.78704,416.98022 203.84333,424.89312 213.96694,425.57043 C 235.02054,423.44166 226.16492,427.84741 299.15748,201.18078 C 565.86963,482.5364 465.80592,436.91194 609.34064,442.62576 C 797.98299,440.81686 813.31557,452.4455 815.55516,424.79518 C 815.29674,415.40613 810.90371,409.80716 681.4382,121.67535 L 693.84208,87.564675 L 736.48042,86.789433 L 734.92994,51.128275 L 576.00521,51.128275 C 561.96471,70.337063 581.69033,70.250925 652.75423,86.01419 L 640.35035,120.9001 L 323.27614,121.67535 C 344.63838,47.079788 332.57905,51.731243 428.70913,51.903518 L 429.48437,15.467118 z M 314.11415,159.91012 L 624.37752,159.36001 L 534.70921,400.30922 L 314.11415,159.91012 z M 661.78516,174.21304 L 573.76718,405.26023 L 766.3065,405.81034 L 661.78516,174.21304 z " />
+    </g>
+    <path
+       id="text1923"
+       d="M 635.9187,266.6518 L 635.9187,239.69482 L 644.08393,239.69482 L 644.08393,263.87797 C 644.08392,266.6388 644.84575,268.78103 646.36942,270.30467 C 647.89306,271.82834 649.82693,272.59016 652.17103,272.59016 C 654.43696,272.59016 656.33176,271.82834 657.85544,270.30467 C 659.37907,268.78103 660.14089,266.6388 660.14092,263.87797 L 660.14092,239.69482 L 668.30616,239.69482 L 668.30616,280.2475 L 660.14092,280.2475 L 660.14092,275.95001 L 659.98465,275.95001 C 657.45822,279.12755 653.96814,280.71632 649.5144,280.71632 C 646.3108,280.71632 643.24396,279.52474 640.31386,277.14159 C 637.38375,274.75844 635.9187,271.26185 635.9187,266.6518 L 635.9187,266.6518 z M 678.89361,280.2475 L 678.89361,239.69482 L 687.05885,239.69482 L 687.05885,244.03138 L 687.21512,244.03138 C 689.74151,240.82783 693.25763,239.22604 697.7635,239.226 C 700.91497,239.22604 703.95577,240.42413 706.88591,242.82026 C 709.81598,245.21648 711.28103,248.70656 711.28107,253.29051 L 711.28107,280.2475 L 703.11583,280.2475 L 703.11583,256.10342 C 703.1158,253.36868 702.35398,251.23296 700.83035,249.69625 C 699.30667,248.1596 697.41187,247.39126 695.14594,247.39123 C 692.80184,247.39126 690.86797,248.1596 689.34433,249.69625 C 687.82066,251.23296 687.05883,253.36868 687.05885,256.10342 L 687.05885,280.2475 L 678.89361,280.2475 z M 746.09074,280.2475 L 746.09074,276.02815 C 743.25177,279.1536 739.76169,280.71632 735.62049,280.71632 C 733.12012,280.71632 730.97138,280.22797 729.17426,279.25127 C 727.37711,278.27457 725.90555,277.01788 724.75956,275.48119 C 723.61356,274.0487 722.84522,272.34924 722.45454,270.38281 C 722.06386,268.41639 721.86852,264.93282 721.86852,259.93209 C 721.86852,254.98349 722.06386,251.53899 722.45454,249.59858 C 722.84522,247.65823 723.61356,245.95877 724.75956,244.50019 C 725.90555,242.9896 727.37711,241.73291 729.17426,240.73012 C 730.97138,239.72741 733.12012,239.22604 735.62049,239.226 C 737.7041,239.22604 739.59239,239.66881 741.28537,240.55431 C 742.97829,241.4399 744.58008,242.59892 746.09074,244.03138 L 746.09074,223.32528 L 754.25598,223.32528 L 754.25598,280.2475 L 746.09074,280.2475 z M 738.12085,247.39123 C 734.26612,247.39126 731.95459,248.70656 731.18626,251.33711 C 730.41791,253.96772 730.03374,256.83271 730.03376,259.93209 C 730.03374,263.10965 730.41791,266.01371 731.18626,268.64428 C 731.95459,271.27487 734.26612,272.59016 738.12085,272.59016 C 741.89741,272.59016 744.16987,271.22278 744.93824,268.48801 C 745.70655,265.75325 746.09072,262.90128 746.09074,259.93209 C 746.09072,257.04108 745.70655,254.22818 744.93824,251.49338 C 744.16987,248.75865 741.89741,247.39126 738.12085,247.39123 L 738.12085,247.39123 z "
+       style="font-size:80.01146698px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1927"
+       d="M 437.17487,361.01831 L 458.84291,301.63482 L 466.25567,301.63482 L 487.92372,361.01831 L 478.47449,361.01831 L 473.9128,347.61833 L 451.38943,347.61833 L 446.66482,361.01831 L 437.17487,361.01831 z M 454.03684,339.6761 L 471.22466,339.6761 C 469.97559,336.01047 468.99129,333.13905 468.27177,331.06183 C 467.55219,328.98466 466.92767,327.14505 466.39822,325.54299 C 465.86871,323.941 465.33244,322.31183 464.78941,320.65546 C 464.24632,318.99917 463.52677,316.75906 462.63075,313.93511 C 461.68037,316.86767 460.92009,319.20961 460.3499,320.96093 C 459.77967,322.71233 459.22982,324.4026 458.70036,326.03174 C 458.17086,327.66095 457.55992,329.4802 456.86754,331.48948 C 456.17512,333.49883 455.23155,336.2277 454.03684,339.6761 L 454.03684,339.6761 z M 494.64407,361.05904 L 494.64407,318.78191 L 503.15652,318.78191 L 503.15652,323.30287 L 503.31944,323.30287 C 505.95325,319.9631 509.6189,318.2932 514.31638,318.29315 C 517.60185,318.2932 520.77196,319.54223 523.8267,322.04026 C 526.88136,324.53837 528.40872,328.17686 528.40875,332.95574 L 528.40875,361.05904 L 519.89631,361.05904 L 519.89631,335.88826 C 519.89628,333.03723 519.10205,330.81069 517.51364,329.20864 C 515.92516,327.60665 513.94979,326.80564 511.58751,326.8056 C 509.14372,326.80564 507.12762,327.60665 505.53919,329.20864 C 503.95073,330.81069 503.1565,333.03723 503.15652,335.88826 L 503.15652,361.05904 L 494.64407,361.05904 z M 539.44642,350.83596 L 539.44642,301.71628 L 547.95887,301.71628 L 547.95887,350.14356 C 547.95886,352.09858 549.01782,353.07608 551.13576,353.07607 L 554.02755,353.07607 L 554.02755,361.05904 L 550.28045,361.05904 C 547.185,361.05904 544.60547,360.30555 542.54186,358.79856 C 540.47823,357.29157 539.44642,354.63738 539.44642,350.83596 L 539.44642,350.83596 z M 561.19593,361.05904 L 561.19593,318.78191 L 569.70838,318.78191 L 569.70838,361.05904 L 561.19593,361.05904 z M 561.19593,310.22873 L 561.19593,301.71628 L 569.70838,301.71628 L 569.70838,310.22873 L 561.19593,310.22873 z M 613.73688,343.1381 L 587.42568,343.1381 C 587.42566,346.61369 588.36923,349.22037 590.25637,350.95815 C 592.14348,352.69594 594.5533,353.56483 597.48584,353.56483 C 600.98855,353.56483 604.08398,352.20719 606.77215,349.49189 L 612.92229,354.74598 C 610.83148,357.18975 608.47596,358.93432 605.85574,359.97971 C 603.23545,361.0251 600.49979,361.54779 597.64876,361.54779 C 593.30427,361.54779 589.09557,360.14263 585.02264,357.3323 C 580.94969,354.52198 578.91323,348.77235 578.91323,340.08339 C 578.91323,331.85608 580.79356,326.16754 584.55425,323.01777 C 588.31492,319.86807 592.24531,318.2932 596.34542,318.29315 C 600.98855,318.2932 605.04791,319.90201 608.52351,323.11959 C 611.99905,326.33725 613.73684,330.67493 613.73688,336.13264 L 613.73688,343.1381 z M 587.42568,336.13264 L 605.26516,336.13264 C 605.12937,332.95577 604.23332,330.52559 602.57702,328.84207 C 600.92066,327.15862 598.84347,326.31688 596.34542,326.31685 C 593.82018,326.31688 591.72261,327.15862 590.05272,328.84207 C 588.3828,330.52559 587.50712,332.95577 587.42568,336.13264 L 587.42568,336.13264 z M 646.4426,361.01831 L 646.4426,356.66026 C 643.4829,359.91862 639.84441,361.54779 635.52712,361.54779 C 632.7575,361.54779 630.44272,360.99795 628.58275,359.89825 C 626.72277,358.79856 625.3176,357.63777 624.36726,356.41589 C 623.14537,354.84102 622.31042,353.17112 621.8624,351.40617 C 621.41437,349.64124 621.19036,345.82625 621.19037,339.9612 C 621.19036,334.09619 621.41437,330.28121 621.8624,328.51624 C 622.31042,326.75133 623.14537,325.06785 624.36726,323.46579 C 625.3176,322.2711 626.72277,321.11031 628.58275,319.98343 C 630.44272,318.85662 632.7575,318.2932 635.52712,318.29315 C 639.65434,318.2932 643.29283,319.9631 646.4426,323.30287 L 646.4426,318.78191 L 654.95505,318.78191 L 654.95505,360.08153 C 654.95501,366.43532 653.10183,371.1192 649.39548,374.13318 C 645.68908,377.14714 641.43286,378.65413 636.62681,378.65415 C 633.9115,378.65413 631.25052,378.00246 628.64385,376.69914 C 626.03716,375.39578 623.79704,373.68515 621.92349,371.56723 L 628.52166,366.31313 C 629.55346,367.34494 630.78213,368.24099 632.20767,369.00128 C 633.63318,369.76155 635.16054,370.14169 636.78973,370.1417 C 639.61361,370.14169 641.9284,369.35426 643.7341,367.77939 C 645.53974,366.20452 646.44257,363.95083 646.4426,361.01831 L 646.4426,361.01831 z M 629.70281,339.9612 C 629.7028,343.35534 629.79105,345.60903 629.96755,346.72229 C 630.14403,347.83557 630.61242,348.86738 631.37272,349.81772 C 631.94292,350.57801 632.78466,351.31114 633.89794,352.01711 C 635.0112,352.72309 636.42315,353.07608 638.1338,353.07607 C 639.79011,353.07608 641.16812,352.72309 642.26784,352.01711 C 643.36751,351.31114 644.21603,350.57801 644.81343,349.81772 C 645.54653,348.86738 646.00134,347.83557 646.17786,346.72229 C 646.35433,345.60903 646.44257,343.35534 646.4426,339.9612 C 646.44257,336.56711 646.35433,334.31342 646.17786,333.20012 C 646.00134,332.08688 645.54653,331.04149 644.81343,330.06396 C 644.21603,329.33086 643.36751,328.60452 642.26784,327.88493 C 641.16812,327.16541 639.79011,326.80564 638.1338,326.8056 C 636.42315,326.80564 635.0112,327.16541 633.89794,327.88493 C 632.78466,328.60452 631.94292,329.33086 631.37272,330.06396 C 630.61242,331.04149 630.14403,332.08688 629.96755,333.20012 C 629.79105,334.31342 629.7028,336.56711 629.70281,339.9612 L 629.70281,339.9612 z M 698.77989,343.1381 L 672.46869,343.1381 C 672.46868,346.61369 673.41224,349.22037 675.29939,350.95815 C 677.1865,352.69594 679.59632,353.56483 682.52886,353.56483 C 686.03156,353.56483 689.12699,352.20719 691.81516,349.49189 L 697.9653,354.74598 C 695.87449,357.18975 693.51898,358.93432 690.89875,359.97971 C 688.27846,361.0251 685.54281,361.54779 682.69177,361.54779 C 678.34729,361.54779 674.13858,360.14263 670.06566,357.3323 C 665.99271,354.52198 663.95624,348.77235 663.95624,340.08339 C 663.95624,331.85608 665.83658,326.16754 669.59727,323.01777 C 673.35794,319.86807 677.28832,318.2932 681.38843,318.29315 C 686.03156,318.2932 690.09092,319.90201 693.56653,323.11959 C 697.04207,326.33725 698.77985,330.67493 698.77989,336.13264 L 698.77989,343.1381 z M 672.46869,336.13264 L 690.30817,336.13264 C 690.17238,332.95577 689.27633,330.52559 687.62003,328.84207 C 685.96368,327.15862 683.88648,326.31688 681.38843,326.31685 C 678.86319,326.31688 676.76563,327.15862 675.09574,328.84207 C 673.42582,330.52559 672.55014,332.95577 672.46869,336.13264 L 672.46869,336.13264 z M 707.74035,361.05904 L 707.74035,318.78191 L 716.2528,318.78191 L 716.2528,323.30287 L 716.41572,323.30287 C 719.04954,319.9631 722.71518,318.2932 727.41266,318.29315 C 730.50807,318.2932 733.45416,319.37931 736.25094,321.55151 L 730.1008,328.8828 C 728.25438,327.49804 726.38082,326.80564 724.48014,326.8056 C 722.38935,326.80564 720.49543,327.50482 718.79839,328.90317 C 717.10131,330.30157 716.25279,332.54848 716.2528,335.64389 L 716.2528,361.05904 L 707.74035,361.05904 z "
+       style="font-size:83.41384125px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1931"
+       d="M 536.5138,442.86002 L 536.5138,407.09952 L 532.23721,407.09952 L 532.23721,400.58281 L 536.5138,400.58281 L 536.5138,395.00287 C 536.5138,391.06573 537.59991,388.16715 539.77216,386.30712 C 541.94439,384.4472 544.68684,383.51721 547.99952,383.51715 L 553.498,383.51715 L 553.498,391.50013 L 548.69192,391.50013 C 546.22098,391.50018 544.98552,392.66776 544.98554,395.00287 L 544.98554,400.58281 L 553.498,400.58281 L 553.498,407.09952 L 544.98554,407.09952 L 544.98554,442.86002 L 536.5138,442.86002 z M 558.30408,442.86002 L 558.30408,400.58281 L 566.81655,400.58281 L 566.81655,405.10378 L 566.97946,405.10378 C 569.61329,401.764 573.27894,400.09409 577.97643,400.09405 C 581.07184,400.09409 584.01794,401.18021 586.81473,403.35241 L 580.66457,410.68372 C 578.81814,409.29895 576.94459,408.60655 575.0439,408.60652 C 572.9531,408.60655 571.05918,409.30574 569.36214,410.70408 C 567.66506,412.10249 566.81653,414.3494 566.81655,417.44482 L 566.81655,442.86002 L 558.30408,442.86002 z M 623.47127,424.93904 L 597.16002,424.93904 C 597.16001,428.41464 598.10357,431.02133 599.99072,432.75911 C 601.87784,434.49691 604.28766,435.3658 607.22021,435.36579 C 610.72292,435.3658 613.81835,434.00815 616.50653,431.29284 L 622.65668,436.54695 C 620.56587,438.99072 618.21035,440.7353 615.59012,441.78069 C 612.96982,442.82608 610.23416,443.34877 607.38312,443.34877 C 603.03863,443.34877 598.82992,441.94361 594.75698,439.13327 C 590.68403,436.32294 588.64755,430.5733 588.64756,421.88433 C 588.64755,413.657 590.5279,407.96846 594.28859,404.81867 C 598.04927,401.66897 601.97966,400.09409 606.07978,400.09405 C 610.72292,400.09409 614.78228,401.70291 618.2579,404.9205 C 621.73344,408.13816 623.47123,412.47585 623.47127,417.93357 L 623.47127,424.93904 z M 597.16002,417.93357 L 614.99954,417.93357 C 614.86374,414.7567 613.9677,412.32651 612.31139,410.64299 C 610.65503,408.95954 608.57783,408.1178 606.07978,408.11776 C 603.55453,408.1178 601.45697,408.95954 599.78707,410.64299 C 598.11715,412.32651 597.24147,414.7567 597.16002,417.93357 L 597.16002,417.93357 z M 632.67614,442.86002 L 632.67614,400.58281 L 641.1886,400.58281 L 641.1886,442.86002 L 632.67614,442.86002 z M 632.67614,392.02961 L 632.67614,383.51715 L 641.1886,383.51715 L 641.1886,392.02961 L 632.67614,392.02961 z "
+       style="font-size:83.41400146px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-13.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-13.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-13.svg	(revision 36424)
@@ -0,0 +1,213 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="523"
+   height="355"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="Zusatzzeichen_Inlineskater_frei.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="1"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1.222449"
+     inkscape:cx="243.66122"
+     inkscape:cy="175.5485"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     showgrid="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2473"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <defs
+     id="defs4" />
+  <path
+     d="M 40.589996,13.483754 C 20.793639,13.554399 9.6319306,22.774365 9.6319306,49.897406 L 9.2961598,311.82004 C 9.2961598,338.94308 20.457868,348.08337 40.254225,348.0127 L 483.74026,346.3896 C 503.53662,346.31893 514.69832,337.09897 514.69833,309.97595 L 515.03409,48.133708 C 515.03409,21.010665 503.87238,11.870377 484.07602,11.94105 L 40.589996,13.483754 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.03687978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 484.68714,29.777412 L 37.441138,29.817799 C 28.39569,29.817799 23.079874,37.572154 23.079874,49.038941 L 23.079874,313.49124 C 23.079874,324.95799 28.3957,332.71239 37.441138,332.71239 L 484.65358,332.672 C 493.69903,332.67199 499.01485,324.91762 499.01485,313.45085 L 499.01485,48.998562 C 499.01485,37.531775 493.73257,29.777412 484.68714,29.777412 z"
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:12.06502438;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     d="M 319.97421,212.94611 L 319.97421,169.94211 L 314.83136,169.94211 L 314.83136,162.1054 L 319.97421,162.1054 L 319.97421,155.39521 C 319.9742,150.66058 321.28032,147.17488 323.89257,144.93808 C 326.50479,142.70142 329.80274,141.58306 333.78642,141.58299 L 340.39866,141.58299 L 340.39866,151.18297 L 334.61908,151.18297 C 331.64763,151.18303 330.16192,152.58711 330.16194,155.39521 L 330.16194,162.1054 L 340.39866,162.1054 L 340.39866,169.94211 L 330.16194,169.94211 L 330.16194,212.94611 L 319.97421,212.94611 z M 346.17824,212.94611 L 346.17824,162.1054 L 356.41495,162.1054 L 356.41495,167.54212 L 356.61087,167.54212 C 359.77819,163.52585 364.18634,161.51769 369.83533,161.51764 C 373.55774,161.51769 377.10058,162.82381 380.46388,165.436 L 373.06798,174.25231 C 370.84754,172.58705 368.59449,171.7544 366.30881,171.75436 C 363.7945,171.7544 361.51696,172.59521 359.47617,174.2768 C 357.43534,175.95847 356.41493,178.6605 356.41495,182.38291 L 356.41495,212.94611 L 346.17824,212.94611 z M 424.54542,191.39513 L 392.90467,191.39513 C 392.90466,195.57473 394.03935,198.70942 396.30875,200.79919 C 398.57811,202.889 401.47606,203.93389 405.00261,203.93388 C 409.21481,203.93389 412.93725,202.30124 416.16993,199.03593 L 423.56583,205.35429 C 421.05151,208.29306 418.21887,210.39101 415.06789,211.64815 C 411.91684,212.90529 408.62706,213.53386 405.19852,213.53386 C 399.97402,213.53386 394.91282,211.84407 390.01488,208.46448 C 385.11693,205.08491 382.66796,198.17064 382.66796,187.72167 C 382.66796,177.82785 384.92917,170.98705 389.45162,167.19926 C 393.97404,163.41157 398.70056,161.51769 403.63118,161.51764 C 409.21481,161.51769 414.09643,163.45238 418.27605,167.32171 C 422.45559,171.19113 424.54538,176.40744 424.54542,182.97066 L 424.54542,191.39513 z M 392.90467,182.97066 L 414.35769,182.97066 C 414.19439,179.15029 413.11684,176.22785 411.12504,174.20333 C 409.13318,172.17889 406.63523,171.16664 403.63118,171.1666 C 400.59443,171.16664 398.07199,172.17889 396.06385,174.20333 C 394.05568,176.22785 393.00262,179.15029 392.90467,182.97066 L 392.90467,182.97066 z M 435.61479,212.94611 L 435.61479,162.1054 L 445.8515,162.1054 L 445.8515,212.94611 L 435.61479,212.94611 z M 435.61479,151.8197 L 435.61479,141.58299 L 445.8515,141.58299 L 445.8515,151.8197 L 435.61479,151.8197 z"
+     id="text5654" />
+  <g
+     id="g3239"
+     transform="matrix(1.1523906,0,0,1.1523906,16.880407,-18.001883)">
+    <rect
+       ry="2"
+       rx="1.86"
+       y="248.24542"
+       x="113.91585"
+       height="10"
+       width="46.5"
+       id="rect2411"
+       style="fill:#000000;fill-opacity:1" />
+    <g
+       id="g3224">
+      <path
+         sodipodi:type="arc"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="Rolle1"
+         sodipodi:cx="175"
+         sodipodi:cy="205"
+         sodipodi:rx="5"
+         sodipodi:ry="5"
+         d="M 180,205 A 5,5 0 1 1 170,205 A 5,5 0 1 1 180,205 z"
+         inkscape:label="#path2477"
+         transform="matrix(1.2712937,0,0,1.2727956,-102.8176,5.8907718)" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2397"
+         sodipodi:cx="175"
+         sodipodi:cy="205"
+         sodipodi:rx="5"
+         sodipodi:ry="5"
+         d="M 180,205 A 5,5 0 1 1 170,205 A 5,5 0 1 1 180,205 z"
+         inkscape:label="#path2477"
+         transform="matrix(1.2727273,0,0,1.2727273,-87.386179,6.1092813)" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2399"
+         sodipodi:cx="175"
+         sodipodi:cy="205"
+         sodipodi:rx="5"
+         sodipodi:ry="5"
+         d="M 180,205 A 5,5 0 1 1 170,205 A 5,5 0 1 1 180,205 z"
+         inkscape:label="#path2477"
+         transform="matrix(1.2727273,0,0,1.2727273,-71.363641,6.0680625)"
+         inkscape:transform-center-x="25.454533"
+         inkscape:transform-center-y="7.0000045" />
+      <path
+         inkscape:transform-center-y="7.0000045"
+         inkscape:transform-center-x="25.454533"
+         transform="matrix(1.2727273,0,0,1.2727273,-46.879043,0.1546593)"
+         inkscape:label="#path2477"
+         d="M 180,205 A 5,5 0 1 1 170,205 A 5,5 0 1 1 180,205 z"
+         sodipodi:ry="5"
+         sodipodi:rx="5"
+         sodipodi:cy="205"
+         sodipodi:cx="175"
+         id="path2401"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2403"
+         sodipodi:cx="175"
+         sodipodi:cy="205"
+         sodipodi:rx="5"
+         sodipodi:ry="5"
+         d="M 180,205 A 5,5 0 1 1 170,205 A 5,5 0 1 1 180,205 z"
+         inkscape:label="#path2477"
+         transform="matrix(1.2727273,0,0,1.2727273,-32.355973,-5.9090965)"
+         inkscape:transform-center-x="25.454533"
+         inkscape:transform-center-y="7.0000045" />
+      <path
+         inkscape:transform-center-y="7.0000045"
+         inkscape:transform-center-x="25.454533"
+         transform="matrix(1.2727273,0,0,1.2727273,-17.727277,-11.753824)"
+         inkscape:label="#path2477"
+         d="M 180,205 A 5,5 0 1 1 170,205 A 5,5 0 1 1 180,205 z"
+         sodipodi:ry="5"
+         sodipodi:rx="5"
+         sodipodi:cy="205"
+         sodipodi:cx="175"
+         id="path2405"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2407"
+         sodipodi:cx="175"
+         sodipodi:cy="205"
+         sodipodi:rx="5"
+         sodipodi:ry="5"
+         d="M 180,205 A 5,5 0 1 1 170,205 A 5,5 0 1 1 180,205 z"
+         inkscape:label="#path2477"
+         transform="matrix(2.7272727,0,0,2.7272727,-364.72697,-474.27287)"
+         inkscape:transform-center-x="54.545448"
+         inkscape:transform-center-y="15.000019" />
+      <rect
+         ry="2"
+         rx="1.86"
+         y="290.50479"
+         x="52.570236"
+         height="10.000001"
+         width="46.500004"
+         id="rect2413"
+         style="fill:#000000;fill-opacity:1"
+         transform="matrix(0.9205048,-0.3907312,0.3907312,0.9205048,0,0)" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#000000;fill-opacity:1"
+         id="path2441"
+         sodipodi:cx="134.46368"
+         sodipodi:cy="265.00626"
+         sodipodi:rx="1.1247913"
+         sodipodi:ry="0.51126879"
+         d="M 135.58848,265.00626 A 1.1247913,0.51126879 0 1 1 133.33889,265.00626 A 1.1247913,0.51126879 0 1 1 135.58848,265.00626 z" />
+      <path
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 125,199.25709 C 129.63816,215.71041 133.72209,230.58076 136.81553,241.79466 C 137.69185,244.97137 143.16718,247.59201 146.42738,247.11185 C 149.90413,246.59981 155.63046,242.18194 154.60768,238.72705 C 151.17248,227.12316 144.3823,203.96077 144.3823,203.96077 L 154.60768,193.53088 L 159.72037,210.50501 C 159.72037,210.50501 171.32652,225.58879 176.28548,231.9783 C 178.49333,234.82307 184.82413,235.20684 188.14691,233.81887 C 190.66088,232.76875 192.46702,229.17518 192.64608,226.45659 C 192.70562,225.55269 192.03255,223.798 192.03255,223.798 L 177.30801,203.55175 L 170.35476,182.28297 C 170.35476,182.28297 174.21949,176.2238 175.67195,174.10267 C 177.49566,171.43938 179.0248,166.45425 177.30801,163.46828 C 175.16084,159.73376 170.96828,150.58431 170.96828,150.58431 C 170.96828,150.58431 145,173.15184 133.13439,183.101 C 128.9762,186.58759 123.52766,194.03415 125,199.25709 z"
+         id="path2445"
+         sodipodi:nodetypes="cssscccssscccsscss" />
+      <path
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 144.3823,167.14942 L 170,145 L 170,145 L 176.48998,117.8631 C 176.48998,117.8631 150.32208,105.46211 138.8606,100.27546 C 133.5824,97.886922 124.43386,98.867398 119.63689,102.11603 C 117.75115,103.3931 116.75065,106.66514 116.16027,108.86477 C 114.85459,113.72946 115.34224,125.63439 115.34224,125.63439 L 120.45493,147.7212 C 120.45493,147.7212 106.15754,160.79718 99.390651,167.14941 C 97.276706,169.13382 95.490881,175.43149 97.423902,177.94599 C 99.584079,180.75597 106.63936,181.24961 109.20701,178.80634 C 116.90801,171.47838 135.9975,153.85643 135.9975,153.85643 L 144.3823,167.14942 z"
+         id="path3217"
+         sodipodi:nodetypes="ccccsssccssscc" />
+      <a
+         id="a3221"
+         style="fill:#ffffff;fill-opacity:1">
+        <path
+           id="path3219"
+           d="M 152.76711,122.97579 L 160.74291,125 L 159.10684,133.20117 L 152.76711,122.97579 z"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      </a>
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-30.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-30.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1020-30.svg	(revision 36424)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 67.12418,120.39301 L 92.898369,49.75623 L 101.71586,49.75623 L 127.49004,120.39301 L 116.25017,120.39301 L 110.82403,104.45371 L 84.032436,104.45371 L 78.4125,120.39301 L 67.12418,120.39301 z M 87.181538,95.00641 L 107.62648,95.00641 C 106.14071,90.64614 104.96989,87.23058 104.11402,84.75971 C 103.25807,82.28892 102.51521,80.1007 101.88542,78.19505 C 101.25557,76.28948 100.61767,74.35157 99.971737,72.38132 C 99.325735,70.41116 98.469826,67.74654 97.404008,64.38744 C 96.273531,67.87573 95.369175,70.66147 94.690935,72.74468 C 94.01264,74.82797 93.358596,76.83855 92.728802,78.77642 C 92.098957,80.71437 91.372242,82.87836 90.548655,85.26841 C 89.725021,87.65853 88.602649,90.90453 87.181538,95.00641 L 87.181538,95.00641 z M 135.48392,120.44146 L 135.48392,70.15272 L 145.60949,70.15272 L 145.60949,75.53042 L 145.80329,75.53042 C 148.93622,71.55776 153.29651,69.5714 158.88417,69.57135 C 162.79225,69.5714 166.5631,71.05713 170.19671,74.02854 C 173.83025,77.00005 175.64704,81.32804 175.64708,87.01253 L 175.64708,120.44146 L 165.52151,120.44146 L 165.52151,90.50077 C 165.52147,87.10946 164.57674,84.46099 162.68732,82.55534 C 160.79782,80.64977 158.44811,79.69697 155.63817,79.69692 C 152.73129,79.69697 150.33313,80.64977 148.44369,82.55534 C 146.55421,84.46099 145.60948,87.10946 145.60949,90.50077 L 145.60949,120.44146 L 135.48392,120.44146 z M 188.77642,108.28108 L 188.77642,49.85313 L 198.90199,49.85313 L 198.90199,107.45747 C 198.90197,109.78297 200.16161,110.94572 202.68091,110.94571 L 206.1207,110.94571 L 206.1207,120.44146 L 201.66351,120.44146 C 197.98147,120.44146 194.91312,119.54518 192.45844,117.75261 C 190.00375,115.96005 188.77641,112.80288 188.77642,108.28108 L 188.77642,108.28108 z M 214.64751,120.44146 L 214.64751,70.15272 L 224.77308,70.15272 L 224.77308,120.44146 L 214.64751,120.44146 z M 214.64751,59.9787 L 214.64751,49.85313 L 224.77308,49.85313 L 224.77308,59.9787 L 214.64751,59.9787 z M 277.14507,99.12446 L 245.84784,99.12446 C 245.84782,103.25868 246.97019,106.35934 249.21495,108.42643 C 251.45968,110.49354 254.32617,111.52709 257.81442,111.52708 C 261.9809,111.52709 265.66292,109.91217 268.86051,106.68231 L 276.17611,112.93206 C 273.68909,115.83893 270.8872,117.91411 267.77043,119.1576 C 264.65359,120.40109 261.39953,121.02283 258.00821,121.02283 C 252.84044,121.02283 247.83418,119.35139 242.98942,116.00849 C 238.14464,112.66561 235.72226,105.82641 235.72226,95.49088 C 235.72226,85.70448 237.95893,78.93795 242.43227,75.19129 C 246.9056,71.44471 251.5808,69.5714 256.45789,69.57135 C 261.9809,69.5714 266.80952,71.48508 270.94376,75.31241 C 275.07792,79.13982 277.14502,84.29949 277.14507,90.79145 L 277.14507,99.12446 z M 245.84784,90.79145 L 267.06794,90.79145 C 266.90641,87.01256 265.84056,84.12185 263.87039,82.11931 C 261.90015,80.11685 259.42932,79.11559 256.45789,79.11555 C 253.45411,79.11559 250.95905,80.11685 248.97271,82.11931 C 246.98634,84.12185 245.94472,87.01256 245.84784,90.79145 L 245.84784,90.79145 z M 316.04859,120.39301 L 316.04859,115.20911 C 312.52803,119.08493 308.20003,121.02283 303.0646,121.02283 C 299.77014,121.02283 297.0167,120.36879 294.80427,119.0607 C 292.59181,117.75261 290.92036,116.37186 289.78993,114.91842 C 288.33649,113.04512 287.34331,111.05876 286.81039,108.95935 C 286.27746,106.85996 286.011,102.32203 286.011,95.34554 C 286.011,88.3691 286.27746,83.83117 286.81039,81.73173 C 287.34331,79.63237 288.33649,77.62986 289.78993,75.72421 C 290.92036,74.30312 292.59181,72.92237 294.80427,71.58193 C 297.0167,70.24159 299.77014,69.5714 303.0646,69.57135 C 307.97394,69.5714 312.30194,71.55776 316.04859,75.53042 L 316.04859,70.15272 L 326.17417,70.15272 L 326.17417,119.27872 C 326.17412,126.83655 323.96975,132.40804 319.56105,135.99318 C 315.15228,139.57829 310.08949,141.37086 304.37269,141.37088 C 301.14282,141.37086 297.97757,140.59569 294.87694,139.04539 C 291.77627,137.49504 289.11165,135.46024 286.88306,132.94097 L 294.73159,126.69122 C 295.95892,127.91855 297.42043,128.9844 299.11611,129.88877 C 300.81176,130.79311 302.62855,131.24529 304.56648,131.2453 C 307.9255,131.24529 310.67894,130.30864 312.82682,128.43534 C 314.97463,126.56202 316.04856,123.88125 316.04859,120.39301 L 316.04859,120.39301 z M 296.13658,95.34554 C 296.13656,99.38287 296.24153,102.06364 296.45149,103.38786 C 296.66141,104.71212 297.21856,105.93946 298.12293,107.06989 C 298.80118,107.97426 299.80244,108.84632 301.12669,109.68607 C 302.45091,110.52584 304.13043,110.94572 306.16526,110.94571 C 308.13544,110.94572 309.77458,110.52584 311.0827,109.68607 C 312.39076,108.84632 313.40008,107.97426 314.11068,107.06989 C 314.98271,105.93946 315.52371,104.71212 315.73368,103.38786 C 315.94359,102.06364 316.04856,99.38287 316.04859,95.34554 C 316.04856,91.30826 315.94359,88.62749 315.73368,87.30322 C 315.52371,85.97901 314.98271,84.73552 314.11068,83.57274 C 313.40008,82.70072 312.39076,81.83674 311.0827,80.98079 C 309.77458,80.12492 308.13544,79.69697 306.16526,79.69692 C 304.13043,79.69697 302.45091,80.12492 301.12669,80.98079 C 299.80244,81.83674 298.80118,82.70072 298.12293,83.57274 C 297.21856,84.73552 296.66141,85.97901 296.45149,87.30322 C 296.24153,88.62749 296.13656,91.30826 296.13658,95.34554 L 296.13658,95.34554 z M 378.30391,99.12446 L 347.00668,99.12446 C 347.00667,103.25868 348.12904,106.35934 350.3738,108.42643 C 352.61852,110.49354 355.48501,111.52709 358.97327,111.52708 C 363.13974,111.52709 366.82177,109.91217 370.01935,106.68231 L 377.33496,112.93206 C 374.84793,115.83893 372.04604,117.91411 368.92928,119.1576 C 365.81244,120.40109 362.55837,121.02283 359.16706,121.02283 C 353.99928,121.02283 348.99302,119.35139 344.14826,116.00849 C 339.30349,112.66561 336.8811,105.82641 336.88111,95.49088 C 336.8811,85.70448 339.11777,78.93795 343.59112,75.19129 C 348.06444,71.44471 352.73964,69.5714 357.61673,69.57135 C 363.13974,69.5714 367.96836,71.48508 372.1026,75.31241 C 376.23676,79.13982 378.30386,84.29949 378.30391,90.79145 L 378.30391,99.12446 z M 347.00668,90.79145 L 368.22678,90.79145 C 368.06526,87.01256 366.99941,84.12185 365.02923,82.11931 C 363.059,80.11685 360.58816,79.11559 357.61673,79.11555 C 354.61295,79.11559 352.1179,80.11685 350.13156,82.11931 C 348.14519,84.12185 347.10356,87.01256 347.00668,90.79145 L 347.00668,90.79145 z M 388.96241,120.44146 L 388.96241,70.15272 L 399.08799,70.15272 L 399.08799,75.53042 L 399.28178,75.53042 C 402.41471,71.55776 406.775,69.5714 412.36266,69.57135 C 416.04466,69.5714 419.54904,70.86334 422.87582,73.44717 L 415.56021,82.16776 C 413.36389,80.52058 411.13529,79.69697 408.87443,79.69692 C 406.38742,79.69697 404.1346,80.52865 402.11597,82.19198 C 400.0973,83.85539 399.08797,86.52809 399.08799,90.21008 L 399.08799,120.44146 L 388.96241,120.44146 z M 182.42976,219.6624 L 182.42976,177.1253 L 177.34275,177.1253 L 177.34275,169.37366 L 182.42976,169.37366 L 182.42976,162.73632 C 182.42976,158.05311 183.72169,154.60525 186.30558,152.39273 C 188.88945,150.18036 192.15159,149.07414 196.09202,149.07407 L 202.63247,149.07407 L 202.63247,158.56982 L 196.91563,158.56982 C 193.97645,158.56988 192.50687,159.95871 192.50689,162.73632 L 192.50689,169.37366 L 202.63247,169.37366 L 202.63247,177.1253 L 192.50689,177.1253 L 192.50689,219.6624 L 182.42976,219.6624 z M 208.3493,219.6624 L 208.3493,169.37366 L 218.47487,169.37366 L 218.47487,174.75136 L 218.66866,174.75136 C 221.80159,170.7787 226.16188,168.79234 231.74955,168.79229 C 235.43154,168.79234 238.93592,170.08428 242.2627,172.66811 L 234.9471,181.3887 C 232.75077,179.74152 230.52218,178.9179 228.26131,178.91786 C 225.7743,178.9179 223.52149,179.74959 221.50285,181.41292 C 219.48418,183.07633 218.47485,185.74903 218.47487,189.43102 L 218.47487,219.6624 L 208.3493,219.6624 z M 285.86565,198.3454 L 254.56842,198.3454 C 254.56841,202.47962 255.69078,205.58028 257.93554,207.64736 C 260.18027,209.71448 263.04675,210.74803 266.53501,210.74802 C 270.70149,210.74803 274.38351,209.13311 277.58109,205.90325 L 284.8967,212.153 C 282.40967,215.05987 279.60778,217.13505 276.49102,218.37854 C 273.37418,219.62203 270.12011,220.24377 266.7288,220.24377 C 261.56102,220.24377 256.55476,218.57233 251.71001,215.22943 C 246.86523,211.88655 244.44285,205.04735 244.44285,194.71182 C 244.44285,184.92542 246.67951,178.15889 251.15286,174.41223 C 255.62618,170.66565 260.30139,168.79234 265.17848,168.79229 C 270.70149,168.79234 275.5301,170.70602 279.66435,174.53335 C 283.79851,178.36076 285.86561,183.52043 285.86565,190.01239 L 285.86565,198.3454 z M 254.56842,190.01239 L 275.78853,190.01239 C 275.627,186.2335 274.56115,183.34279 272.59098,181.34025 C 270.62074,179.33778 268.14991,178.33653 265.17848,178.33649 C 262.1747,178.33653 259.67964,179.33778 257.6933,181.34025 C 255.70693,183.34279 254.66531,186.2335 254.56842,190.01239 L 254.56842,190.01239 z M 296.81484,219.6624 L 296.81484,169.37366 L 306.94041,169.37366 L 306.94041,219.6624 L 296.81484,219.6624 z M 296.81484,159.19964 L 296.81484,149.07407 L 306.94041,149.07407 L 306.94041,159.19964 L 296.81484,159.19964 z "
+     style="font-size:99.22093964px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text3933" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-10.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-10.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-10.svg	(revision 36424)
@@ -0,0 +1,94 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1022-10.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1.05"
+     inkscape:cx="416.64094"
+     inkscape:cy="108.23622"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5674"
+     transform="translate(276.4897,-456.8417)">
+    <path
+       id="text5654"
+       d="M -91.856923,763.33719 L -91.856923,720.33319 L -96.999769,720.33319 L -96.999769,712.49648 L -91.856923,712.49648 L -91.856923,705.78629 C -91.856931,701.05166 -90.550813,697.56596 -87.938564,695.32916 C -85.326339,693.0925 -82.02839,691.97414 -78.044706,691.97407 L -71.432475,691.97407 L -71.432475,701.57405 L -77.212055,701.57405 C -80.183498,701.57411 -81.669207,702.97819 -81.669189,705.78629 L -81.669189,712.49648 L -71.432475,712.49648 L -71.432475,720.33319 L -81.669189,720.33319 L -81.669189,763.33719 L -91.856923,763.33719 z M -65.652895,763.33719 L -65.652895,712.49648 L -55.416182,712.49648 L -55.416182,717.9332 L -55.220264,717.9332 C -52.052944,713.91693 -47.644794,711.90877 -41.995801,711.90872 C -38.273394,711.90877 -34.730548,713.21489 -31.367252,715.82708 L -38.763155,724.64339 C -40.98359,722.97813 -43.236644,722.14548 -45.522325,722.14544 C -48.03663,722.14548 -50.314174,722.98629 -52.354964,724.66788 C -54.395794,726.34955 -55.416199,729.05158 -55.416182,732.77399 L -55.416182,763.33719 L -65.652895,763.33719 z M 12.714294,741.78621 L -18.926457,741.78621 C -18.926472,745.96581 -17.791781,749.1005 -15.522383,751.19027 C -13.25302,753.28008 -10.355069,754.32497 -6.8285231,754.32496 C -2.6163176,754.32497 1.10612,752.69232 4.3388008,749.42701 L 11.734704,755.74537 C 9.2203809,758.68414 6.3877365,760.78209 3.2367623,762.03923 C 0.085714918,763.29637 -3.2040709,763.92494 -6.6326051,763.92494 C -11.857106,763.92494 -16.918315,762.23515 -21.816247,758.85556 C -26.714203,755.47599 -29.163175,748.56172 -29.163171,738.11275 C -29.163175,728.21893 -26.901958,721.37813 -22.379511,717.59034 C -17.857087,713.80265 -13.130571,711.90877 -8.1999488,711.90872 C -2.6163176,711.90877 2.2653001,713.84346 6.444919,717.71279 C 10.624458,721.58221 12.714248,726.79852 12.714294,733.36174 L 12.714294,741.78621 z M -18.926457,733.36174 L 2.5265597,733.36174 C 2.363259,729.54137 1.2857112,726.61893 -0.70608672,724.59441 C -2.69795,722.56997 -5.1959016,721.55772 -8.1999488,721.55768 C -11.236699,721.55772 -13.759141,722.56997 -15.76728,724.59441 C -17.775455,726.61893 -18.828513,729.54137 -18.926457,733.36174 L -18.926457,733.36174 z M 23.783659,763.33719 L 23.783659,712.49648 L 34.020372,712.49648 L 34.020372,763.33719 L 23.783659,763.33719 z M 23.783659,702.21078 L 23.783659,691.97407 L 34.020372,691.97407 L 34.020372,702.21078 L 23.783659,702.21078 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <circle
+       transform="matrix(0.276135,0,0,0.276135,-170.2475,505.4875)"
+       sodipodi:ry="161"
+       sodipodi:rx="161"
+       sodipodi:cy="409"
+       sodipodi:cx="215"
+       cx="215"
+       cy="409"
+       r="161"
+       style="fill:none;stroke:black;stroke-width:40px"
+       id="circle2026" />
+    <circle
+       transform="matrix(0.276135,0,0,0.276135,-170.2475,505.4875)"
+       sodipodi:ry="161"
+       sodipodi:rx="161"
+       sodipodi:cy="406"
+       sodipodi:cx="790"
+       cx="790"
+       cy="406"
+       r="161"
+       style="fill:none;stroke:black;stroke-width:40px"
+       id="circle2028" />
+    <path
+       d="M -51.651833,509.75851 C -88.258076,510.1153 -82.05,505.97658 -101.74459,569.27042 C -117.78872,619.84214 -116.04113,614.32711 -116.12504,617.87445 C -116.18385,620.63033 -113.95922,622.81536 -111.16374,623.00239 C -105.3501,622.41456 -107.79545,623.63114 -87.639649,561.04055 C -13.99109,638.73269 -41.622182,626.13418 -1.9872224,627.71196 C 50.103533,627.21246 54.337395,630.42354 54.955824,622.78832 C 54.884465,620.19567 53.671396,618.6496 17.921437,539.08632 L 21.346583,529.66717 L 33.120521,529.4531 L 32.692379,519.60581 L -11.192301,519.60581 C -15.069375,524.91002 -9.6224407,524.88624 10.000789,529.23903 L 6.5756439,538.87225 L -80.979643,539.08632 C -75.080781,518.48788 -78.410784,519.77231 -51.865904,519.81988 L -51.651833,509.75851 z M -83.509589,549.64428 L 2.1649865,549.49238 L -22.595572,616.02689 L -83.509589,549.64428 z M 12.494545,553.59382 L -11.8103,617.39403 L 41.356545,617.54594 L 12.494545,553.59382 z "
+       style="fill:black;fill-rule:evenodd;stroke:none"
+       id="path2030" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-11.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-11.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-11.svg	(revision 36424)
@@ -0,0 +1,94 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1022-11.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="28.98207"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5631"
+     transform="translate(236.0836,-302.4038)">
+    <path
+       id="text1982"
+       d="M -51.450823,608.44705 L -51.450823,565.44306 L -56.593669,565.44306 L -56.593669,557.60634 L -51.450823,557.60634 L -51.450823,550.89615 C -51.450831,546.16153 -50.144713,542.67582 -47.532463,540.43903 C -44.920239,538.20237 -41.62229,537.084 -37.638606,537.08393 L -31.026375,537.08393 L -31.026375,546.68391 L -36.805955,546.68391 C -39.777397,546.68397 -41.263107,548.08805 -41.263089,550.89615 L -41.263089,557.60634 L -31.026375,557.60634 L -31.026375,565.44306 L -41.263089,565.44306 L -41.263089,608.44705 L -51.450823,608.44705 z M -25.246795,608.44705 L -25.246795,557.60634 L -15.010082,557.60634 L -15.010082,563.04306 L -14.814164,563.04306 C -11.646844,559.02679 -7.2386937,557.01864 -1.5897011,557.01859 C 2.1327062,557.01864 5.6755525,558.32476 9.0388485,560.93694 L 1.6429453,569.75325 C -0.57748962,568.08799 -2.830544,567.25534 -5.1162244,567.2553 C -7.6305293,567.25534 -9.9080733,568.09615 -11.948863,569.77774 C -13.989693,571.45941 -15.010099,574.16144 -15.010082,577.88385 L -15.010082,608.44705 L -25.246795,608.44705 z M 53.120394,586.89607 L 21.479643,586.89607 C 21.479628,591.07568 22.614319,594.21036 24.883718,596.30014 C 27.15308,598.38994 30.051031,599.43483 33.577577,599.43482 C 37.789783,599.43483 41.51222,597.80219 44.744901,594.53688 L 52.140804,600.85523 C 49.626481,603.794 46.793837,605.89196 43.642863,607.14909 C 40.491815,608.40623 37.202029,609.0348 33.773495,609.0348 C 28.548995,609.0348 23.487786,607.34501 18.589853,603.96543 C 13.691897,600.58585 11.242925,593.67159 11.242929,583.22261 C 11.242925,573.32879 13.504143,566.488 18.026589,562.70021 C 22.549013,558.91251 27.275529,557.01864 32.206151,557.01859 C 37.789783,557.01864 42.6714,558.95332 46.851019,562.82265 C 51.030558,566.69208 53.120348,571.90839 53.120394,578.4716 L 53.120394,586.89607 z M 21.479643,578.4716 L 42.93266,578.4716 C 42.769359,574.65124 41.691812,571.7288 39.700014,569.70427 C 37.70815,567.67983 35.210199,566.66759 32.206151,566.66754 C 29.169401,566.66759 26.64696,567.67983 24.63882,569.70427 C 22.630645,571.7288 21.577587,574.65124 21.479643,578.4716 L 21.479643,578.4716 z M 64.189759,608.44705 L 64.189759,557.60634 L 74.426473,557.60634 L 74.426473,608.44705 L 64.189759,608.44705 z M 64.189759,547.32065 L 64.189759,537.08393 L 74.426473,537.08393 L 74.426473,547.32065 L 64.189759,547.32065 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="layer1"
+       transform="matrix(0.425919,0,0,0.425919,-135.8564,350.6084)">
+      <path
+         id="path15475"
+         style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:39.38558578;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(0.74724,0,0,0.74724,122.5869,48.79482)"
+         d="M 136.75462,282.03583 C 136.75462,357.06643 75.930301,417.89075 0.8997,417.89075 C -74.130901,417.89075 -134.95522,357.06643 -134.95522,282.03583 C -134.95522,207.00523 -74.130901,146.18091 0.8997,146.18091 C 75.930301,146.18091 136.75462,207.00523 136.75462,282.03583 z " />
+      <path
+         id="path12814"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 648.90867,96.718727 L 435.78671,96.718727 C 427.74779,99.838733 421.99999,104.94437 426.56202,118.9852 L 481.59203,154.61156 C 505.09805,136.98259 529.46933,134.06306 553.79902,130.43653 L 649.54486,130.11844 L 648.90867,96.718727 z " />
+      <path
+         id="path13701"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 582.93177,285.852 L 361.08955,285.58848 C 314.75731,284.17925 288.28246,245.79634 259.51124,204.2434 C 209.17953,131.55162 201.92686,130.76936 191.60083,97.014213 L 265.47547,97.091396 C 270.39789,98.590741 275.32031,99.325646 280.24273,105.42207 L 324.71097,168.71896 C 328.41656,184.39886 325.34225,197.06215 321.45561,210.49425 C 316.96787,226.00375 334.80258,253.63393 362.62544,252.50687 L 583.4588,239.59683 L 582.93177,285.852 z " />
+      <path
+         id="path14588"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 108.60035,251.76407 C 110.39975,246.36586 194.33551,41.815551 194.33551,41.815551 C 204.53449,23.526361 218.83992,13.450051 237.52117,12.125404 L 295.10207,12.125404 L 294.78398,45.941389 L 239.266,45.941389 C 232.48018,45.301217 227.37783,49.579445 223.12595,61.608982 L 139.45372,265.8412 C 131.31921,284.84108 100.39972,278.15819 108.60035,251.76407 z " />
+      <path
+         id="path17247"
+         style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:39.38558578;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(0.74724,0,0,0.74724,555.8824,49.18351)"
+         d="M 136.75462,282.03583 C 136.75462,357.06643 75.930301,417.89075 0.8997,417.89075 C -74.130901,417.89075 -134.95522,357.06643 -134.95522,282.03583 C -134.95522,207.00523 -74.130901,146.18091 0.8997,146.18091 C 75.930301,146.18091 136.75462,207.00523 136.75462,282.03583 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1022-12.svg	(revision 36424)
@@ -0,0 +1,94 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1022-12.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="163.66908"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5588"
+     transform="translate(218.5742,-400.6013)">
+    <path
+       id="text5568"
+       d="M -33.941422,712.1561 L -33.941422,669.1521 L -39.084269,669.1521 L -39.084269,661.31538 L -33.941422,661.31538 L -33.941422,654.60519 C -33.941431,649.87057 -32.635312,646.38487 -30.023063,644.14807 C -27.410838,641.91141 -24.112889,640.79305 -20.129206,640.79298 L -13.516975,640.79298 L -13.516975,650.39296 L -19.296554,650.39296 C -22.267997,650.39302 -23.753707,651.7971 -23.753688,654.60519 L -23.753688,661.31538 L -13.516975,661.31538 L -13.516975,669.1521 L -23.753688,669.1521 L -23.753688,712.1561 L -33.941422,712.1561 z M -7.7373948,712.1561 L -7.7373948,661.31538 L 2.4993188,661.31538 L 2.4993188,666.75211 L 2.6952367,666.75211 C 5.8625569,662.73584 10.270707,660.72768 15.919699,660.72763 C 19.642107,660.72768 23.184953,662.0338 26.548249,664.64599 L 19.152346,673.4623 C 16.931911,671.79704 14.678856,670.96439 12.393176,670.96434 C 9.8788711,670.96439 7.601327,671.8052 5.560537,673.48679 C 3.5197069,675.16845 2.4993018,677.87049 2.4993188,681.59289 L 2.4993188,712.1561 L -7.7373948,712.1561 z M 70.629794,690.60512 L 38.989043,690.60512 C 38.989029,694.78472 40.123719,697.9194 42.393118,700.00918 C 44.662481,702.09898 47.560431,703.14388 51.086978,703.14387 C 55.299183,703.14388 59.021621,701.51123 62.254301,698.24592 L 69.650205,704.56428 C 67.135881,707.50305 64.303237,709.601 61.152263,710.85814 C 58.001216,712.11528 54.71143,712.74385 51.282896,712.74385 C 46.058395,712.74385 40.997186,711.05406 36.099253,707.67447 C 31.201298,704.2949 28.752325,697.38063 28.75233,686.93166 C 28.752325,677.03784 31.013543,670.19704 35.535989,666.40925 C 40.058413,662.62155 44.784929,660.72768 49.715552,660.72763 C 55.299183,660.72768 60.180801,662.66237 64.36042,666.5317 C 68.539959,670.40112 70.629748,675.61743 70.629794,682.18065 L 70.629794,690.60512 z M 38.989043,682.18065 L 60.44206,682.18065 C 60.27876,678.36028 59.201212,675.43784 57.209414,673.41332 C 55.217551,671.38887 52.719599,670.37663 49.715552,670.37659 C 46.678801,670.37663 44.15636,671.38887 42.14822,673.41332 C 40.140046,675.43784 39.086988,678.36028 38.989043,682.18065 L 38.989043,682.18065 z M 81.699159,712.1561 L 81.699159,661.31538 L 91.935873,661.31538 L 91.935873,712.1561 L 81.699159,712.1561 z M 81.699159,651.02969 L 81.699159,640.79298 L 91.935873,640.79298 L 91.935873,651.02969 L 81.699159,651.02969 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="g5571"
+       transform="matrix(0.368756,0,0,0.368756,-99.2002,446.1241)">
+      <path
+         id="path4749"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 438.12826,429.16927 C 375.32987,426.00501 282.92602,437.06422 251.92375,397.77007 C 237.71768,323.00073 197.12299,285.36345 127.4223,284.58694 C 84.626532,201.93866 162.31092,188.98722 215.41306,167.75274 C 218.78636,206.16837 216.71935,246.10015 277.48123,268.52224 C 279.92034,256.63453 284.90432,246.92813 300.84807,246.61583 L 390.66436,246.98094 L 454.19295,197.3264 C 464.45935,213.65423 484.83147,234.57558 484.86193,246.25072 L 581.25015,246.61583 C 588.2694,252.59444 594.22298,268.45864 580.15483,284.22184 C 522.41354,282.46908 417.46802,288.77717 438.12826,429.16927 z " />
+      <path
+         id="path5636"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 281.45311,113.13794 L 281.71128,79.094411 L 319.83363,73.920272 L 319.83363,46.902363 L 280.93677,53.36735 C 283.79727,29.02724 299.44705,11.428004 333.92156,6.3312047 C 355.56786,7.8567994 378.26787,9.030436 391.1807,49.520754 C 394.96498,65.581097 392.60623,81.830116 382.63201,95.826685 C 350.34442,78.127222 326.17913,90.209532 304.13403,110.06585 L 281.45311,113.13794 z " />
+      <path
+         id="path6523"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 215.04795,186.7383 L 328.59619,100.93818 C 343.85852,92.79748 360.69029,91.248459 380.80647,103.49393 C 398.00264,119.11558 427.05087,162.39207 450.17678,191.84979 L 385.55287,240.22646 L 323.48469,153.87868 L 225.27094,229.0907 C 217.71099,215.89572 215.94199,200.40941 215.04795,186.7383 z " />
+      <path
+         id="path7410"
+         style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(0.974466,0,0,0.974466,-15.37667,-10.08382)"
+         d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z " />
+      <path
+         id="path8297"
+         style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(0.974466,0,0,0.974466,388.6178,-9.97323)"
+         d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-10.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-10.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-10.svg	(revision 36424)
@@ -0,0 +1,94 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1024-10.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="28.98207"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5543"
+     transform="translate(96.0091,-383.8141)">
+    <path
+       id="text1982"
+       d="M 88.623683,681.17807 L 88.623683,638.17408 L 83.480837,638.17408 L 83.480837,630.33736 L 88.623683,630.33736 L 88.623683,623.62717 C 88.623675,618.89255 89.929793,615.40684 92.542042,613.17005 C 95.154267,610.93339 98.452216,609.81502 102.4359,609.81495 L 109.04813,609.81495 L 109.04813,619.41493 L 103.26855,619.41493 C 100.29711,619.41499 98.811399,620.81907 98.811417,623.62717 L 98.811417,630.33736 L 109.04813,630.33736 L 109.04813,638.17408 L 98.811417,638.17408 L 98.811417,681.17807 L 88.623683,681.17807 z M 114.82771,681.17807 L 114.82771,630.33736 L 125.06442,630.33736 L 125.06442,635.77408 L 125.26034,635.77408 C 128.42766,631.75781 132.83581,629.74965 138.4848,629.7496 C 142.20721,629.74965 145.75006,631.05577 149.11335,633.66796 L 141.71745,642.48427 C 139.49702,640.81901 137.24396,639.98636 134.95828,639.98632 C 132.44398,639.98636 130.16643,640.82717 128.12564,642.50876 C 126.08481,644.19043 125.06441,646.89246 125.06442,650.61487 L 125.06442,681.17807 L 114.82771,681.17807 z M 193.1949,659.62709 L 161.55415,659.62709 C 161.55413,663.80669 162.68882,666.94138 164.95822,669.03116 C 167.22759,671.12096 170.12554,672.16585 173.65208,672.16584 C 177.86429,672.16585 181.58673,670.5332 184.81941,667.26789 L 192.21531,673.58625 C 189.70099,676.52502 186.86834,678.62297 183.71737,679.88011 C 180.56632,681.13725 177.27654,681.76582 173.848,681.76582 C 168.6235,681.76582 163.56229,680.07603 158.66436,676.69645 C 153.7664,673.31687 151.31743,666.4026 151.31744,655.95363 C 151.31743,646.05981 153.57865,639.21901 158.10109,635.43122 C 162.62352,631.64353 167.35003,629.74965 172.28066,629.7496 C 177.86429,629.74965 182.74591,631.68434 186.92553,635.55367 C 191.10506,639.42309 193.19485,644.63941 193.1949,651.20262 L 193.1949,659.62709 z M 161.55415,651.20262 L 183.00717,651.20262 C 182.84387,647.38225 181.76632,644.45981 179.77452,642.43529 C 177.78266,640.41085 175.2847,639.3986 172.28066,639.39856 C 169.24391,639.3986 166.72147,640.41085 164.71333,642.43529 C 162.70515,644.45981 161.65209,647.38225 161.55415,651.20262 L 161.55415,651.20262 z M 204.26426,681.17807 L 204.26426,630.33736 L 214.50098,630.33736 L 214.50098,681.17807 L 204.26426,681.17807 z M 204.26426,620.05166 L 204.26426,609.81495 L 214.50098,609.81495 L 214.50098,620.05166 L 204.26426,620.05166 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="layer1"
+       transform="matrix(0.524571,0,0,0.524571,-31.97182,443.4982)">
+      <path
+         id="path25345"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.079545,0,0,1.079545,-521.3741,-27.12071)"
+         d="M 640.23853,222.03787 C 640.23853,249.14264 618.26578,271.11539 591.16101,271.11539 C 564.05624,271.11539 542.08349,249.14264 542.08349,222.03787 C 542.08349,194.9331 564.05624,172.96035 591.16101,172.96035 C 618.26578,172.96035 640.23853,194.9331 640.23853,222.03787 L 640.23853,222.03787 z " />
+      <path
+         id="path24454"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 285.83418,10.247082 C 288.65554,6.9807461 291.87058,4.1737036 297.80466,4.5388804 L 554.11195,4.5388804 L 681.49562,105.68157 C 682.90126,108.65248 683.61253,110.92902 683.96915,112.85091 L 684.45326,202.47755 C 682.08558,207.61498 679.30008,212.00034 674.33227,212.45753 L 644.76683,212.45753 C 644.76683,124.83077 515.22193,124.6518 515.22193,212.45753 L 182.38817,212.45753 C 182.38817,125.17065 51.857393,124.83574 51.857393,212.45753 L 15.791737,212.45753 C 12.71653,211.01909 9.9497784,212.35674 5.8866518,202.02701 L 5.492299,137.57457 C 7.5896054,131.71045 10.205427,129.47594 12.815364,127.20023 L 200.16379,96.077198 L 285.83418,10.247082 z " />
+      <path
+         id="path25343"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.079545,0,0,1.079545,-58.73586,-27.14299)"
+         d="M 640.23853,222.03787 C 640.23853,249.14264 618.26578,271.11539 591.16101,271.11539 C 564.05624,271.11539 542.08349,249.14264 542.08349,222.03787 C 542.08349,194.9331 564.05624,172.96035 591.16101,172.96035 C 618.26578,172.96035 640.23853,194.9331 640.23853,222.03787 L 640.23853,222.03787 z " />
+      <path
+         id="path25349"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 226.41173,97.07302 L 290.25519,34.075171 C 291.69464,32.851906 292.82676,31.167654 295.32884,31.538345 L 408.85181,31.538345 L 408.85181,108.70014 L 231.27398,108.70014 C 224.51388,106.03369 223.59914,101.99187 226.41173,97.07302 z " />
+      <path
+         id="path26236"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 585.23723,89.186408 L 530.52565,34.0864 C 529.0862,32.863135 527.95408,31.178883 525.452,31.549574 L 429.94598,31.549574 L 429.94598,108.71136 L 592.71536,108.71136 C 600.41757,107.17544 590.2821,96.783985 585.23723,89.186408 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-11.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-11.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-11.svg	(revision 36424)
@@ -0,0 +1,108 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1024-11.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="58.945703"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5496"
+     transform="translate(190.2899,-339.4851)">
+    <path
+       id="text5469"
+       d="M -5.6572235,628.65005 L -5.6572235,585.64606 L -10.80007,585.64606 L -10.80007,577.80934 L -5.6572235,577.80934 L -5.6572235,571.09915 C -5.6572318,566.36453 -4.3511134,562.87883 -1.7388642,560.64203 C 0.87336042,558.40537 4.1713095,557.28701 8.1549929,557.28694 L 14.767224,557.28694 L 14.767224,566.88692 L 8.9876443,566.88692 C 6.0162018,566.88698 4.5304921,568.29105 4.5305106,571.09915 L 4.5305106,577.80934 L 14.767224,577.80934 L 14.767224,585.64606 L 4.5305106,585.64606 L 4.5305106,628.65005 L -5.6572235,628.65005 z M 20.546804,628.65005 L 20.546804,577.80934 L 30.783518,577.80934 L 30.783518,583.24607 L 30.979436,583.24607 C 34.146756,579.2298 38.554905,577.22164 44.203898,577.22159 C 47.926305,577.22164 51.469152,578.52776 54.832448,581.13995 L 47.436544,589.95626 C 45.21611,588.29099 42.963055,587.45834 40.677375,587.4583 C 38.16307,587.45834 35.885526,588.29916 33.844736,589.98075 C 31.803906,591.66241 30.783501,594.36444 30.783518,598.08685 L 30.783518,628.65005 L 20.546804,628.65005 z M 98.913993,607.09908 L 67.273242,607.09908 C 67.273228,611.27868 68.407918,614.41336 70.677317,616.50314 C 72.94668,618.59294 75.84463,619.63784 79.371176,619.63783 C 83.583382,619.63784 87.305819,618.00519 90.5385,614.73988 L 97.934403,621.05823 C 95.42008,623.99701 92.587436,626.09496 89.436462,627.3521 C 86.285414,628.60924 82.995628,629.23781 79.567094,629.23781 C 74.342594,629.23781 69.281385,627.54802 64.383452,624.16843 C 59.485496,620.78885 57.036524,613.87459 57.036528,603.42562 C 57.036524,593.53179 59.297742,586.691 63.820188,582.90321 C 68.342612,579.11551 73.069128,577.22164 77.999751,577.22159 C 83.583382,577.22164 88.464999,579.15633 92.644618,583.02566 C 96.824158,586.89508 98.913947,592.11139 98.913993,598.67461 L 98.913993,607.09908 z M 67.273242,598.67461 L 88.726259,598.67461 C 88.562958,594.85424 87.485411,591.9318 85.493613,589.90728 C 83.501749,587.88283 81.003798,586.87059 77.999751,586.87055 C 74.963,586.87059 72.440559,587.88283 70.432419,589.90728 C 68.424244,591.9318 67.371186,594.85424 67.273242,598.67461 L 67.273242,598.67461 z M 109.98336,628.65005 L 109.98336,577.80934 L 120.22007,577.80934 L 120.22007,628.65005 L 109.98336,628.65005 z M 109.98336,567.52365 L 109.98336,557.28694 L 120.22007,557.28694 L 120.22007,567.52365 L 109.98336,567.52365 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="g1893"
+       transform="matrix(0.416646,0,0,0.416646,-150.0806,408.9311)">
+      <path
+         id="path1895"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 160.58312,199.08511 C 160.58312,226.81161 138.10636,249.28837 110.37986,249.28837 C 82.653362,249.28837 60.176601,226.81161 60.176601,199.08511 C 60.176601,171.35862 82.653362,148.88185 110.37986,148.88185 C 138.10636,148.88185 160.58312,171.35862 160.58312,199.08511 L 160.58312,199.08511 z " />
+      <path
+         id="path1897"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 270.54027,7.362515 C 273.21369,4.2674527 276.26014,1.6076003 281.88306,1.9536287 L 524.75063,1.9536287 L 645.45481,97.7928 C 646.78674,100.60793 647.46071,102.76509 647.79863,104.58621 L 648.25736,189.51319 C 646.01383,194.38123 643.37439,198.53664 638.66707,198.96986 L 610.65193,198.96986 C 610.65193,115.93789 487.89984,115.76831 487.89984,198.96986 L 172.51855,198.96986 C 172.51855,116.25995 48.832289,115.9426 48.832289,198.96986 L 14.657772,198.96986 C 11.743816,197.60684 9.1221418,198.87435 5.2720693,189.08627 L 4.8983948,128.01346 C 6.8857269,122.45683 9.3643852,120.33949 11.837468,118.18311 L 189.36209,88.692043 L 270.54027,7.362515 z " />
+      <path
+         id="path1899"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 598.96242,199.064 C 598.96242,226.7905 576.48566,249.26726 548.75916,249.26726 C 521.03266,249.26726 498.5559,226.7905 498.5559,199.064 C 498.5559,171.33751 521.03266,148.86074 548.75916,148.86074 C 576.48566,148.86074 598.96242,171.33751 598.96242,199.064 L 598.96242,199.064 z " />
+      <path
+         id="path1901"
+         style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 554.24382,82.162579 L 502.4011,29.951795 C 501.03713,28.792673 499.96437,27.196736 497.59349,27.54799 L 407.09542,27.54799 L 407.09542,100.66372 L 561.32983,100.66372 C 568.62816,99.208338 559.02416,89.361769 554.24382,82.162579 z " />
+      <path
+         id="path28093"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 787.13419,173.56057 L 707.90245,173.56057 L 707.90245,186.47499 L 658.86255,186.47499 L 658.86255,199.56394 L 782.94573,199.56394 C 783.89147,190.82108 783.62571,181.87631 787.13419,173.56057 z " />
+      <path
+         id="path1904"
+         style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 214.23369,89.635648 L 274.72946,29.941154 C 276.09343,28.782032 277.16619,27.186096 279.53707,27.537349 L 387.10735,27.537349 L 387.10735,100.65309 L 218.84099,100.65309 C 212.43536,98.126456 211.56859,94.296573 214.23369,89.635648 z " />
+      <path
+         id="path26315"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 893.91893,199.09866 C 893.91893,226.82516 871.44217,249.30192 843.71567,249.30192 C 815.98917,249.30192 793.51241,226.82516 793.51241,199.09866 C 793.51241,171.37217 815.98917,148.8954 843.71567,148.8954 C 871.44217,148.8954 893.91893,171.37217 893.91893,199.09866 L 893.91893,199.09866 z " />
+      <path
+         id="path26317"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 708.07697,162.39134 L 708.07697,48.604793 C 710.54619,30.868706 719.63699,29.163014 727.97217,26.615369 L 960.08276,26.615369 C 966.40555,28.250356 974.14601,29.599665 978.05824,47.208639 L 978.05824,162.39134 L 892.19479,162.39134 C 874.56835,126.20501 813.66112,126.0422 794.98756,162.39134 L 708.07697,162.39134 z " />
+      <path
+         id="path27206"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 978.1455,173.56057 L 965.66738,199.56394 L 904.2366,199.56394 C 902.40617,190.85015 902.52331,181.85814 897.77939,173.56057 L 978.1455,173.56057 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-12.svg	(revision 36424)
@@ -0,0 +1,103 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1024-12.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="193.63271"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5441"
+     transform="translate(62.33732,-441.1226)">
+    <path
+       id="text1982"
+       d="M 122.29545,745.82785 L 122.29545,702.82386 L 117.1526,702.82386 L 117.1526,694.98714 L 122.29545,694.98714 L 122.29545,688.27695 C 122.29544,683.54233 123.60156,680.05662 126.21381,677.81983 C 128.82604,675.58317 132.12398,674.4648 136.10767,674.46473 L 142.7199,674.46473 L 142.7199,684.06471 L 136.94032,684.06471 C 133.96888,684.06477 132.48317,685.46885 132.48319,688.27695 L 132.48319,694.98714 L 142.7199,694.98714 L 142.7199,702.82386 L 132.48319,702.82386 L 132.48319,745.82785 L 122.29545,745.82785 z M 148.49948,745.82785 L 148.49948,694.98714 L 158.73619,694.98714 L 158.73619,700.42386 L 158.93211,700.42386 C 162.09943,696.40759 166.50758,694.39943 172.15657,694.39938 C 175.87898,694.39943 179.42183,695.70555 182.78512,698.31774 L 175.38922,707.13405 C 173.16878,705.46879 170.91573,704.63614 168.63005,704.6361 C 166.11574,704.63614 163.8382,705.47695 161.79741,707.15854 C 159.75658,708.84021 158.73618,711.54224 158.73619,715.26465 L 158.73619,745.82785 L 148.49948,745.82785 z M 226.86667,724.27687 L 195.22592,724.27687 C 195.2259,728.45647 196.36059,731.59116 198.62999,733.68094 C 200.89935,735.77074 203.7973,736.81563 207.32385,736.81562 C 211.53606,736.81563 215.25849,735.18298 218.49118,731.91767 L 225.88708,738.23603 C 223.37276,741.1748 220.54011,743.27275 217.38914,744.52989 C 214.23809,745.78703 210.9483,746.4156 207.51977,746.4156 C 202.29527,746.4156 197.23406,744.72581 192.33613,741.34623 C 187.43817,737.96665 184.9892,731.05238 184.9892,720.60341 C 184.9892,710.70959 187.25042,703.86879 191.77286,700.081 C 196.29529,696.29331 201.0218,694.39943 205.95243,694.39938 C 211.53606,694.39943 216.41767,696.33412 220.59729,700.20345 C 224.77683,704.07287 226.86662,709.28919 226.86667,715.8524 L 226.86667,724.27687 z M 195.22592,715.8524 L 216.67893,715.8524 C 216.51563,712.03203 215.43809,709.10959 213.44629,707.08507 C 211.45442,705.06063 208.95647,704.04839 205.95243,704.04834 C 202.91567,704.04839 200.39323,705.06063 198.38509,707.08507 C 196.37692,709.10959 195.32386,712.03203 195.22592,715.8524 L 195.22592,715.8524 z M 237.93603,745.82785 L 237.93603,694.98714 L 248.17275,694.98714 L 248.17275,745.82785 L 237.93603,745.82785 z M 237.93603,684.70144 L 237.93603,674.46473 L 248.17275,674.46473 L 248.17275,684.70144 L 237.93603,684.70144 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="g2148"
+       transform="matrix(0.337061,0,0,0.337061,13.98148,491.7313)">
+      <path
+         id="path2135"
+         style="fill:black;fill-rule:evenodd;stroke:none"
+         d="M 295.78419,86.816926 L 295.78419,335.08252 L 687.71625,335.4031 C 664.71649,354.19396 650.35734,380.09418 650.54503,414.08813 L 261.47933,413.85667 C 257.75238,281.97351 70.642616,282.42223 66.576854,413.09434 C 38.473995,412.88466 34.575813,406.50199 34.30487,380.61469 L 34.304868,281.61469 C 33.952015,237.37253 28.42681,266.57731 61.177014,182.67997 C 94.875059,93.246445 85.585107,101.51291 116.0648,99.204795 L 295.78419,86.816926 z M 217.93865,233.19966 L 219.48981,127.72046 L 119.43969,133.92512 C 101.20003,135.14704 101.04823,135.26154 94.62105,156.41701 L 69.026832,224.66825 C 60.428592,245.6025 61.79713,251.77115 85.314062,248.71131 L 217.93865,233.19966 z M 966.63494,335.59074 L 966.82552,391.36792 L 902.21802,414.23783 L 845.4914,414.20156 C 845.7223,381.85903 832.28136,354.65711 808.44981,335.54893 L 966.63494,335.59074 z " />
+      <rect
+         id="rect2137"
+         style="fill:black;stroke:none"
+         y="12.158683"
+         x="335.82718"
+         height="301.70154"
+         width="631.32404" />
+      <circle
+         id="circle2139"
+         style="fill:black;stroke:none"
+         r="77"
+         cy="412"
+         cx="164"
+         sodipodi:cx="164"
+         sodipodi:cy="412"
+         sodipodi:rx="77"
+         sodipodi:ry="77" />
+      <circle
+         id="circle2141"
+         style="fill:black;stroke:none"
+         r="77"
+         cy="412"
+         cx="748"
+         sodipodi:cx="748"
+         sodipodi:cy="412"
+         sodipodi:rx="77"
+         sodipodi:ry="77" />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-13.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-13.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-13.svg	(revision 36424)
@@ -0,0 +1,124 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1024-13.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="-75.741303"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5394"
+     transform="translate(230.6961,-498.63)">
+    <path
+       id="text5360"
+       d="M -46.063323,790.27457 L -46.063323,747.27057 L -51.206169,747.27057 L -51.206169,739.43385 L -46.063323,739.43385 L -46.063323,732.72366 C -46.063331,727.98904 -44.757213,724.50334 -42.144964,722.26654 C -39.532739,720.02988 -36.23479,718.91152 -32.251106,718.91145 L -25.638875,718.91145 L -25.638875,728.51143 L -31.418455,728.51143 C -34.389897,728.51149 -35.875607,729.91557 -35.875589,732.72366 L -35.875589,739.43385 L -25.638875,739.43385 L -25.638875,747.27057 L -35.875589,747.27057 L -35.875589,790.27457 L -46.063323,790.27457 z M -19.859295,790.27457 L -19.859295,739.43385 L -9.6225818,739.43385 L -9.6225818,744.87058 L -9.4266638,744.87058 C -6.2593437,740.85431 -1.8511939,738.84615 3.7977988,738.8461 C 7.520206,738.84615 11.063052,740.15227 14.426348,742.76446 L 7.0304452,751.58077 C 4.8100102,749.91551 2.5569559,749.08285 0.2712754,749.08281 C -2.2430295,749.08285 -4.5205735,749.92367 -6.5613636,751.60526 C -8.6021937,753.28692 -9.6225987,755.98896 -9.6225818,759.71136 L -9.6225818,790.27457 L -19.859295,790.27457 z M 58.507894,768.72359 L 26.867143,768.72359 C 26.867128,772.90319 28.001819,776.03787 30.271217,778.12765 C 32.54058,780.21745 35.438531,781.26235 38.965077,781.26234 C 43.177282,781.26235 46.89972,779.6297 50.132401,776.36439 L 57.528304,782.68274 C 55.013981,785.62152 52.181337,787.71947 49.030362,788.97661 C 45.879315,790.23375 42.589529,790.86232 39.160995,790.86232 C 33.936494,790.86232 28.875285,789.17253 23.977353,785.79294 C 19.079397,782.41336 16.630425,775.4991 16.630429,765.05013 C 16.630425,755.15631 18.891642,748.31551 23.414089,744.52772 C 27.936513,740.74002 32.663029,738.84615 37.593651,738.8461 C 43.177282,738.84615 48.0589,740.78084 52.238519,744.65017 C 56.418058,748.51959 58.507848,753.7359 58.507894,760.29912 L 58.507894,768.72359 z M 26.867143,760.29912 L 48.32016,760.29912 C 48.156859,756.47875 47.079311,753.55631 45.087513,751.53179 C 43.09565,749.50734 40.597699,748.4951 37.593651,748.49506 C 34.556901,748.4951 32.034459,749.50734 30.02632,751.53179 C 28.018145,753.55631 26.965087,756.47875 26.867143,760.29912 L 26.867143,760.29912 z M 69.577259,790.27457 L 69.577259,739.43385 L 79.813972,739.43385 L 79.813972,790.27457 L 69.577259,790.27457 z M 69.577259,729.14816 L 69.577259,718.91145 L 79.813972,718.91145 L 79.813972,729.14816 L 69.577259,729.14816 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="g5363"
+       transform="matrix(0.412424,0,0,0.412424,-185.7745,564.3572)">
+      <path
+         id="path11867"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 948.58272,181.11452 L 948.58272,212.00923 L 904.55776,212.00923 C 901.60557,200.82583 896.46811,190.20899 885.45863,181.11452 L 948.58272,181.11452 z " />
+      <path
+         id="path10081"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 187.42838,5.0734714 L 532.683,5.0734714 L 532.683,169.79304 L 187.42838,169.79304 L 187.42838,5.0734714 z " />
+      <path
+         id="path10968"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 579.57758,4.9475632 L 948.64201,4.9475632 L 948.64201,169.66713 L 579.57758,169.66713 L 579.57758,4.9475632 z " />
+      <path
+         id="path10970"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.10599899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.090164,0,0,1.090164,-86.75925,-32.25117)"
+         d="M 900.1042,233.89624 C 900.1042,254.86716 883.10391,271.86745 862.13299,271.86745 C 841.16208,271.86745 824.16179,254.86716 824.16179,233.89624 C 824.16179,212.92532 841.16208,195.92504 862.13299,195.92504 C 883.10391,195.92504 900.1042,212.92532 900.1042,233.89624 z " />
+      <path
+         id="path10972"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.10599899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.090164,0,0,1.090164,-288.7536,-32.29364)"
+         d="M 900.1042,233.89624 C 900.1042,254.86716 883.10391,271.86745 862.13299,271.86745 C 841.16208,271.86745 824.16179,254.86716 824.16179,233.89624 C 824.16179,212.92532 841.16208,195.92504 862.13299,195.92504 C 883.10391,195.92504 900.1042,212.92532 900.1042,233.89624 z " />
+      <path
+         id="path10974"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.10599899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.090164,0,0,1.090164,-525.918,-32.41613)"
+         d="M 900.1042,233.89624 C 900.1042,254.86716 883.10391,271.86745 862.13299,271.86745 C 841.16208,271.86745 824.16179,254.86716 824.16179,233.89624 C 824.16179,212.92532 841.16208,195.92504 862.13299,195.92504 C 883.10391,195.92504 900.1042,212.92532 900.1042,233.89624 z " />
+      <path
+         id="path10976"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.10599899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.090164,0,0,1.090164,-846.4946,-32.29364)"
+         d="M 900.1042,233.89624 C 900.1042,254.86716 883.10391,271.86745 862.13299,271.86745 C 841.16208,271.86745 824.16179,254.86716 824.16179,233.89624 C 824.16179,212.92532 841.16208,195.92504 862.13299,195.92504 C 883.10391,195.92504 900.1042,212.92532 900.1042,233.89624 z " />
+      <path
+         id="path10980"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 555.58979,180.92026 L 555.58979,211.81497 L 599.61475,211.81497 C 602.56694,200.63157 607.7044,190.01473 618.71388,180.92026 L 555.58979,180.92026 z " />
+      <path
+         id="path11871"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 684.37536,181.11451 C 695.46489,190.5657 698.81792,200.8602 702.48185,212.00922 L 801.50106,212.00922 C 804.45325,200.82582 809.59071,190.20898 820.60019,181.11451 L 684.37536,181.11451 z " />
+      <path
+         id="path11875"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 532.6833,180.77713 L 532.84234,212.30802 L 498.57982,222.89377 L 466.55091,222.96412 C 468.00842,210.31082 458.55157,189.47039 445.86132,180.93618 L 532.6833,180.77713 z " />
+      <path
+         id="path11879"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 164.38292,46.440644 L 60.571013,51.8735 C 56.231301,53.218337 52.575838,55.171397 50.919898,58.901809 L 22.700623,132.93384 L 21.613992,140.70413 L 21.621535,212.97526 C 22.503535,219.59402 26.862349,221.74259 31.897406,223.02171 L 40.397747,223.02171 C 40.397747,154.18672 147.11778,154.36604 147.11778,223.02171 L 361.41037,223.02171 C 359.95286,210.36841 369.40971,189.52798 382.09996,180.99377 L 164.61964,180.96791 L 164.38292,46.440644 z " />
+      <path
+         id="path11883"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 122.58432,126.2727 L 122.58432,67.11733 L 62.754174,71.165986 C 60.574695,71.531761 59.010637,72.974522 58.030742,75.439568 L 38.912086,126.2727 C 38.590374,128.0721 37.82559,129.87151 38.912086,131.67091 C 39.608067,133.31708 40.918089,134.14453 42.510892,134.59494 L 122.58432,126.2727 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-14.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-14.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-14.svg	(revision 36424)
@@ -0,0 +1,110 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1024-14.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="-86.706583"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5324"
+     transform="translate(201.0649,-476.0947)">
+    <path
+       id="text1982"
+       d="M -16.432122,774.11215 L -16.432122,731.10816 L -21.574969,731.10816 L -21.574969,723.27144 L -16.432122,723.27144 L -16.432122,716.56125 C -16.43213,711.82663 -15.126012,708.34092 -12.513763,706.10413 C -9.9015381,703.86747 -6.603589,702.7491 -2.6199056,702.74903 L 3.9923257,702.74903 L 3.9923257,712.34901 L -1.7872542,712.34901 C -4.7586967,712.34907 -6.2444064,713.75315 -6.2443879,716.56125 L -6.2443879,723.27144 L 3.9923257,723.27144 L 3.9923257,731.10816 L -6.2443879,731.10816 L -6.2443879,774.11215 L -16.432122,774.11215 z M 9.7719054,774.11215 L 9.7719054,723.27144 L 20.008619,723.27144 L 20.008619,728.70816 L 20.204537,728.70816 C 23.371857,724.69189 27.780007,722.68374 33.429,722.68369 C 37.151407,722.68374 40.694253,723.98986 44.057549,726.60204 L 36.661646,735.41835 C 34.441211,733.75309 32.188157,732.92044 29.902476,732.9204 C 27.388171,732.92044 25.110627,733.76125 23.069837,735.44284 C 21.029007,737.12451 20.008602,739.82654 20.008619,743.54895 L 20.008619,774.11215 L 9.7719054,774.11215 z M 88.139095,752.56117 L 56.498343,752.56117 C 56.498329,756.74078 57.633019,759.87546 59.902418,761.96524 C 62.171781,764.05504 65.069731,765.09993 68.596278,765.09992 C 72.808483,765.09993 76.530921,763.46729 79.763602,760.20198 L 87.159505,766.52033 C 84.645182,769.4591 81.812537,771.55706 78.661563,772.81419 C 75.510516,774.07133 72.22073,774.6999 68.792196,774.6999 C 63.567695,774.6999 58.506486,773.01011 53.608554,769.63053 C 48.710598,766.25095 46.261626,759.33669 46.26163,748.88771 C 46.261626,738.99389 48.522843,732.1531 53.045289,728.36531 C 57.567714,724.57761 62.29423,722.68374 67.224852,722.68369 C 72.808483,722.68374 77.690101,724.61842 81.86972,728.48776 C 86.049259,732.35718 88.139049,737.57349 88.139095,744.1367 L 88.139095,752.56117 z M 56.498343,744.1367 L 77.951361,744.1367 C 77.78806,740.31634 76.710512,737.3939 74.718714,735.36937 C 72.726851,733.34493 70.228899,732.33269 67.224852,732.33265 C 64.188101,732.33269 61.66566,733.34493 59.657521,735.36937 C 57.649346,737.3939 56.596288,740.31634 56.498343,744.1367 L 56.498343,744.1367 z M 99.20846,774.11215 L 99.20846,723.27144 L 109.44517,723.27144 L 109.44517,774.11215 L 99.20846,774.11215 z M 99.20846,712.98575 L 99.20846,702.74903 L 109.44517,702.74903 L 109.44517,712.98575 L 99.20846,712.98575 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="layer1"
+       transform="matrix(0.549144,0,0,0.549144,-142.6758,536.1839)">
+      <path
+         id="path1966"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 31.761217,26.619391 L 31.306216,5.7140301 C 31.754181,4.3093648 31.994305,2.6968585 33.909231,2.7591539 L 628.71325,2.3775139 C 655.69631,7.7477606 661.04445,77.952922 675,117.14286 L 675,202.14286 C 668.20192,218.11846 660.86056,219.42544 653.57143,222.14286 L 565,221.42857 C 565,144.20059 447.85714,144.63084 447.85714,221.42857 L 210,221.42857 C 210,144.48294 95.714286,144.46188 95.714286,221.42857 L 13.571429,221.42857 C 9.6780696,220.28672 7.0245746,216.66514 4.6428571,212.5 L 5.5969572,136.28675 L 40.376483,35.905105 C 41.587822,29.237159 34.6359,29.712067 31.761217,26.619391 z " />
+      <path
+         id="path2856"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:8, 2;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.08125,0,0,1.08125,-58.95434,-28.22524)"
+         d="M 566.16677,231.14012 C 566.17704,254.99373 546.84274,274.33634 522.98914,274.33634 C 499.13553,274.33634 479.80123,254.99373 479.8115,231.14012 C 479.80123,207.28651 499.13553,187.9439 522.98914,187.9439 C 546.84274,187.9439 566.17704,207.28651 566.16677,231.14012 L 566.16677,231.14012 z " />
+      <path
+         id="path3745"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:8, 2;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.08125,0,0,1.08125,-412.2014,-27.95538)"
+         d="M 566.16677,231.14012 C 566.17704,254.99373 546.84274,274.33634 522.98914,274.33634 C 499.13553,274.33634 479.80123,254.99373 479.8115,231.14012 C 479.80123,207.28651 499.13553,187.9439 522.98914,187.9439 C 546.84274,187.9439 566.17704,207.28651 566.16677,231.14012 L 566.16677,231.14012 z " />
+      <path
+         id="path3747"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 531.61675,40.718007 L 552.142,110.69117 C 553.35031,113.54485 554.53622,116.41596 557.8805,117.60833 L 629.04027,117.43371 C 631.87882,114.96101 634.80496,112.64856 635.25102,107.54413 L 615.09087,37.58684 C 613.44354,32.067784 611.173,30.495693 608.80472,29.542611 L 536.28374,29.633887 C 532.7483,31.744775 531.50679,35.690805 531.61675,40.718007 z " />
+      <path
+         id="path4634"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 429.39705,40.58628 L 449.9223,110.55944 C 451.13061,113.41312 452.31652,116.28423 455.6608,117.4766 L 526.82057,117.30198 C 529.65912,114.82928 532.58526,112.51683 533.03132,107.4124 L 512.87117,37.455113 C 511.22384,31.936057 508.9533,30.363966 506.58502,29.410884 L 434.06404,29.50216 C 430.5286,31.613048 429.28709,35.559078 429.39705,40.58628 z " />
+      <path
+         id="path4636"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 327.98862,40.586273 L 348.51387,110.55944 C 349.72218,113.41312 350.90809,116.28423 354.25237,117.4766 L 425.41214,117.30198 C 428.25069,114.82928 431.17683,112.51683 431.62289,107.4124 L 411.46274,37.455106 C 409.81541,31.93605 407.54487,30.363959 405.17659,29.410877 L 332.65561,29.502153 C 329.12017,31.613041 327.87866,35.559071 327.98862,40.586273 z " />
+      <path
+         id="path4638"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 227.1726,40.586276 L 247.69785,110.55944 C 248.90616,113.41312 250.09207,116.28423 253.43635,117.4766 L 324.59612,117.30198 C 327.43467,114.82928 330.36081,112.51683 330.80687,107.4124 L 310.64672,37.455109 C 308.99939,31.936053 306.72885,30.363962 304.36057,29.41088 L 231.83959,29.502156 C 228.30415,31.613044 227.06264,35.559074 227.1726,40.586276 z " />
+      <path
+         id="path4640"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 142.51433,35.694816 L 142.50232,110.96203 C 143.71063,113.81571 145.80931,116.50427 149.15359,117.69664 L 223.05166,117.43074 C 225.89021,114.95804 228.81635,112.64559 229.26241,107.54116 L 209.10226,37.583869 C 207.45493,32.064813 205.18439,30.492722 202.81611,29.53964 L 148.00281,29.448363 C 144.46737,31.559251 143.68225,31.580382 142.51433,35.694816 z " />
+      <path
+         id="path4642"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 124.8189,37.998446 L 124.68904,110.81147 C 123.48073,113.66515 122.29482,116.53626 118.95054,117.72863 L 35.269552,117.29584 C 32.431002,114.82314 29.504862,112.51069 29.058802,107.40626 L 54.124173,37.707145 C 55.771503,32.188089 58.04204,30.615998 60.41032,29.662916 L 120.15191,29.883276 C 123.68735,31.994164 124.92886,32.971244 124.8189,37.998446 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-15.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-15.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-15.svg	(revision 36424)
@@ -0,0 +1,122 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1024-15.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="-66.213809"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5262"
+     transform="translate(-41.37167,-408.4354)">
+    <path
+       id="text5229"
+       d="M 226.00445,730.27798 L 226.00445,687.27399 L 220.8616,687.27399 L 220.8616,679.43727 L 226.00445,679.43727 L 226.00445,672.72708 C 226.00444,667.99246 227.31056,664.50676 229.92281,662.26996 C 232.53503,660.0333 235.83298,658.91494 239.81667,658.91487 L 246.4289,658.91487 L 246.4289,668.51485 L 240.64932,668.51485 C 237.67788,668.51491 236.19217,669.91898 236.19219,672.72708 L 236.19219,679.43727 L 246.4289,679.43727 L 246.4289,687.27399 L 236.19219,687.27399 L 236.19219,730.27798 L 226.00445,730.27798 z M 252.20848,730.27798 L 252.20848,679.43727 L 262.44519,679.43727 L 262.44519,684.874 L 262.64111,684.874 C 265.80843,680.85773 270.21658,678.84957 275.86557,678.84952 C 279.58798,678.84957 283.13083,680.15569 286.49412,682.76788 L 279.09822,691.58419 C 276.87778,689.91892 274.62473,689.08627 272.33905,689.08623 C 269.82474,689.08627 267.5472,689.92709 265.50641,691.60868 C 263.46558,693.29034 262.44518,695.99237 262.44519,699.71478 L 262.44519,730.27798 L 252.20848,730.27798 z M 330.57567,708.72701 L 298.93492,708.72701 C 298.9349,712.90661 300.06959,716.04129 302.33899,718.13107 C 304.60835,720.22087 307.5063,721.26577 311.03285,721.26576 C 315.24506,721.26577 318.96749,719.63312 322.20017,716.36781 L 329.59608,722.68616 C 327.08175,725.62494 324.24911,727.72289 321.09814,728.98003 C 317.94709,730.23717 314.6573,730.86574 311.22877,730.86574 C 306.00427,730.86574 300.94306,729.17595 296.04513,725.79636 C 291.14717,722.41678 288.6982,715.50252 288.6982,705.05355 C 288.6982,695.15972 290.95942,688.31893 295.48186,684.53114 C 300.00429,680.74344 304.7308,678.84957 309.66143,678.84952 C 315.24506,678.84957 320.12667,680.78426 324.30629,684.65359 C 328.48583,688.52301 330.57562,693.73932 330.57567,700.30253 L 330.57567,708.72701 z M 298.93492,700.30253 L 320.38793,700.30253 C 320.22463,696.48217 319.14709,693.55973 317.15529,691.53521 C 315.16342,689.51076 312.66547,688.49852 309.66143,688.49848 C 306.62467,688.49852 304.10223,689.51076 302.09409,691.53521 C 300.08592,693.55973 299.03286,696.48217 298.93492,700.30253 L 298.93492,700.30253 z M 341.64503,730.27798 L 341.64503,679.43727 L 351.88175,679.43727 L 351.88175,730.27798 L 341.64503,730.27798 z M 341.64503,669.15158 L 341.64503,658.91487 L 351.88175,658.91487 L 351.88175,669.15158 L 341.64503,669.15158 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="g2285"
+       transform="translate(-597.3004,408.9739)">
+      <path
+         id="path2251"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 1009.2409,214.27547 L 778.51034,214.27547 C 767.62857,214.27547 754.64651,197.1834 754.64651,186.04954 C 754.40757,167.2221 755.3126,148.96663 755.91728,130.561 C 758.8462,109.58406 766.90603,90.391773 774.90005,71.176601 C 776.86018,67.160472 779.21612,63.236208 784.00517,63.236208 L 867.61359,63.236208 C 875.20749,66.657776 883.41863,69.267175 886.87666,78.130673 C 910.87184,137.18871 958.2811,165.41624 1012.6455,175.37682 L 1012.688,211.1328 C 1012.688,212.54459 1010.7322,214.27547 1009.2409,214.27547 z " />
+      <path
+         id="path2253"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 793.875,37.03125 C 790.72173,37.03125 790.81823,43.156249 793.875,43.15625 L 807.46875,43.15625 C 818.96113,47.799678 825.74527,54.403373 828.90625,63.28125 L 834.125,63.28125 L 834.125,63.25 L 839.28125,63.25 C 842.44212,54.37242 849.22708,47.799652 860.71875,43.15625 L 874,43.15625 C 877.27802,43.15625 876.78185,37.03125 874,37.03125 L 793.875,37.03125 z M 821.53125,43.15625 L 846.59375,43.15625 C 841.19066,47.706706 835.34374,52.334774 835.34375,59.4375 L 834.125,59.4375 L 832.84375,59.4375 C 832.84372,52.31253 826.94842,47.720599 821.53125,43.15625 z " />
+      <path
+         id="path2260"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 770.43133,114.13629 L 875.52,114.13629 C 878.07188,114.13629 879.0233,108.86338 877.81594,105.56774 C 874.02206,95.426493 869.39273,75.603781 864.13539,75.603781 L 783.34848,75.603781 C 778.97076,75.603781 773.13152,95.745774 768.02304,105.81677 C 767.00828,109.81958 768.01345,114.13629 770.43133,114.13629 z " />
+      <path
+         id="path2265"
+         style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="translate(1.548102,-0.619241)"
+         d="M 787.9841,164.9391 C 787.9841,170.24006 783.68682,174.53733 778.38587,174.53733 C 773.08491,174.53733 768.78763,170.24006 768.78763,164.9391 C 768.78763,159.63814 773.08491,155.34087 778.38587,155.34087 C 783.68682,155.34087 787.9841,159.63814 787.9841,164.9391 z " />
+      <path
+         id="path2267"
+         style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="translate(80.81094,-0.619236)"
+         d="M 787.9841,164.9391 C 787.9841,170.24006 783.68682,174.53733 778.38587,174.53733 C 773.08491,174.53733 768.78763,170.24006 768.78763,164.9391 C 768.78763,159.63814 773.08491,155.34087 778.38587,155.34087 C 783.68682,155.34087 787.9841,159.63814 787.9841,164.9391 z " />
+      <path
+         id="path2271"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 913.61464,136.35817 L 913.61464,171.27826 L 897.63241,163.94395 C 896.11238,149.20714 895.97165,134.19446 895.88093,119.17179 C 901.79166,124.90194 908.13437,132.76415 913.61464,136.35817 z " />
+      <path
+         id="path2273"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 937.80693,155.40549 L 938.04009,182.28151 L 922.75735,175.87984 C 922.40312,161.14303 922.8453,159.53714 922.75458,144.51447 C 929.36479,150.12804 932.0935,151.22857 937.80693,155.40549 z " />
+      <path
+         id="path2275"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 945.69493,160.17743 L 945.69493,184.16603 C 950.07313,186.52004 955.14,187.77217 960.61567,188.37022 L 960.61567,166.27763 L 945.69493,160.17743 z " />
+      <path
+         id="path2277"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 966.7983,169.24529 L 966.7983,190.18379 C 970.62585,191.67422 974.62319,192.14594 978.66895,192.3271 L 978.66895,172.29538 L 966.7983,169.24529 z " />
+      <path
+         id="path2279"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 984.76914,174.35626 L 984.76914,193.15145 C 987.91261,194.03102 991.13362,194.5229 994.49648,194.30554 L 994.49648,176.25227 L 984.76914,174.35626 z " />
+      <path
+         id="path2281"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 999.68988,177.24149 L 999.68988,195.04746 L 1007.5212,196.36642 L 1007.5212,178.31314 L 999.68988,177.24149 z " />
+      <path
+         id="path2283"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 754.65511,229.21337 L 774.58951,229.21337 L 774.58951,219.23069 L 804.62563,219.23069 L 804.62563,229.09314 L 848.63107,229.09314 L 848.63107,219.20093 L 1012.7369,219.20093 L 1012.7369,229.24313 C 966.49324,230.93241 919.38423,232.25082 894.91493,243.27197 L 754.62535,243.27197 L 754.65511,229.21337 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-16.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-16.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-16.svg	(revision 36424)
@@ -0,0 +1,144 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1024-16.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="-60.435159"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5184"
+     transform="translate(234.7367,-398.8309)">
+    <path
+       id="text1982"
+       d="M -50.103923,714.84988 L -50.103923,671.84589 L -55.246769,671.84589 L -55.246769,664.00917 L -50.103923,664.00917 L -50.103923,657.29898 C -50.103931,652.56436 -48.797813,649.07866 -46.185563,646.84186 C -43.573339,644.6052 -40.27539,643.48684 -36.291706,643.48676 L -29.679475,643.48676 L -29.679475,653.08674 L -35.459055,653.08674 C -38.430497,653.08681 -39.916207,654.49088 -39.916189,657.29898 L -39.916189,664.00917 L -29.679475,664.00917 L -29.679475,671.84589 L -39.916189,671.84589 L -39.916189,714.84988 L -50.103923,714.84988 z M -23.899895,714.84988 L -23.899895,664.00917 L -13.663182,664.00917 L -13.663182,669.44589 L -13.467264,669.44589 C -10.299944,665.42963 -5.8917938,663.42147 -0.24280107,663.42142 C 3.4796062,663.42147 7.0224525,664.72759 10.385748,667.33978 L 2.9898453,676.15608 C 0.76941036,674.49082 -1.483644,673.65817 -3.7693244,673.65813 C -6.2836293,673.65817 -8.5611733,674.49899 -10.601963,676.18057 C -12.642794,677.86224 -13.663199,680.56427 -13.663182,684.28668 L -13.663182,714.84988 L -23.899895,714.84988 z M 54.467294,693.29891 L 22.826543,693.29891 C 22.826528,697.47851 23.961219,700.61319 26.230618,702.70297 C 28.49998,704.79277 31.397931,705.83767 34.924477,705.83766 C 39.136683,705.83767 42.85912,704.20502 46.091801,700.93971 L 53.487704,707.25806 C 50.973381,710.19684 48.140737,712.29479 44.989763,713.55193 C 41.838715,714.80907 38.548929,715.43764 35.120395,715.43764 C 29.895895,715.43764 24.834686,713.74785 19.936753,710.36826 C 15.038797,706.98868 12.589825,700.07442 12.589829,689.62544 C 12.589825,679.73162 14.851043,672.89083 19.373489,669.10304 C 23.895913,665.31534 28.622429,663.42147 33.553051,663.42142 C 39.136683,663.42147 44.0183,665.35616 48.197919,669.22549 C 52.377458,673.09491 54.467248,678.31122 54.467294,684.87443 L 54.467294,693.29891 z M 22.826543,684.87443 L 44.27956,684.87443 C 44.116259,681.05407 43.038712,678.13163 41.046914,676.10711 C 39.05505,674.08266 36.557099,673.07042 33.553051,673.07038 C 30.516301,673.07042 27.99386,674.08266 25.98572,676.10711 C 23.977545,678.13163 22.924487,681.05407 22.826543,684.87443 L 22.826543,684.87443 z M 65.536659,714.84988 L 65.536659,664.00917 L 75.773373,664.00917 L 75.773373,714.84988 L 65.536659,714.84988 z M 65.536659,653.72348 L 65.536659,643.48676 L 75.773373,643.48676 L 75.773373,653.72348 L 65.536659,653.72348 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="g5141"
+       transform="matrix(0.506506,0,0,0.506506,-177.1995,439.6572)">
+      <path
+         id="path30859"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 141.29386,64.772007 L 226.621,8.5678385 L 310.09117,64.726728 L 226.67891,120.91089 L 141.29386,64.772007 z " />
+      <path
+         id="path30855"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 545.76835,224.85743 C 544.55054,231.75847 539.49988,232.6089 535.6799,236.42888 C 543.52397,236.41433 556.28207,236.32762 556.3103,235.60249 L 556.72355,224.98944 L 545.76835,224.85743 z " />
+      <path
+         id="path29926"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 68.158738,321.23081 C 68.455695,367.59067 134.85842,367.59152 134.85842,321.64768" />
+      <path
+         id="path30815"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 205.72683,321.21721 C 206.02379,367.57707 272.42651,367.57792 272.42651,321.63408" />
+      <path
+         id="path30817"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 467.10621,321.21721 C 467.40316,367.57707 533.80589,367.57792 533.80589,321.63408" />
+      <path
+         id="path30819"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 605.09118,321.21721 C 605.38814,367.57707 671.79086,367.57792 671.79086,321.63408" />
+      <path
+         id="path30821"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 142.04948,342.38712 L 197.91046,342.38712 C 195.06734,337.46269 193.77027,332.24227 193.95017,321.54346 L 146.94774,321.54346 C 146.615,332.3914 144.91424,337.4252 142.04948,342.38712 z " />
+      <path
+         id="path30825"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 541.10118,342.49133 L 596.96216,342.49133 C 594.11904,337.5669 592.82197,332.34648 593.00187,321.64767 L 545.99944,321.64767 C 545.6667,332.49561 543.96594,337.52941 541.10118,342.49133 z " />
+      <path
+         id="path30841"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 570.24997,144.88875 C 565.04731,148.56178 560.2466,151.66884 560.2466,154.82898 L 560.30736,283.93097 C 561.52517,290.83201 566.42999,291.97412 570.24997,295.7941 L 546.51516,295.61257 L 546.2191,154.56075 C 546.2191,151.76942 541.27657,148.50142 536.1756,144.89967 L 570.24997,144.88875 z " />
+      <path
+         id="path30827"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 34.77654,124.52695 L 704.03682,124.52695 L 704.03682,145.63848 L 34.954125,145.63848 L 34.77654,124.52695 z " />
+      <path
+         id="path30829"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 405.02462,144.77233 C 410.22728,148.44536 415.02799,151.55242 415.02799,154.71256 L 414.96723,224.96752 C 413.74942,231.86856 408.8446,233.01067 405.02462,236.83065 L 439.09899,236.83065 C 435.27035,233.00201 430.20446,232.09446 429.0714,225.13748 L 429.05549,154.44433 C 429.05549,151.653 433.99802,148.385 439.09899,144.78325 L 405.02462,144.77233 z " />
+      <path
+         id="path30833"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 273.9892,144.66674 C 279.19186,148.33977 283.99257,151.44683 283.99257,154.60697 L 283.93181,224.86193 C 282.714,231.76297 277.80918,232.90508 273.9892,236.72506 L 308.06357,236.72506 C 304.23493,232.89642 299.16904,231.98887 298.03598,225.03189 L 298.02007,154.33874 C 298.02007,151.54741 302.9626,148.27941 308.06357,144.67766 L 273.9892,144.66674 z " />
+      <path
+         id="path30839"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 143.85545,144.88875 C 149.05811,148.56178 153.85882,151.66884 153.85882,154.82898 L 153.79806,283.93097 C 152.58025,290.83201 147.67543,291.97412 143.85545,295.7941 L 167.59026,295.61257 L 167.88632,154.56075 C 167.88632,151.76942 172.82885,148.50142 177.92982,144.89967 L 143.85545,144.88875 z " />
+      <path
+         id="path30845"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 628.05988,144.88875 C 633.26254,148.56178 638.06325,151.66884 638.06325,154.82898 L 638.00249,283.93097 C 636.78468,290.83201 631.87986,291.97412 628.05988,295.7941 L 651.79469,295.61257 L 651.64888,144.96967 L 628.05988,144.88875 z " />
+      <path
+         id="path30849"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 112.14105,144.77017 C 106.93839,148.4432 102.13768,151.55026 102.13768,154.7104 L 102.19844,283.81239 C 103.41625,290.71343 108.32107,291.85554 112.14105,295.67552 L 88.406239,295.67178 L 88.552049,144.85109 L 112.14105,144.77017 z " />
+      <path
+         id="path30853"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 48.471006,144.5257 L 3.2183455,234.56804 L 3.2183455,289.1964 C 3.2183455,299.06206 14.853723,309.33876 23.735298,309.31106 L 716.48416,309.31106 C 725.18984,309.31106 737.00111,297.13026 737.00111,289.1964 L 737.00111,233.67994 L 691.06759,144.17503 L 677.91563,144.17503 L 708.84059,205.11712 C 714.11626,225.00611 697.80765,233.59281 689.53052,236.50035 L 650.58941,236.33987 L 650.91037,295.63527 L 547.11655,295.63527 L 547.11655,236.33769 L 166.95167,236.33769 L 166.95167,295.55394 L 89.065096,295.55394 L 89.065096,236.41685 L 49.884355,236.41685 C 40.999758,236.41685 25.997947,225.75364 31.37669,205.6799 L 61.478753,144.5257 L 48.471006,144.5257 z " />
+      <path
+         id="path30857"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 168.36959,224.926 C 169.5874,231.82704 174.63806,232.67747 178.45804,236.49745 C 170.61397,236.4829 157.85587,236.39619 157.82764,235.67106 L 157.41439,225.05801 L 168.36959,224.926 z " />
+      <path
+         id="path31750"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 298.81034,124.9591 L 291.66677,117.46706 L 159.42359,117.46706 L 153.32543,124.78486 L 298.81034,124.9591 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-17.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-17.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1024-17.svg	(revision 36424)
@@ -0,0 +1,90 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1024-17.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="74.251847"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5102"
+     transform="translate(195.6775,-220.9685)">
+    <path
+       id="text5085"
+       d="M -11.044724,533.02237 L -11.044724,490.01838 L -16.187571,490.01838 L -16.187571,482.18166 L -11.044724,482.18166 L -11.044724,475.47147 C -11.044733,470.73684 -9.7386142,467.25114 -7.126365,465.01434 C -4.5141403,462.77769 -1.2161912,461.65932 2.7674922,461.65925 L 9.3797235,461.65925 L 9.3797235,471.25923 L 3.6001435,471.25923 C 0.62870107,471.25929 -0.85700867,472.66337 -0.85699016,475.47147 L -0.85699016,482.18166 L 9.3797235,482.18166 L 9.3797235,490.01838 L -0.85699016,490.01838 L -0.85699016,533.02237 L -11.044724,533.02237 z M 15.159303,533.02237 L 15.159303,482.18166 L 25.396017,482.18166 L 25.396017,487.61838 L 25.591935,487.61838 C 28.759255,483.60211 33.167405,481.59395 38.816397,481.5939 C 42.538805,481.59395 46.081651,482.90007 49.444947,485.51226 L 42.049044,494.32857 C 39.828609,492.66331 37.575554,491.83066 35.289874,491.83062 C 32.775569,491.83066 30.498025,492.67147 28.457235,494.35306 C 26.416405,496.03473 25.396,498.73676 25.396017,502.45917 L 25.396017,533.02237 L 15.159303,533.02237 z M 93.526492,511.47139 L 61.885741,511.47139 C 61.885727,515.65099 63.020417,518.78568 65.289816,520.87545 C 67.559179,522.96526 70.457129,524.01015 73.983676,524.01014 C 78.195881,524.01015 81.918319,522.3775 85.150999,519.11219 L 92.546903,525.43055 C 90.032579,528.36932 87.199935,530.46727 84.048961,531.72441 C 80.897914,532.98155 77.608128,533.61012 74.179594,533.61012 C 68.955093,533.61012 63.893884,531.92033 58.995951,528.54074 C 54.097996,525.16117 51.649023,518.2469 51.649028,507.79793 C 51.649023,497.90411 53.910241,491.06331 58.432687,487.27552 C 62.955111,483.48783 67.681627,481.59395 72.61225,481.5939 C 78.195881,481.59395 83.077499,483.52864 87.257118,487.39797 C 91.436657,491.26739 93.526446,496.4837 93.526492,503.04692 L 93.526492,511.47139 z M 61.885741,503.04692 L 83.338758,503.04692 C 83.175458,499.22655 82.09791,496.30411 80.106112,494.27959 C 78.114249,492.25515 75.616297,491.2429 72.61225,491.24286 C 69.575499,491.2429 67.053058,492.25515 65.044918,494.27959 C 63.036744,496.30411 61.983686,499.22655 61.885741,503.04692 L 61.885741,503.04692 z M 104.59586,533.02237 L 104.59586,482.18166 L 114.83257,482.18166 L 114.83257,533.02237 L 104.59586,533.02237 z M 104.59586,471.89596 L 104.59586,461.65925 L 114.83257,461.65925 L 114.83257,471.89596 L 104.59586,471.89596 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <g
+       id="layer1"
+       transform="matrix(0.473007,0,0,0.473007,-68.9293,257.4783)">
+      <g
+         id="g4548"
+         transform="translate(10.1636,8.029761)">
+        <path
+           id="path1882"
+           style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 295.23238,14.905561 C 279.95549,17.514001 272.29797,24.966621 266.23238,33.436811 L 248.45113,141.12431 L 37.388633,141.12431 C 14.754659,144.54201 19.232383,154.82662 19.232383,163.09306 L 36.388633,268.15556 L 51.513633,268.15556 C 63.437389,228.50231 144.25279,229.9376 156.82613,268.15556 L 247.51363,268.15556 C 243.13571,198.86951 342.7846,101.24363 443.48238,196.40556 L 443.48238,139.49931 L 443.73238,139.49931 L 443.73238,14.905561 L 295.23238,14.905561 z M 289.23238,42.499311 L 399.60738,42.499311 L 399.91988,139.87431 L 270.07613,140.93681 L 286.01363,47.999311 C 286.56907,46.102541 286.84967,44.193071 289.23238,42.499311 z " />
+        <path
+           id="path1887"
+           style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:50;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           transform="translate(-230.0275,-650.8975)"
+           d="M 665.82779,917.76086 C 665.82779,960.38146 631.27697,994.93228 588.65637,994.93228 C 546.03577,994.93228 511.48495,960.38146 511.48495,917.76086 C 511.48495,875.14026 546.03577,840.58944 588.65637,840.58944 C 631.27697,840.58944 665.82779,875.14026 665.82779,917.76086 z " />
+        <path
+           id="path2776"
+           style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:50;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           transform="matrix(0.591604,0,0,0.591604,-244.0191,-234.3611)"
+           d="M 665.82779,917.76086 C 665.82779,960.38146 631.27697,994.93228 588.65637,994.93228 C 546.03577,994.93228 511.48495,960.38146 511.48495,917.76086 C 511.48495,875.14026 546.03577,840.58944 588.65637,840.58944 C 631.27697,840.58944 665.82779,875.14026 665.82779,917.76086 z " />
+      </g>
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-30.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-30.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-30.svg	(revision 36424)
@@ -0,0 +1,72 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1026-30.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="153.85164"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5066"
+     transform="translate(3.910219,-222.7929)">
+    <path
+       id="text1982"
+       d="M 180.72256,518.83249 L 180.72256,475.82849 L 175.57971,475.82849 L 175.57971,467.99178 L 180.72256,467.99178 L 180.72256,461.28159 C 180.72255,456.54696 182.02867,453.06126 184.64092,450.82446 C 187.25314,448.5878 190.55109,447.46944 194.53478,447.46937 L 201.14701,447.46937 L 201.14701,457.06935 L 195.36743,457.06935 C 192.39599,457.06941 190.91028,458.47349 190.91029,461.28159 L 190.91029,467.99178 L 201.14701,467.99178 L 201.14701,475.82849 L 190.91029,475.82849 L 190.91029,518.83249 L 180.72256,518.83249 z M 206.92659,518.83249 L 206.92659,467.99178 L 217.1633,467.99178 L 217.1633,473.4285 L 217.35922,473.4285 C 220.52654,469.41223 224.93469,467.40407 230.58368,467.40402 C 234.30609,467.40407 237.84894,468.71019 241.21223,471.32238 L 233.81633,480.13869 C 231.59589,478.47343 229.34284,477.64078 227.05716,477.64074 C 224.54285,477.64078 222.26531,478.48159 220.22452,480.16318 C 218.18369,481.84485 217.16328,484.54688 217.1633,488.26929 L 217.1633,518.83249 L 206.92659,518.83249 z M 285.29378,497.28151 L 253.65303,497.28151 C 253.65301,501.46111 254.7877,504.5958 257.0571,506.68557 C 259.32646,508.77538 262.22441,509.82027 265.75096,509.82026 C 269.96317,509.82027 273.6856,508.18762 276.91828,504.92231 L 284.31419,511.24067 C 281.79986,514.17944 278.96722,516.27739 275.81625,517.53453 C 272.6652,518.79167 269.37541,519.42024 265.94688,519.42024 C 260.72238,519.42024 255.66117,517.73045 250.76324,514.35086 C 245.86528,510.97129 243.41631,504.05702 243.41631,493.60805 C 243.41631,483.71423 245.67753,476.87343 250.19997,473.08564 C 254.7224,469.29795 259.44891,467.40407 264.37953,467.40402 C 269.96317,467.40407 274.84478,469.33876 279.0244,473.20809 C 283.20394,477.07751 285.29373,482.29382 285.29378,488.85704 L 285.29378,497.28151 z M 253.65303,488.85704 L 275.10604,488.85704 C 274.94274,485.03667 273.86519,482.11423 271.8734,480.08971 C 269.88153,478.06527 267.38358,477.05302 264.37953,477.05298 C 261.34278,477.05302 258.82034,478.06527 256.8122,480.08971 C 254.80403,482.11423 253.75097,485.03667 253.65303,488.85704 L 253.65303,488.85704 z M 296.36314,518.83249 L 296.36314,467.99178 L 306.59986,467.99178 L 306.59986,518.83249 L 296.36314,518.83249 z M 296.36314,457.70608 L 296.36314,447.46937 L 306.59986,447.46937 L 306.59986,457.70608 L 296.36314,457.70608 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1886"
+       d="M 110.78646,411.23993 L 110.78646,303.13927 L 76.581732,303.13927 L 76.581732,286.33694 L 163.93667,286.33694 L 163.93667,303.13927 L 129.73194,303.13927 L 129.73194,411.23993 L 110.78646,411.23993 z M 166.19385,411.15421 L 211.80016,286.16549 L 227.40231,286.16549 L 273.00862,411.15421 L 253.12016,411.15421 L 243.51883,382.9503 L 196.11227,382.9503 L 186.16804,411.15421 L 166.19385,411.15421 z M 201.68447,366.23371 L 237.8609,366.23371 C 235.2319,358.51841 233.16019,352.47472 231.64576,348.10263 C 230.1312,343.73066 228.81673,339.8587 227.70236,336.48674 C 226.58786,333.11492 225.45913,329.68588 224.31617,326.1996 C 223.1731,322.71349 221.65861,317.99856 219.77269,312.05479 C 217.77236,318.22716 216.17214,323.15641 214.97202,326.84254 C 213.77181,330.52885 212.61451,334.08648 211.50011,337.51545 C 210.38563,340.94457 209.09974,344.77366 207.64244,349.00275 C 206.18505,353.23197 204.19907,358.97561 201.68447,366.23371 L 201.68447,366.23371 z M 351.99071,411.23993 L 324.64407,364.77636 L 297.2117,411.23993 L 275.86589,411.23993 L 314.09975,347.2025 L 278.26622,286.33694 L 299.69776,286.33694 L 324.64407,329.62864 L 349.50465,286.33694 L 370.93618,286.33694 L 335.10266,347.2025 L 373.42224,411.23993 L 351.99071,411.23993 z M 386.65236,411.23993 L 386.65236,286.33694 L 405.59783,286.33694 L 405.59783,411.23993 L 386.65236,411.23993 z "
+       style="font-size:175.56713867px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:2px;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-31.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-31.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-31.svg	(revision 36424)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="matrix(1.044287,0,0,1.044287,198.2878,-460.0883)"
+     id="g2404">
+    <path
+       d="M -10.809143,647.00423 L -10.809143,607.43878 L -15.540774,607.43878 L -15.540774,600.22867 L -10.809143,600.22867 L -10.809143,594.05502 C -10.80915,589.69897 -9.6074673,586.49198 -7.2040901,584.43404 C -4.8007354,582.37622 -1.7664859,581.34728 1.8986675,581.34721 L 7.9821937,581.34721 L 7.9821937,590.17959 L 2.6647412,590.17959 C -0.069108711,590.17965 -1.4360231,591.47146 -1.4360061,594.05502 L -1.4360061,600.22867 L 7.9821937,600.22867 L 7.9821937,607.43878 L -1.4360061,607.43878 L -1.4360061,647.00423 L -10.809143,647.00423 z M 13.299646,647.00423 L 13.299646,600.22867 L 22.717846,600.22867 L 22.717846,605.23068 L 22.898098,605.23068 C 25.812164,601.53555 29.867844,599.68796 35.065151,599.68792 C 38.489919,599.68796 41.749484,600.88965 44.843856,603.29297 L 38.039319,611.40434 C 35.996427,609.87223 33.923524,609.10615 31.820603,609.10612 C 29.507339,609.10615 27.411904,609.87974 25.534293,611.42687 C 23.656645,612.97407 22.71783,615.46005 22.717846,618.88482 L 22.717846,647.00423 L 13.299646,647.00423 z M 85.400699,627.17644 L 56.2899,627.17644 C 56.289887,631.02185 57.333849,633.90589 59.42179,635.82857 C 61.509697,637.75127 64.175932,638.71262 67.4205,638.71261 C 71.295903,638.71262 74.7207,637.21051 77.6949,634.20629 L 84.499436,640.01944 C 82.186155,642.72323 79.580005,644.65344 76.680979,645.81006 C 73.781885,646.96668 70.755146,647.54499 67.600753,647.54499 C 62.793996,647.54499 58.137475,645.99031 53.631174,642.88095 C 49.124852,639.7716 46.871697,633.41019 46.871701,623.7967 C 46.871697,614.69398 48.95211,608.40017 53.112948,604.91524 C 57.273765,601.4304 61.622355,599.68796 66.158732,599.68792 C 71.295903,599.68796 75.787193,601.46796 79.632615,605.0279 C 83.477964,608.58793 85.400657,613.38715 85.400699,619.42558 L 85.400699,627.17644 z M 56.2899,619.42558 L 76.027563,619.42558 C 75.87732,615.91068 74.885931,613.22192 73.053395,611.35927 C 71.220798,609.4967 68.922579,608.5654 66.158732,608.56536 C 63.364796,608.5654 61.044045,609.4967 59.196474,611.35927 C 57.34887,613.22192 56.380013,615.91068 56.2899,619.42558 L 56.2899,619.42558 z M 95.584969,647.00423 L 95.584969,600.22867 L 105.00317,600.22867 L 105.00317,647.00423 L 95.584969,647.00423 z M 95.584969,590.76541 L 95.584969,581.34721 L 105.00317,581.34721 L 105.00317,590.76541 L 95.584969,590.76541 z "
+       style="font-size:92.28934479px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       id="text1982" />
+    <path
+       d="M -63.569464,556.27539 L -63.569464,492.15752 L -54.372048,492.15752 L -35.977218,533.96396 L -17.978448,492.15752 L -8.7810323,492.15752 L -8.7810323,556.27539 L -18.506529,556.27539 L -18.506529,516.27323 L -18.682556,516.27323 L -32.104622,547.12198 L -40.201868,547.12198 L -53.623933,516.27323 L -53.843967,516.27323 L -53.843967,556.27539 L -63.569464,556.27539 z M 1.6925766,533.39187 C 1.6925728,528.49248 2.0739644,524.83992 2.8367527,522.43418 C 3.599531,520.02852 4.8610572,517.85752 6.6213351,515.92118 C 7.8828526,514.54234 9.6211183,513.22214 11.836138,511.96057 C 14.051129,510.69909 16.948239,510.06833 20.527475,510.06828 C 24.047991,510.06833 26.923097,510.69909 29.152803,511.96057 C 31.382446,513.22214 33.128046,514.54234 34.389608,515.92118 C 36.149841,517.85752 37.411367,520.02852 38.174191,522.43418 C 38.936934,524.83992 39.318326,528.49248 39.318367,533.39187 C 39.318326,538.37932 38.936934,542.07589 38.174191,544.48158 C 37.411367,546.88729 36.149841,549.05829 34.389608,550.99458 C 33.128046,552.4028 31.382446,553.723 29.152803,554.95519 C 26.923097,556.18738 24.047991,556.80347 20.527475,556.80347 C 16.948239,556.80347 14.051129,556.18738 11.836138,554.95519 C 9.6211183,553.723 7.8828526,552.4028 6.6213351,550.99458 C 4.8610572,549.05829 3.599531,546.88729 2.8367527,544.48158 C 2.0739644,542.07589 1.6925728,538.37932 1.6925766,533.39187 L 1.6925766,533.39187 z M 30.164958,533.47988 C 30.164926,530.16473 29.996234,527.83238 29.65888,526.48281 C 29.321464,525.1333 28.742042,523.84243 27.920613,522.61021 C 26.307003,520.38057 23.842626,519.26573 20.527475,519.2657 C 17.153603,519.26573 14.689227,520.38057 13.134337,522.61021 C 12.254188,523.84243 11.660097,525.1333 11.352063,526.48281 C 11.044003,527.83238 10.889979,530.13539 10.889992,533.39187 C 10.889979,536.7364 11.044003,539.09076 11.352063,540.45496 C 11.660097,541.81918 12.254188,543.10271 13.134337,544.30555 C 14.689227,546.53524 17.153603,547.65007 20.527475,547.65006 C 23.842626,547.65007 26.307003,546.53524 27.920613,544.30555 C 28.742042,543.10271 29.321464,541.82652 29.65888,540.47696 C 29.996234,539.12744 30.164926,536.79508 30.164958,533.47988 L 30.164958,533.47988 z M 50.45208,556.27539 L 50.45208,517.63744 L 45.831369,517.63744 L 45.831369,510.59636 L 50.45208,510.59636 L 50.45208,504.56743 C 50.452073,500.3135 51.625586,497.18169 53.972622,495.17199 C 56.319637,493.16241 59.282756,492.15759 62.86199,492.15752 L 68.802904,492.15752 L 68.802904,500.78285 L 63.610105,500.78285 C 60.940343,500.78291 59.605472,502.04443 59.605489,504.56743 L 59.605489,510.59636 L 68.802904,510.59636 L 68.802904,517.63744 L 59.605489,517.63744 L 59.605489,556.27539 L 50.45208,556.27539 z M 97.97939,556.27539 L 97.97939,552.22677 L 97.759356,552.22677 C 95.911043,555.27791 92.155803,556.80347 86.493622,556.80347 C 81.388823,556.80347 77.428218,555.47594 74.611794,552.82086 C 71.795356,550.16579 70.387141,546.84328 70.387143,542.85333 C 70.387141,539.24479 71.633998,536.09097 74.127719,533.39187 C 76.621428,530.69281 80.332662,529.34327 85.261433,529.34325 L 97.97939,529.34325 L 97.97939,524.59051 C 97.97936,520.68862 94.854882,518.73765 88.605947,518.73761 C 84.263929,518.73765 81.374154,519.8965 79.936613,522.21415 L 72.719502,516.75731 C 75.91732,512.298 81.051438,510.06833 88.121873,510.06828 C 93.754714,510.06833 98.331414,511.16849 101.85199,513.36879 C 105.37249,515.56917 107.13276,519.48577 107.1328,525.1186 L 107.1328,556.27539 L 97.97939,556.27539 z M 97.97939,540.25693 L 97.97939,536.91241 L 86.977697,536.91241 C 81.667532,536.91243 79.01246,538.74604 79.012471,542.41326 C 79.01246,543.96818 79.679895,545.31772 81.014779,546.46188 C 82.349637,547.60607 84.571976,548.17815 87.681805,548.17814 C 91.495702,548.17815 94.165443,547.75275 95.691038,546.90195 C 97.216576,546.05116 97.97936,543.83616 97.97939,540.25693 L 97.97939,540.25693 z M 113.99786,548.66222 L 120.42285,542.32524 C 124.41279,546.22719 129.20952,548.17815 134.81307,548.17814 C 137.42411,548.17815 139.58044,547.68674 141.28206,546.70392 C 142.98363,545.72111 143.83442,544.26155 143.83445,542.32524 C 143.83442,539.65552 141.97147,538.15929 138.24559,537.83655 L 130.14835,537.08844 C 126.36375,536.79508 123.22461,535.54822 120.7309,533.34786 C 118.23718,531.14755 116.99032,528.08175 116.99032,524.15045 C 116.99032,519.5151 118.61857,516.00923 121.87507,513.63283 C 125.13156,511.25651 129.18018,510.06833 134.02094,510.06828 C 138.01087,510.06833 141.42872,510.63308 144.27452,511.76254 C 147.12026,512.89209 149.67265,514.39565 151.9317,516.27323 L 146.25483,522.96226 C 144.43585,521.73011 142.55823,520.71795 140.62196,519.9258 C 138.68564,519.13371 136.4853,518.73765 134.02094,518.73761 C 131.08714,518.73765 129.04816,519.2584 127.904,520.29985 C 126.75981,521.34138 126.18773,522.65425 126.18774,524.23846 C 126.18773,525.23598 126.61312,526.16012 127.46393,527.01089 C 128.31472,527.86171 129.89896,528.37513 132.21667,528.55112 L 139.78583,529.07921 C 144.50919,529.40195 147.89771,530.86151 149.9514,533.45788 C 152.00501,536.0543 153.03183,539.15677 153.03187,542.76531 C 153.03183,547.25401 151.19822,550.71587 147.53102,553.15091 C 143.86376,555.58595 139.38974,556.80347 134.10896,556.80347 C 126.51044,556.80347 119.80675,554.08972 113.99786,548.66222 L 113.99786,548.66222 z "
+       style="font-size:90.12586975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       id="text2056" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-32.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-32.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-32.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1026-32.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="170.28486"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5038"
+     transform="translate(352.7496,-197.3609)">
+    <path
+       id="text5021"
+       d="M -168.11683,508.94211 L -168.11683,465.93811 L -173.25967,465.93811 L -173.25967,458.1014 L -168.11683,458.1014 L -168.11683,451.39121 C -168.11683,446.65658 -166.81072,443.17088 -164.19847,440.93408 C -161.58624,438.69742 -158.28829,437.57906 -154.30461,437.57899 L -147.69238,437.57899 L -147.69238,447.17897 L -153.47196,447.17897 C -156.4434,447.17903 -157.92911,448.58311 -157.92909,451.39121 L -157.92909,458.1014 L -147.69238,458.1014 L -147.69238,465.93811 L -157.92909,465.93811 L -157.92909,508.94211 L -168.11683,508.94211 z M -141.9128,508.94211 L -141.9128,458.1014 L -131.67608,458.1014 L -131.67608,463.53812 L -131.48017,463.53812 C -128.31285,459.52185 -123.9047,457.51369 -118.2557,457.51364 C -114.5333,457.51369 -110.99045,458.81981 -107.62715,461.432 L -115.02306,470.24831 C -117.24349,468.58305 -119.49655,467.7504 -121.78223,467.75036 C -124.29653,467.7504 -126.57408,468.59121 -128.61487,470.2728 C -130.6557,471.95446 -131.6761,474.6565 -131.67608,478.3789 L -131.67608,508.94211 L -141.9128,508.94211 z M -63.545609,487.39113 L -95.18636,487.39113 C -95.186375,491.57073 -94.051684,494.70542 -91.782286,496.79519 C -89.512923,498.88499 -86.614972,499.92989 -83.088426,499.92988 C -78.876221,499.92989 -75.153783,498.29724 -71.921102,495.03193 L -64.525199,501.35029 C -67.039522,504.28906 -69.872166,506.38701 -73.023141,507.64415 C -76.174188,508.90129 -79.463974,509.52986 -82.892508,509.52986 C -88.117009,509.52986 -93.178218,507.84007 -98.07615,504.46048 C -102.97411,501.08091 -105.42308,494.16664 -105.42307,483.71767 C -105.42308,473.82385 -103.16186,466.98305 -98.639414,463.19526 C -94.11699,459.40756 -89.390474,457.51369 -84.459852,457.51364 C -78.876221,457.51369 -73.994603,459.44838 -69.814984,463.31771 C -65.635445,467.18713 -63.545655,472.40344 -63.545609,478.96666 L -63.545609,487.39113 z M -95.18636,478.96666 L -73.733343,478.96666 C -73.896644,475.14629 -74.974192,472.22385 -76.96599,470.19933 C -78.957853,468.17488 -81.455805,467.16264 -84.459852,467.1626 C -87.496602,467.16264 -90.019044,468.17488 -92.027183,470.19933 C -94.035358,472.22385 -95.088416,475.14629 -95.18636,478.96666 L -95.18636,478.96666 z M -52.476244,508.94211 L -52.476244,458.1014 L -42.239531,458.1014 L -42.239531,508.94211 L -52.476244,508.94211 z M -52.476244,447.8157 L -52.476244,437.57899 L -42.239531,437.57899 L -42.239531,447.8157 L -52.476244,447.8157 z "
+       style="font-size:100.30999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1927"
+       d="M -252.0146,316.20346 L -252.0146,245.19194 L -241.24346,245.19194 L -241.24346,306.06592 L -206.59062,306.06592 L -206.59062,316.20346 L -252.0146,316.20346 z M -197.03793,316.20346 L -197.03793,265.61323 L -186.85166,265.61323 L -186.85166,316.20346 L -197.03793,316.20346 z M -197.03793,255.37822 L -197.03793,245.19194 L -186.85166,245.19194 L -186.85166,255.37822 L -197.03793,255.37822 z M -173.35118,316.20346 L -173.35118,265.61323 L -163.1649,265.61323 L -163.1649,271.02317 L -162.96994,271.02317 C -159.81823,267.02669 -155.4318,265.02843 -149.81064,265.02838 C -145.87912,265.02843 -142.08567,266.52306 -138.43027,269.51229 C -134.77495,272.50161 -132.94727,276.85555 -132.94723,282.57412 L -132.94723,316.20346 L -143.13351,316.20346 L -143.13351,286.08327 C -143.13354,282.67163 -144.08394,280.00728 -145.98469,278.09021 C -147.88551,276.17321 -150.24931,275.2147 -153.07609,275.21465 C -156.00041,275.2147 -158.41295,276.17321 -160.31371,278.09021 C -162.21452,280.00728 -163.16491,282.67163 -163.1649,286.08327 L -163.1649,316.20346 L -173.35118,316.20346 z M -119.44675,316.20346 L -119.44675,265.61323 L -109.26047,265.61323 L -109.26047,316.20346 L -119.44675,316.20346 z M -119.44675,255.37822 L -119.44675,245.19194 L -109.26047,245.19194 L -109.26047,255.37822 L -119.44675,255.37822 z M -56.574511,294.75866 L -88.059374,294.75866 C -88.059388,298.91767 -86.930288,302.03691 -84.67207,304.11639 C -82.413888,306.1959 -79.530215,307.23565 -76.021044,307.23564 C -71.829591,307.23565 -68.125493,305.61104 -64.908739,302.36182 L -57.549274,308.64904 C -60.05121,311.57334 -62.869898,313.66096 -66.005348,314.9119 C -69.140871,316.16285 -72.414448,316.78832 -75.826091,316.78832 C -81.024851,316.78832 -86.061125,315.10685 -90.934926,311.74392 C -95.80875,308.38099 -98.245657,301.50079 -98.245653,291.1033 C -98.245657,281.25822 -95.99558,274.45113 -91.495415,270.682 C -86.995272,266.91297 -82.292043,265.02843 -77.385713,265.02838 C -71.829591,265.02843 -66.972024,266.95358 -62.812997,270.80385 C -58.65405,274.65421 -56.574556,279.84482 -56.574511,286.3757 L -56.574511,294.75866 z M -88.059374,286.3757 L -66.712052,286.3757 C -66.874548,282.57415 -67.946787,279.66611 -69.928771,277.65156 C -71.910821,275.63709 -74.396466,274.62984 -77.385713,274.6298 C -80.407502,274.62984 -82.917515,275.63709 -84.915761,277.65156 C -86.914042,279.66611 -87.961912,282.57415 -88.059374,286.3757 L -88.059374,286.3757 z M -45.852108,316.20346 L -45.852108,265.61323 L -35.665828,265.61323 L -35.665828,271.02317 L -35.470876,271.02317 C -32.31916,267.02669 -27.932729,265.02843 -22.311568,265.02838 C -18.380056,265.02843 -14.586605,266.52306 -10.931203,269.51229 C -7.2758851,272.50161 -5.4482053,276.85555 -5.4481582,282.57412 L -5.4481582,316.20346 L -15.634437,316.20346 L -15.634437,286.08327 C -15.634474,282.67163 -16.584868,280.00728 -18.485621,278.09021 C -20.386442,276.17321 -22.750241,275.2147 -25.577026,275.21465 C -28.50134,275.2147 -30.913878,276.17321 -32.814645,278.09021 C -34.715452,280.00728 -35.665845,282.67163 -35.665828,286.08327 L -35.665828,316.20346 L -45.852108,316.20346 z M 6.4439458,293.68642 L 6.4439458,283.50014 L 36.515402,283.50014 L 36.515402,293.68642 L 6.4439458,293.68642 z "
+       style="font-size:99.81578827px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1931"
+       d="M -254.03756,412.7367 L -272.55811,362.14636 L -261.78695,362.14636 L -249.94355,397.57909 L -249.74859,397.57909 L -237.85645,362.14636 L -227.08529,362.14636 L -245.65458,412.7367 L -254.03756,412.7367 z M -181.95364,391.29185 L -213.43857,391.29185 C -213.43859,395.45087 -212.30948,398.57012 -210.05126,400.6496 C -207.79307,402.72911 -204.9094,403.76886 -201.40022,403.76885 C -197.20875,403.76886 -193.50465,402.14425 -190.28789,398.89502 L -182.92841,405.18226 C -185.43035,408.10656 -188.24904,410.19418 -191.3845,411.44513 C -194.52003,412.69608 -197.79361,413.32155 -201.20526,413.32156 C -206.40403,413.32155 -211.44032,411.64009 -216.31413,408.27714 C -221.18797,404.91421 -223.62488,398.034 -223.62487,387.63648 C -223.62488,377.79138 -221.3748,370.98428 -216.87462,367.21514 C -212.37447,363.4461 -207.67123,361.56155 -202.76489,361.5615 C -197.20875,361.56155 -192.35118,363.48671 -188.19214,367.33699 C -184.03319,371.18735 -181.95369,376.37797 -181.95364,382.90887 L -181.95364,391.29185 z M -213.43857,382.90887 L -192.0912,382.90887 C -192.2537,379.10731 -193.32594,376.19927 -195.30793,374.18471 C -197.28999,372.17024 -199.77564,371.16298 -202.76489,371.16294 C -205.78668,371.16298 -208.2967,372.17024 -210.29495,374.18471 C -212.29324,376.19927 -213.34111,379.10731 -213.43857,382.90887 L -213.43857,382.90887 z M -171.23122,412.7367 L -171.23122,362.14636 L -161.04492,362.14636 L -161.04492,367.55631 L -160.84997,367.55631 C -157.69824,363.55982 -153.3118,361.56155 -147.69063,361.5615 C -143.98655,361.56155 -140.46116,362.86124 -137.11442,365.46056 L -144.4739,374.23345 C -146.6834,372.57639 -148.92536,371.74784 -151.19979,371.7478 C -153.70171,371.74784 -155.96804,372.58451 -157.99878,374.25782 C -160.02956,375.93121 -161.04494,378.61993 -161.04492,382.32401 L -161.04492,412.7367 L -171.23122,412.7367 z M -132.43554,412.7367 L -132.43554,341.72502 L -122.24924,341.72502 L -122.24924,385.93064 L -122.05429,385.93064 L -102.60771,362.14636 L -90.423143,362.14636 L -107.87145,381.9341 L -88.034968,412.7367 L -100.8044,412.7367 L -114.25616,389.09863 L -122.24924,398.21269 L -122.24924,412.7367 L -132.43554,412.7367 z M -41.392435,391.29185 L -72.877365,391.29185 C -72.87738,395.45087 -71.748277,398.57012 -69.490055,400.6496 C -67.231868,402.72911 -64.348189,403.76886 -60.83901,403.76885 C -56.647548,403.76886 -52.943442,402.14425 -49.726681,398.89502 L -42.367201,405.18226 C -44.869142,408.10656 -47.687836,410.19418 -50.823293,411.44513 C -53.958822,412.69608 -57.232407,413.32155 -60.644057,413.32156 C -65.842828,413.32155 -70.879112,411.64009 -75.752924,408.27714 C -80.626759,404.91421 -83.063671,398.034 -83.063666,387.63648 C -83.063671,377.79138 -80.813589,370.98428 -76.313414,367.21514 C -71.813262,363.4461 -67.110022,361.56155 -62.203682,361.5615 C -56.647548,361.56155 -51.789971,363.48671 -47.630935,367.33699 C -43.471979,371.18735 -41.392481,376.37797 -41.392435,382.90887 L -41.392435,391.29185 z M -72.877365,382.90887 L -51.529998,382.90887 C -51.692494,379.10731 -52.764735,376.19927 -54.746724,374.18471 C -56.728778,372.17024 -59.214428,371.16298 -62.203682,371.16294 C -65.225477,371.16298 -67.735496,372.17024 -69.733746,374.18471 C -71.732031,376.19927 -72.779903,379.10731 -72.877365,382.90887 L -72.877365,382.90887 z M -30.670009,412.7367 L -30.670009,341.72502 L -20.483708,341.72502 L -20.483708,367.55631 L -20.288755,367.55631 C -17.137033,363.55982 -12.750592,361.56155 -7.1294189,361.5615 C -3.1978983,361.56155 0.59556087,363.05619 4.25097,366.04542 C 7.9062959,369.03475 9.7339796,373.3887 9.7340267,379.10728 L 9.7340267,412.7367 L -0.45227425,412.7367 L -0.45227425,382.61644 C -0.45231115,379.20479 -1.4027067,376.54043 -3.3034638,374.62336 C -5.2042889,372.70636 -7.5680932,371.74784 -10.394884,371.7478 C -13.319205,371.74784 -15.731747,372.70636 -17.632519,374.62336 C -19.53333,376.54043 -20.483725,379.20479 -20.483708,382.61644 L -20.483708,412.7367 L -30.670009,412.7367 z M 22.942112,412.7367 L 22.942112,362.14636 L 33.128413,362.14636 L 33.128413,367.55631 L 33.323366,367.55631 C 36.475089,363.55982 40.86153,361.56155 46.482703,361.5615 C 50.186778,361.56155 53.712177,362.86124 57.05891,365.46056 L 49.699429,374.23345 C 47.489929,372.57639 45.247971,371.74784 42.973546,371.7478 C 40.471624,371.74784 38.205296,372.58451 36.174556,374.25782 C 34.143776,375.93121 33.128396,378.61993 33.128413,382.32401 L 33.128413,412.7367 L 22.942112,412.7367 z "
+       style="font-size:99.81600189px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-33.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-33.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-33.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1026-33.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="191.38167"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g5002"
+     transform="translate(239.6125,-408.6088)">
+    <path
+       id="text1982"
+       d="M -49.386346,713.78852 L -49.386346,674.7691 L -54.052678,674.7691 L -54.052678,667.6585 L -49.386346,667.6585 L -49.386346,661.57004 C -49.386354,657.27411 -48.201255,654.11138 -45.831046,652.08184 C -43.460859,650.05242 -40.468484,649.03767 -36.853912,649.03761 L -30.854342,649.03761 L -30.854342,657.7481 L -36.098411,657.7481 C -38.794532,657.74815 -40.142582,659.02213 -40.142565,661.57004 L -40.142565,667.6585 L -30.854342,667.6585 L -30.854342,674.7691 L -40.142565,674.7691 L -40.142565,713.78852 L -49.386346,713.78852 z M -25.610274,713.78852 L -25.610274,667.6585 L -16.322051,667.6585 L -16.322051,672.59148 L -16.144286,672.59148 C -13.270437,668.94734 -9.2707279,667.12525 -4.1451472,667.1252 C -0.76764258,667.12525 2.4469384,668.31035 5.4986055,670.6805 L -1.2120242,678.67993 C -3.226723,677.16896 -5.2710188,676.41346 -7.3449176,676.41342 C -9.6262576,676.41346 -11.692774,677.17637 -13.544473,678.70215 C -15.396208,680.228 -16.322067,682.67967 -16.322051,686.05718 L -16.322051,713.78852 L -25.610274,713.78852 z M 45.495737,694.23437 L 16.786685,694.23437 C 16.786672,698.0267 17.816226,700.87094 19.875352,702.76709 C 21.934445,704.66326 24.563884,705.61134 27.763675,705.61133 C 31.585595,705.61134 34.963127,704.12996 37.896282,701.1672 L 44.606911,706.90013 C 42.325555,709.56661 39.755371,711.47017 36.896353,712.61083 C 34.037269,713.75149 31.052301,714.32182 27.94144,714.32182 C 23.20102,714.32182 18.608761,712.78859 14.164651,709.72215 C 9.7205189,706.65571 7.4984583,700.38209 7.4984621,690.90127 C 7.4984583,681.92417 9.5501609,675.71722 13.653576,672.28039 C 17.756971,668.84364 22.045548,667.12525 26.51932,667.1252 C 31.585595,667.12525 36.014903,668.88068 39.807256,672.39149 C 43.599536,675.90239 45.495695,680.63538 45.495737,686.59047 L 45.495737,694.23437 z M 16.786685,686.59047 L 36.251955,686.59047 C 36.103785,683.12408 35.126079,680.47243 33.318832,678.63549 C 31.511527,676.79862 29.245025,675.88017 26.51932,675.88013 C 23.763942,675.88017 21.47522,676.79862 19.653146,678.63549 C 17.83104,680.47243 16.875554,683.12408 16.786685,686.59047 L 16.786685,686.59047 z M 55.539457,713.78852 L 55.539457,667.6585 L 64.827679,667.6585 L 64.827679,713.78852 L 55.539457,713.78852 z M 55.539457,658.32583 L 55.539457,649.03761 L 64.827679,649.03761 L 64.827679,658.32583 L 55.539457,658.32583 z "
+       style="font-size:91.01569366px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1947"
+       d="M -145.44663,527.64686 L -145.44663,462.89573 L -104.02724,462.89573 L -104.02724,472.18398 L -135.62508,472.18398 L -135.62508,490.62717 L -108.69359,490.62717 L -108.69359,499.38212 L -135.62508,499.38212 L -135.62508,518.40305 L -104.02724,518.40305 L -104.02724,527.64686 L -145.44663,527.64686 z M -95.316727,527.64686 L -95.316727,481.51668 L -86.028473,481.51668 L -86.028473,527.64686 L -95.316727,527.64686 z M -95.316727,472.18398 L -95.316727,462.89573 L -86.028473,462.89573 L -86.028473,472.18398 L -95.316727,472.18398 z M -73.718206,527.64686 L -73.718206,481.51668 L -64.429952,481.51668 L -64.429952,486.44968 L -64.252186,486.44968 C -61.378327,482.80552 -57.378605,480.98343 -52.253007,480.98338 C -48.668098,480.98343 -45.209079,482.3463 -41.875939,485.07199 C -38.542874,487.79777 -36.876323,491.76787 -36.87628,496.98229 L -36.87628,527.64686 L -46.164534,527.64686 L -46.164534,500.18207 C -46.164568,497.0712 -47.031174,494.64174 -48.764356,492.89368 C -50.497601,491.14569 -52.653007,490.27167 -55.230581,490.27164 C -57.897087,490.27167 -60.096935,491.14569 -61.83013,492.89368 C -63.563361,494.64174 -64.429967,497.0712 -64.429952,500.18207 L -64.429952,527.64686 L -73.718206,527.64686 z M -29.943416,519.9585 L -23.454971,513.55893 C -19.425628,517.49941 -14.58152,519.46965 -8.922631,519.46964 C -6.2857989,519.46965 -4.1081722,518.97339 -2.3897444,517.98085 C -0.67137364,516.98834 0.18782601,515.51437 0.18785712,513.55893 C 0.18782601,510.86284 -1.6935249,509.35183 -5.4562014,509.02591 L -13.63342,508.27041 C -17.455394,507.97415 -20.625545,506.71498 -23.143881,504.49289 C -25.662232,502.27084 -26.921404,499.17476 -26.9214,495.20463 C -26.921404,490.52351 -25.277074,486.98301 -21.988404,484.58314 C -18.699753,482.18335 -14.611147,480.98343 -9.7225763,480.98338 C -5.6932475,480.98343 -2.2416351,481.55376 0.63227118,482.69438 C 3.5061143,483.83508 6.0837133,485.3535 8.3650758,487.24962 L 2.6321344,494.00471 C 0.79519128,492.76039 -1.1009735,491.73824 -3.0563655,490.93826 C -5.0118133,490.13835 -7.2338813,489.73838 -9.7225763,489.73834 C -12.685355,489.73838 -14.744471,490.26427 -15.899932,491.31601 C -17.055422,492.36782 -17.63316,493.69366 -17.633147,495.29352 C -17.63316,496.30088 -17.20356,497.23415 -16.344346,498.09332 C -15.485161,498.95255 -13.885272,499.47104 -11.544674,499.64877 L -3.9007522,500.18207 C 0.86926022,500.508 4.291245,501.98197 6.3652125,504.60399 C 8.4391054,507.22605 9.4760705,510.35917 9.4761109,514.00335 C 9.4760705,518.53638 7.6243471,522.03243 3.9209352,524.49152 C 0.21745359,526.95061 -4.3007515,528.18015 -9.6336935,528.18016 C -17.307257,528.18015 -24.077157,525.4396 -29.943416,519.9585 L -29.943416,519.9585 z M 43.118258,527.64686 L 43.118258,523.55825 L 42.896051,523.55825 C 41.029484,526.63952 37.237155,528.18015 31.519052,528.18016 C 26.363835,528.18015 22.364112,526.83951 19.519872,524.15821 C 16.675618,521.47692 15.253495,518.12159 15.253497,514.09223 C 15.253495,510.44805 16.512667,507.26309 19.031017,504.53733 C 21.549354,501.81161 25.297242,500.44875 30.274692,500.44872 L 43.118258,500.44872 L 43.118258,495.64905 C 43.118228,491.70861 39.962892,489.73838 33.652239,489.73834 C 29.267337,489.73838 26.349021,490.90867 24.897282,493.24921 L 17.608892,487.73848 C 20.838292,483.23512 26.023118,480.98343 33.163384,480.98338 C 38.851858,480.98343 43.473759,482.09446 47.029102,484.31649 C 50.584377,486.5386 52.362031,490.49388 52.362071,496.18234 L 52.362071,527.64686 L 43.118258,527.64686 z M 43.118258,511.47019 L 43.118258,508.09264 L 32.007907,508.09264 C 26.645297,508.09266 23.964001,509.94438 23.964013,513.64782 C 23.964001,515.21809 24.638029,516.58096 25.986097,517.73642 C 27.334138,518.89191 29.578427,519.46965 32.71897,519.46964 C 36.570534,519.46965 39.266644,519.04005 40.807305,518.18084 C 42.347911,517.32165 43.118228,515.08477 43.118258,511.47019 L 43.118258,511.47019 z M 64.938985,481.51668 L 64.938985,467.51764 L 74.227239,467.51764 L 74.227239,481.51668 L 80.982332,481.51668 L 80.982332,488.6273 L 74.227239,488.6273 L 74.227239,515.46991 C 74.227223,517.78088 75.323443,518.93635 77.515903,518.93634 L 80.982332,518.93634 L 80.982332,527.64686 L 76.138219,527.64686 C 72.908796,527.64686 70.234907,526.66915 68.116545,524.71373 C 65.998164,522.75831 64.938978,519.9585 64.938985,516.3143 L 64.938985,488.6273 L 60.317079,488.6273 L 60.317079,481.51668 L 64.938985,481.51668 z M 86.626394,527.64686 L 86.626394,520.31403 L 109.73592,489.73834 L 87.915195,489.73834 L 87.915195,481.51668 L 121.02404,481.51668 L 121.02404,488.89395 L 97.914511,518.93634 L 121.02404,518.93634 L 121.02404,527.64686 L 86.626394,527.64686 z M 128.80127,507.11493 L 128.80127,497.82668 L 156.22162,497.82668 L 156.22162,507.11493 L 128.80127,507.11493 z "
+       style="font-size:91.01599884px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1951"
+       d="M -177.93328,618.75813 L -177.93328,579.73857 L -182.59962,579.73857 L -182.59962,572.62795 L -177.93328,572.62795 L -177.93328,566.53947 C -177.93328,562.24353 -176.74818,559.08078 -174.37796,557.05123 C -172.00777,555.02181 -169.01539,554.00706 -165.4008,554.007 L -159.40121,554.007 L -159.40121,562.71751 L -164.6453,562.71751 C -167.34143,562.71757 -168.68948,563.99155 -168.68947,566.53947 L -168.68947,572.62795 L -159.40121,572.62795 L -159.40121,579.73857 L -168.68947,579.73857 L -168.68947,618.75813 L -177.93328,618.75813 z M -129.93656,618.75813 L -129.93656,614.66952 L -130.15877,614.66952 C -132.02533,617.75079 -135.81766,619.29142 -141.53577,619.29142 C -146.69098,619.29142 -150.69071,617.95077 -153.53495,615.26948 C -156.3792,612.58818 -157.80132,609.23286 -157.80132,605.2035 C -157.80132,601.55932 -156.54215,598.37435 -154.0238,595.64859 C -151.50546,592.92288 -147.75758,591.56001 -142.78013,591.55999 L -129.93656,591.55999 L -129.93656,586.76031 C -129.93659,582.81988 -133.09193,580.84964 -139.40258,580.84961 C -143.78748,580.84964 -146.7058,582.01993 -148.15754,584.36048 L -155.44593,578.84974 C -152.21653,574.34639 -147.0317,572.0947 -139.89143,572.09465 C -134.20296,572.0947 -129.58106,573.20573 -126.02572,575.42775 C -122.47044,577.64987 -120.69279,581.60515 -120.69275,587.29361 L -120.69275,618.75813 L -129.93656,618.75813 z M -129.93656,602.58145 L -129.93656,599.20391 L -141.04691,599.20391 C -146.40952,599.20393 -149.09082,601.05565 -149.09081,604.75908 C -149.09082,606.32936 -148.41679,607.69223 -147.06872,608.84769 C -145.72068,610.00318 -143.47639,610.58091 -140.33585,610.58091 C -136.48428,610.58091 -133.78817,610.15132 -132.24751,609.29211 C -130.70691,608.43292 -129.93659,606.19603 -129.93656,602.58145 L -129.93656,602.58145 z M -108.64913,618.75813 L -108.64913,554.007 L -99.360873,554.007 L -99.360873,577.56094 L -99.183107,577.56094 C -96.309248,573.91679 -92.309526,572.0947 -87.183928,572.09465 C -83.599019,572.0947 -80.139999,573.45756 -76.806859,576.18326 C -73.473795,578.90904 -71.807244,582.87913 -71.807201,588.09356 L -71.807201,618.75813 L -81.095455,618.75813 L -81.095455,591.29334 C -81.095489,588.18247 -81.962095,585.75301 -83.695277,584.00495 C -85.428521,582.25695 -87.583927,581.38294 -90.161502,581.3829 C -92.828008,581.38294 -95.027855,582.25695 -96.761051,584.00495 C -98.494282,585.75301 -99.360888,588.18247 -99.360873,591.29334 L -99.360873,618.75813 L -108.64913,618.75813 z M -59.763583,618.75813 L -59.763583,572.62795 L -50.475329,572.62795 L -50.475329,577.56094 L -50.297563,577.56094 C -47.423704,573.91679 -43.423982,572.0947 -38.298384,572.09465 C -34.920868,572.0947 -31.706276,573.2798 -28.654599,575.64996 L -35.365251,583.64941 C -37.379957,582.13844 -39.424259,581.38294 -41.498165,581.3829 C -43.779513,581.38294 -45.846036,582.14585 -47.697741,583.67164 C -49.549483,585.19749 -50.475344,587.64917 -50.475329,591.02669 L -50.475329,618.75813 L -59.763583,618.75813 z M -27.410232,618.75813 L -27.410232,611.42529 L -4.3007012,580.84961 L -26.121431,580.84961 L -26.121431,572.62795 L 6.9874158,572.62795 L 6.9874158,580.00522 L -16.122115,610.04761 L 6.9874158,610.04761 L 6.9874158,618.75813 L -27.410232,618.75813 z M 51.695457,599.20391 L 22.986309,599.20391 C 22.986296,602.99626 24.015854,605.8405 26.074986,607.73666 C 28.134087,609.63283 30.763534,610.58091 33.963336,610.58091 C 37.785269,610.58091 41.162812,609.09954 44.095976,606.13677 L 50.806629,611.86971 C 48.525265,614.5362 45.955072,616.43977 43.096045,617.58043 C 40.236951,618.72109 37.251973,619.29142 34.141102,619.29142 C 29.400665,619.29142 24.808391,617.75819 20.364266,614.69174 C 15.920119,611.62529 13.698051,605.35165 13.698055,595.8708 C 13.698051,586.89367 15.749761,580.68669 19.85319,577.24985 C 23.956599,573.8131 28.24519,572.0947 32.718977,572.09465 C 37.785269,572.0947 42.214591,573.85013 46.006957,577.36096 C 49.79925,580.87186 51.695415,585.60487 51.695457,591.55999 L 51.695457,599.20391 z M 22.986309,591.55999 L 42.451644,591.55999 C 42.303474,588.09359 41.325764,585.44192 39.518512,583.60497 C 37.7112,581.7681 35.444691,580.84964 32.718977,580.84961 C 29.963589,580.84964 27.674859,581.7681 25.852779,583.60497 C 24.030668,585.44192 23.075178,588.09359 22.986309,591.55999 L 22.986309,591.55999 z M 61.472577,603.29252 L 61.472577,572.62795 L 70.760831,572.62795 L 70.760831,600.13718 C 70.760816,603.27772 71.627422,605.71459 73.360654,607.44779 C 75.093849,609.18101 77.293696,610.04762 79.960202,610.04761 C 82.537777,610.04762 84.693183,609.18101 86.426427,607.44779 C 88.159609,605.71459 89.026215,603.27772 89.026249,600.13718 L 89.026249,572.62795 L 98.314503,572.62795 L 98.314503,618.75813 L 89.026249,618.75813 L 89.026249,613.86957 L 88.848483,613.86957 C 85.974575,617.48414 82.00448,619.29142 76.938187,619.29142 C 73.293973,619.29142 69.805327,617.93596 66.472236,615.22503 C 63.139122,612.51411 61.472571,608.53661 61.472577,603.29252 L 61.472577,603.29252 z M 136.26746,618.71368 L 136.26746,613.95845 C 133.03802,617.51377 129.06793,619.29142 124.35716,619.29142 C 121.33513,619.29142 118.80938,618.69146 116.7799,617.49155 C 114.7504,616.29163 113.21718,615.02505 112.18022,613.69181 C 110.84697,611.97341 109.93592,610.15132 109.44707,608.22551 C 108.95821,606.29973 108.71378,602.13706 108.71379,595.73748 C 108.71378,589.33794 108.95821,585.17527 109.44707,583.24944 C 109.93592,581.32369 110.84697,579.48678 112.18022,577.73871 C 113.21718,576.43514 114.7504,575.16856 116.7799,573.93897 C 118.80938,572.70947 121.33513,572.0947 124.35716,572.09465 C 128.86054,572.0947 132.83063,573.91679 136.26746,577.56094 L 136.26746,572.62795 L 145.55571,572.62795 L 145.55571,617.69153 C 145.55567,624.62439 143.53359,629.73514 139.48946,633.02382 C 135.44526,636.31246 130.80114,637.95679 125.55708,637.95681 C 122.5943,637.95679 119.6908,637.24573 116.84657,635.82363 C 114.00231,634.40148 111.55803,632.53495 109.51373,630.22401 L 116.71324,624.49107 C 117.83908,625.61691 119.17973,626.59462 120.73519,627.4242 C 122.29062,628.25376 123.95717,628.66855 125.73485,628.66856 C 128.81609,628.66855 131.34184,627.80935 133.31211,626.09096 C 135.28231,624.37255 136.26743,621.91346 136.26746,618.71368 L 136.26746,618.71368 z M 118.00204,595.73748 C 118.00203,599.44095 118.09832,601.90004 118.29091,603.11475 C 118.48348,604.3295 118.99455,605.45534 119.82414,606.4923 C 120.4463,607.32188 121.36476,608.12183 122.57951,608.89213 C 123.79422,609.66246 125.33485,610.04762 127.20141,610.04761 C 129.00867,610.04762 130.51227,609.66246 131.71222,608.89213 C 132.91211,608.12183 133.83797,607.32188 134.4898,606.4923 C 135.28972,605.45534 135.78598,604.3295 135.97859,603.11475 C 136.17114,601.90004 136.26743,599.44095 136.26746,595.73748 C 136.26743,592.03405 136.17114,589.57496 135.97859,588.3602 C 135.78598,587.1455 135.28972,586.00484 134.4898,584.93822 C 133.83797,584.13831 132.91211,583.34577 131.71222,582.5606 C 130.51227,581.77551 129.00867,581.38294 127.20141,581.3829 C 125.33485,581.38294 123.79422,581.77551 122.57951,582.5606 C 121.36476,583.34577 120.4463,584.13831 119.82414,584.93822 C 118.99455,586.00484 118.48348,587.1455 118.29091,588.3602 C 118.09832,589.57496 118.00203,592.03405 118.00204,595.73748 L 118.00204,595.73748 z M 193.37466,599.20391 L 164.66551,599.20391 C 164.66549,602.99626 165.69505,605.8405 167.75419,607.73666 C 169.81329,609.63283 172.44273,610.58091 175.64254,610.58091 C 179.46447,610.58091 182.84201,609.09954 185.77518,606.13677 L 192.48583,611.86971 C 190.20446,614.5362 187.63427,616.43977 184.77524,617.58043 C 181.91615,618.72109 178.93117,619.29142 175.8203,619.29142 C 171.07986,619.29142 166.48759,617.75819 162.04347,614.69174 C 157.59932,611.62529 155.37725,605.35165 155.37725,595.8708 C 155.37725,586.89367 157.42896,580.68669 161.53239,577.24985 C 165.6358,573.8131 169.92439,572.0947 174.39818,572.09465 C 179.46447,572.0947 183.89379,573.85013 187.68616,577.36096 C 191.47845,580.87186 193.37461,585.60487 193.37466,591.55999 L 193.37466,599.20391 z M 164.66551,591.55999 L 184.13084,591.55999 C 183.98267,588.09359 183.00496,585.44192 181.19771,583.60497 C 179.3904,581.7681 177.12389,580.84964 174.39818,580.84961 C 171.64279,580.84964 169.35406,581.7681 167.53198,583.60497 C 165.70987,585.44192 164.75438,588.09359 164.66551,591.55999 L 164.66551,591.55999 z "
+       style="font-size:91.01599884px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-34.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-34.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-34.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1026-34.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="56.694665"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g4967"
+     transform="translate(258.4687,-263.4318)">
+    <path
+       id="text4949"
+       d="M -68.242547,568.32655 L -68.242547,529.30712 L -72.908879,529.30712 L -72.908879,522.19652 L -68.242547,522.19652 L -68.242547,516.10807 C -68.242554,511.81214 -67.057455,508.6494 -64.687246,506.61986 C -62.317059,504.59044 -59.324684,503.5757 -55.710112,503.57563 L -49.710543,503.57563 L -49.710543,512.28612 L -54.954611,512.28612 C -57.650732,512.28618 -58.998782,513.56016 -58.998765,516.10807 L -58.998765,522.19652 L -49.710543,522.19652 L -49.710543,529.30712 L -58.998765,529.30712 L -58.998765,568.32655 L -68.242547,568.32655 z M -44.466474,568.32655 L -44.466474,522.19652 L -35.178252,522.19652 L -35.178252,527.1295 L -35.000487,527.1295 C -32.126637,523.48536 -28.126928,521.66327 -23.001347,521.66323 C -19.623843,521.66327 -16.409262,522.84837 -13.357595,525.21853 L -20.068224,533.21795 C -22.082923,531.70699 -24.127219,530.95149 -26.201118,530.95145 C -28.482458,530.95149 -30.548974,531.71439 -32.400673,533.24017 C -34.252408,534.76602 -35.178267,537.2177 -35.178252,540.5952 L -35.178252,568.32655 L -44.466474,568.32655 z M 26.639536,548.77239 L -2.0695155,548.77239 C -2.0695286,552.56473 -1.0399738,555.40897 1.0191519,557.30511 C 3.0782452,559.20128 5.7076836,560.14936 8.9074749,560.14935 C 12.729395,560.14936 16.106927,558.66799 19.040081,555.70523 L 25.750711,561.43815 C 23.469355,564.10463 20.899171,566.0082 18.040153,567.14885 C 15.181069,568.28951 12.196101,568.85984 9.08524,568.85984 C 4.3448197,568.85984 -0.24743888,567.32662 -4.6915496,564.26017 C -9.1356813,561.19373 -11.357742,554.92011 -11.357738,545.4393 C -11.357742,536.4622 -9.3060393,530.25524 -5.2026241,526.81841 C -1.0992288,523.38167 3.1893482,521.66327 7.6631197,521.66323 C 12.729395,521.66327 17.158703,523.4187 20.951055,526.92952 C 24.743336,530.44041 26.639495,535.1734 26.639536,541.1285 L 26.639536,548.77239 z M -2.0695155,541.1285 L 17.395755,541.1285 C 17.247585,537.66211 16.269878,535.01045 14.462632,533.17351 C 12.655326,531.33664 10.388825,530.41819 7.6631197,530.41815 C 4.9077417,530.41819 2.6190193,531.33664 0.79694558,533.17351 C -1.0251601,535.01045 -1.9806462,537.66211 -2.0695155,541.1285 L -2.0695155,541.1285 z M 36.683257,568.32655 L 36.683257,522.19652 L 45.971479,522.19652 L 45.971479,568.32655 L 36.683257,568.32655 z M 36.683257,512.86386 L 36.683257,503.57563 L 45.971479,503.57563 L 45.971479,512.86386 L 36.683257,512.86386 z "
+       style="font-size:91.01569366px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1965"
+       d="M -190.61215,382.75483 L -190.61215,318.0037 L -180.7906,318.0037 L -180.7906,351.3792 L -180.56839,351.3792 L -153.94799,318.0037 L -142.2599,318.0037 L -163.01403,343.55751 L -140.08227,382.75483 L -151.72592,382.75483 L -169.4136,351.11255 L -180.7906,363.02285 L -180.7906,382.75483 L -190.61215,382.75483 z M -133.9938,382.75483 L -133.9938,336.62465 L -124.70554,336.62465 L -124.70554,341.55765 L -124.52778,341.55765 C -121.65392,337.9135 -117.65419,336.0914 -112.5286,336.09135 C -109.15108,336.0914 -105.93649,337.2765 -102.88481,339.64667 L -109.59546,347.64612 C -111.61017,346.13515 -113.65447,345.37964 -115.72838,345.37961 C -118.00972,345.37964 -120.07625,346.14255 -121.92795,347.66834 C -123.77969,349.19419 -124.70556,351.64588 -124.70554,355.02339 L -124.70554,382.75483 L -133.9938,382.75483 z M -74.39787,382.75483 L -74.39787,378.66622 L -74.620077,378.66622 C -76.486645,381.74749 -80.278974,383.28813 -85.997077,383.28813 C -91.152294,383.28813 -95.152016,381.94748 -97.996257,379.26618 C -100.84051,376.58489 -102.26263,373.22956 -102.26263,369.2002 C -102.26263,365.55602 -101.00346,362.37106 -98.485112,359.6453 C -95.966775,356.91958 -92.218887,355.55672 -87.241437,355.55669 L -74.39787,355.55669 L -74.39787,350.75702 C -74.397901,346.81658 -77.553237,344.84635 -83.86389,344.84631 C -88.248792,344.84635 -91.167108,346.01664 -92.618847,348.35718 L -99.907237,342.84645 C -96.677836,338.3431 -91.493011,336.0914 -84.352745,336.09135 C -78.664271,336.0914 -74.04237,337.20243 -70.487027,339.42446 C -66.931752,341.64657 -65.154098,345.60185 -65.154058,351.29031 L -65.154058,382.75483 L -74.39787,382.75483 z M -74.39787,366.57816 L -74.39787,363.20061 L -85.508222,363.20061 C -90.870832,363.20063 -93.552127,365.05235 -93.552116,368.75579 C -93.552127,370.32606 -92.8781,371.68893 -91.530032,372.8444 C -90.181991,373.99988 -87.937702,374.57762 -84.797159,374.57761 C -80.945595,374.57762 -78.249485,374.14802 -76.708823,373.28881 C -75.168218,372.42962 -74.397901,370.19274 -74.39787,366.57816 L -74.39787,366.57816 z M -53.110441,382.75483 L -53.110441,336.62465 L -43.822187,336.62465 L -43.822187,341.55765 L -43.644421,341.55765 C -40.770562,337.9135 -36.77084,336.0914 -31.645242,336.09135 C -28.060333,336.0914 -24.601314,337.45427 -21.268174,340.17996 C -17.935109,342.90574 -16.268558,346.87584 -16.268516,352.09026 L -16.268516,382.75483 L -25.556769,382.75483 L -25.556769,355.29004 C -25.556803,352.17917 -26.423409,349.74971 -28.156592,348.00165 C -29.889836,346.25366 -32.045242,345.37964 -34.622816,345.37961 C -37.289322,345.37964 -39.48917,346.25366 -41.222365,348.00165 C -42.955596,349.74971 -43.822202,352.17917 -43.822187,355.29004 L -43.822187,382.75483 L -53.110441,382.75483 z M -4.224897,382.75483 L -4.224897,318.0037 L 5.0633568,318.0037 L 5.0633568,358.31206 L 5.2411224,358.31206 L 22.973243,336.62465 L 34.083595,336.62465 L 18.173571,354.66786 L 36.261224,382.75483 L 24.617575,382.75483 L 12.351747,361.20075 L 5.0633568,369.51129 L 5.0633568,382.75483 L -4.224897,382.75483 z M 78.791653,363.20061 L 50.082505,363.20061 C 50.082492,366.99296 51.11205,369.83721 53.171183,371.73336 C 55.230283,373.62954 57.85973,374.57762 61.059532,374.57761 C 64.881465,374.57762 68.259009,373.09624 71.192173,370.13347 L 77.902825,375.86641 C 75.621461,378.5329 73.051269,380.43647 70.192241,381.57713 C 67.333147,382.7178 64.348169,383.28813 61.237298,383.28813 C 56.496862,383.28813 51.904588,381.7549 47.460462,378.68844 C 43.016315,375.62199 40.794247,369.34835 40.794251,359.86751 C 40.794247,350.89037 42.845957,344.6834 46.949386,341.24656 C 51.052795,337.8098 55.341386,336.0914 59.815173,336.09135 C 64.881465,336.0914 69.310787,337.84683 73.103153,341.35766 C 76.895446,344.86857 78.791611,349.60157 78.791653,355.55669 L 78.791653,363.20061 z M 50.082505,355.55669 L 69.547841,355.55669 C 69.39967,352.09029 68.42196,349.43862 66.614708,347.60168 C 64.807396,345.7648 62.540887,344.84635 59.815173,344.84631 C 57.059785,344.84635 54.771055,345.7648 52.948976,347.60168 C 51.126864,349.43862 50.171374,352.09029 50.082505,355.55669 L 50.082505,355.55669 z M 88.568774,382.75483 L 88.568774,336.62465 L 97.857027,336.62465 L 97.857027,341.55765 L 98.034793,341.55765 C 100.90865,337.9135 104.90837,336.0914 110.03397,336.09135 C 113.61888,336.0914 117.0779,337.45427 120.41104,340.17996 C 123.7441,342.90574 125.41066,346.87584 125.4107,352.09026 L 125.4107,382.75483 L 116.12245,382.75483 L 116.12245,355.29004 C 116.12241,352.17917 115.2558,349.74971 113.52262,348.00165 C 111.78938,346.25366 109.63397,345.37964 107.0564,345.37961 C 104.38989,345.37964 102.19004,346.25366 100.45685,348.00165 C 98.723619,349.74971 97.857012,352.17917 97.857027,355.29004 L 97.857027,382.75483 L 88.568774,382.75483 z M 136.25438,362.2229 L 136.25438,352.93465 L 163.67473,352.93465 L 163.67473,362.2229 L 136.25438,362.2229 z "
+       style="font-size:91.01599884px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1969"
+       d="M -196.78948,473.79612 L -196.78948,434.77657 L -201.45583,434.77657 L -201.45583,427.66594 L -196.78948,427.66594 L -196.78948,421.57747 C -196.78949,417.28152 -195.60438,414.11878 -193.23417,412.08923 C -190.86397,410.0598 -187.87159,409.04506 -184.257,409.04499 L -178.25741,409.04499 L -178.25741,417.75551 L -183.5015,417.75551 C -186.19763,417.75556 -187.54568,419.02955 -187.54567,421.57747 L -187.54567,427.66594 L -178.25741,427.66594 L -178.25741,434.77657 L -187.54567,434.77657 L -187.54567,473.79612 L -196.78948,473.79612 z M -148.79276,473.79612 L -148.79276,469.70751 L -149.01497,469.70751 C -150.88154,472.78878 -154.67386,474.32942 -160.39197,474.32942 C -165.54718,474.32942 -169.54691,472.98877 -172.39115,470.30747 C -175.2354,467.62618 -176.65752,464.27085 -176.65752,460.24149 C -176.65752,456.59731 -175.39835,453.41235 -172.88,450.68659 C -170.36167,447.96088 -166.61378,446.59801 -161.63633,446.59798 L -148.79276,446.59798 L -148.79276,441.79831 C -148.79279,437.85787 -151.94813,435.88764 -158.25878,435.8876 C -162.64368,435.88764 -165.562,437.05793 -167.01374,439.39847 L -174.30213,433.88774 C -171.07273,429.38439 -165.8879,427.13269 -158.74764,427.13264 C -153.05916,427.13269 -148.43726,428.24372 -144.88192,430.46575 C -141.32664,432.68786 -139.54899,436.64314 -139.54895,442.3316 L -139.54895,473.79612 L -148.79276,473.79612 z M -148.79276,457.61945 L -148.79276,454.2419 L -159.90311,454.2419 C -165.26572,454.24192 -167.94702,456.09364 -167.94701,459.79708 C -167.94702,461.36735 -167.27299,462.73022 -165.92492,463.88569 C -164.57688,465.04117 -162.33259,465.61891 -159.19205,465.6189 C -155.34049,465.61891 -152.64438,465.18931 -151.10371,464.3301 C -149.56311,463.47091 -148.79279,461.23403 -148.79276,457.61945 L -148.79276,457.61945 z M -127.50533,473.79612 L -127.50533,409.04499 L -118.21707,409.04499 L -118.21707,432.59894 L -118.03931,432.59894 C -115.16545,428.95479 -111.16573,427.13269 -106.04013,427.13264 C -102.45522,427.13269 -98.996201,428.49556 -95.663061,431.22125 C -92.329996,433.94703 -90.663445,437.91713 -90.663402,443.13155 L -90.663402,473.79612 L -99.951656,473.79612 L -99.951656,446.33133 C -99.95169,443.22046 -100.8183,440.791 -102.55148,439.04294 C -104.28472,437.29495 -106.44013,436.42094 -109.0177,436.4209 C -111.68421,436.42094 -113.88406,437.29495 -115.61725,439.04294 C -117.35048,440.791 -118.21709,443.22046 -118.21707,446.33133 L -118.21707,473.79612 L -127.50533,473.79612 z M -78.619784,473.79612 L -78.619784,427.66594 L -69.33153,427.66594 L -69.33153,432.59894 L -69.153765,432.59894 C -66.279905,428.95479 -62.280183,427.13269 -57.154585,427.13264 C -53.777069,427.13269 -50.562477,428.31779 -47.5108,430.68796 L -54.221452,438.68741 C -56.236158,437.17644 -58.28046,436.42094 -60.354366,436.4209 C -62.635714,436.42094 -64.702237,437.18385 -66.553942,438.70963 C -68.405684,440.23549 -69.331546,442.68717 -69.33153,446.06468 L -69.33153,473.79612 L -78.619784,473.79612 z M -46.266433,473.79612 L -46.266433,466.46329 L -23.156902,435.8876 L -44.977633,435.8876 L -44.977633,427.66594 L -11.868785,427.66594 L -11.868785,435.04321 L -34.978316,465.0856 L -11.868785,465.0856 L -11.868785,473.79612 L -46.266433,473.79612 z M 32.839256,454.2419 L 4.1301075,454.2419 C 4.1300944,458.03425 5.1596526,460.8785 7.2187852,462.77465 C 9.2778854,464.67083 11.907333,465.61891 15.107135,465.6189 C 18.929068,465.61891 22.306611,464.13753 25.239775,461.17476 L 31.950428,466.9077 C 29.669063,469.57419 27.098871,471.47776 24.239844,472.61842 C 21.380749,473.75909 18.395771,474.32942 15.2849,474.32942 C 10.544464,474.32942 5.9521902,472.79619 1.5080646,469.72973 C -2.936082,466.66328 -5.1581501,460.38964 -5.1581462,450.9088 C -5.1581501,441.93166 -3.1064406,435.72469 0.99698845,432.28785 C 5.1003975,428.85109 9.3889889,427.13269 13.862775,427.13264 C 18.929068,427.13269 23.35839,428.88812 27.150756,432.39895 C 30.943049,435.90986 32.839214,440.64286 32.839256,446.59798 L 32.839256,454.2419 z M 4.1301075,446.59798 L 23.595443,446.59798 C 23.447273,443.13158 22.469563,440.47991 20.66231,438.64297 C 18.854999,436.80609 16.588489,435.88764 13.862775,435.8876 C 11.107388,435.88764 8.818658,436.80609 6.9965782,438.64297 C 5.1744664,440.47991 4.2189772,443.13158 4.1301075,446.59798 L 4.1301075,446.59798 z M 42.616376,458.33051 L 42.616376,427.66594 L 51.90463,427.66594 L 51.90463,455.17517 C 51.904615,458.31571 52.771221,460.75258 54.504452,462.48578 C 56.237647,464.21901 58.437495,465.08561 61.104001,465.0856 C 63.681575,465.08561 65.836981,464.21901 67.570226,462.48578 C 69.303408,460.75258 70.170014,458.31571 70.170048,455.17517 L 70.170048,427.66594 L 79.458302,427.66594 L 79.458302,473.79612 L 70.170048,473.79612 L 70.170048,468.90757 L 69.992282,468.90757 C 67.118374,472.52213 63.148279,474.32942 58.081985,474.32942 C 54.437772,474.32942 50.949125,472.97395 47.616034,470.26303 C 44.282921,467.55211 42.61637,463.57461 42.616376,458.33051 L 42.616376,458.33051 z M 117.41126,473.75168 L 117.41126,468.99645 C 114.18182,472.55176 110.21173,474.32942 105.50096,474.32942 C 102.47893,474.32942 99.95318,473.72946 97.923703,472.52954 C 95.894202,471.32962 94.360975,470.06305 93.324018,468.7298 C 91.990769,467.01141 91.079721,465.18931 90.590871,463.26351 C 90.102011,461.33772 89.857584,457.17505 89.857588,450.77547 C 89.857584,444.37594 90.102011,440.21326 90.590871,438.28744 C 91.079721,436.36168 91.990769,434.52477 93.324018,432.7767 C 94.360975,431.47313 95.894202,430.20655 97.923703,428.97696 C 99.95318,427.74746 102.47893,427.13269 105.50096,427.13264 C 110.00433,427.13269 113.97443,428.95479 117.41126,432.59894 L 117.41126,427.66594 L 126.69951,427.66594 L 126.69951,472.72953 C 126.69947,479.66238 124.67739,484.77314 120.63326,488.06181 C 116.58906,491.35046 111.94494,492.99479 106.70088,492.99481 C 103.7381,492.99479 100.8346,492.28373 97.990365,490.86162 C 95.146106,489.43948 92.701831,487.57294 90.657533,485.262 L 97.857041,479.52906 C 98.982877,480.6549 100.32352,481.63261 101.87899,482.46219 C 103.43442,483.29176 105.10097,483.70654 106.87865,483.70655 C 109.95989,483.70654 112.48564,482.84734 114.45591,481.12895 C 116.42611,479.41055 117.41123,476.95146 117.41126,473.75168 L 117.41126,473.75168 z M 99.145842,450.77547 C 99.145828,454.47894 99.242118,456.93803 99.434711,458.15275 C 99.627276,459.36749 100.13835,460.49334 100.96794,461.53029 C 101.5901,462.35988 102.50856,463.15982 103.72331,463.93013 C 104.93802,464.70045 106.47865,465.08561 108.34521,465.0856 C 110.15247,465.08561 111.65607,464.70045 112.85602,463.93013 C 114.0559,463.15982 114.98177,462.35988 115.6336,461.53029 C 116.43352,460.49334 116.92978,459.36749 117.12239,458.15275 C 117.31494,456.93803 117.41123,454.47894 117.41126,450.77547 C 117.41123,447.07205 117.31494,444.61296 117.12239,443.3982 C 116.92978,442.1835 116.43352,441.04284 115.6336,439.97621 C 114.98177,439.1763 114.0559,438.38376 112.85602,437.59859 C 111.65607,436.8135 110.15247,436.42094 108.34521,436.4209 C 106.47865,436.42094 104.93802,436.8135 103.72331,437.59859 C 102.50856,438.38376 101.5901,439.1763 100.96794,439.97621 C 100.13835,441.04284 99.627276,442.1835 99.434711,443.3982 C 99.242118,444.61296 99.145828,447.07205 99.145842,450.77547 L 99.145842,450.77547 z M 174.51845,454.2419 L 145.80931,454.2419 C 145.80929,458.03425 146.83885,460.8785 148.89798,462.77465 C 150.95708,464.67083 153.58653,465.61891 156.78633,465.6189 C 160.60827,465.61891 163.98581,464.13753 166.91897,461.17476 L 173.62963,466.9077 C 171.34826,469.57419 168.77807,471.47776 165.91904,472.61842 C 163.05995,473.75909 160.07497,474.32942 156.9641,474.32942 C 152.22366,474.32942 147.63139,472.79619 143.18726,469.72973 C 138.74312,466.66328 136.52105,460.38964 136.52105,450.9088 C 136.52105,441.93166 138.57276,435.72469 142.67619,432.28785 C 146.7796,428.85109 151.06819,427.13269 155.54197,427.13264 C 160.60827,427.13269 165.03759,428.88812 168.82995,432.39895 C 172.62225,435.90986 174.51841,440.64286 174.51845,446.59798 L 174.51845,454.2419 z M 145.80931,446.59798 L 165.27464,446.59798 C 165.12647,443.13158 164.14876,440.47991 162.34151,438.64297 C 160.5342,436.80609 158.26769,435.88764 155.54197,435.8876 C 152.78659,435.88764 150.49786,436.80609 148.67578,438.64297 C 146.85367,440.47991 145.89818,443.13158 145.80931,446.59798 L 145.80931,446.59798 z "
+       style="font-size:91.01599884px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-35.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-35.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-35.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1026-35.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="191.38167"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g4039"
+     transform="translate(55.09133,-395.1993)">
+    <path
+       style="font-size:101.63775635px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       d="M 129.01275,706.92426 L 129.01275,663.35104 L 123.80183,663.35104 L 123.80183,655.41059 L 129.01275,655.41059 L 129.01275,648.61158 C 129.01274,643.81429 130.33615,640.28245 132.98297,638.01605 C 135.62978,635.74978 138.97138,634.61661 143.00779,634.61654 L 149.70755,634.61654 L 149.70755,644.34359 L 143.85147,644.34359 C 140.84069,644.34365 139.33532,645.76632 139.33533,648.61158 L 139.33533,655.41059 L 149.70755,655.41059 L 149.70755,663.35104 L 139.33533,663.35104 L 139.33533,706.92426 L 129.01275,706.92426 z M 155.56363,706.92426 L 155.56363,655.41059 L 165.93584,655.41059 L 165.93584,660.91928 L 166.13435,660.91928 C 169.3436,656.84985 173.8101,654.81511 179.53386,654.81506 C 183.30554,654.81511 186.89528,656.13852 190.3031,658.78529 L 182.8093,667.71829 C 180.55947,666.03099 178.27659,665.18731 175.96066,665.18727 C 173.41307,665.18731 171.10538,666.03926 169.03758,667.74311 C 166.96974,669.44703 165.93582,672.18483 165.93584,675.95651 L 165.93584,706.92426 L 155.56363,706.92426 z M 234.96813,685.08802 L 202.90856,685.08802 C 202.90855,689.32295 204.05826,692.49913 206.3577,694.61656 C 208.6571,696.73403 211.59341,697.79275 215.16663,697.79274 C 219.43459,697.79275 223.2063,696.13849 226.48177,692.82996 L 233.97557,699.23195 C 231.42797,702.20962 228.55783,704.33535 225.36515,705.60912 C 222.17239,706.88291 218.83906,707.51979 215.36514,707.5198 C 210.07149,707.51979 204.94329,705.80764 199.98052,702.38332 C 195.01773,698.95901 192.53635,691.95322 192.53635,681.36594 C 192.53635,671.34116 194.82749,664.40981 199.4098,660.57189 C 203.99209,656.73405 208.78117,654.81511 213.77705,654.81506 C 219.43459,654.81511 224.38083,656.77541 228.61577,660.69596 C 232.85063,664.6166 234.96808,669.90195 234.96813,676.55204 L 234.96813,685.08802 z M 202.90856,676.55204 L 224.64554,676.55204 C 224.48008,672.68111 223.38827,669.71998 221.37011,667.66866 C 219.35188,665.61742 216.82086,664.59178 213.77705,664.59174 C 210.70011,664.59178 208.14428,665.61742 206.10956,667.66866 C 204.0748,669.71998 203.0078,672.68111 202.90856,676.55204 L 202.90856,676.55204 z M 246.18401,706.92426 L 246.18401,655.41059 L 256.55623,655.41059 L 256.55623,706.92426 L 246.18401,706.92426 z M 246.18401,644.98875 L 246.18401,634.61654 L 256.55623,634.61654 L 256.55623,644.98875 L 246.18401,644.98875 z "
+       id="text1982" />
+    <path
+       style="font-size:100.74059296px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       d="M 48.847317,514.54827 L 48.847317,442.87882 L 59.71825,442.87882 L 59.71825,504.31681 L 94.692157,504.31681 L 94.692157,514.54827 L 48.847317,514.54827 z M 104.33335,514.54827 L 104.33335,463.48932 L 114.614,463.48932 L 114.614,514.54827 L 104.33335,514.54827 z M 104.33335,453.15948 L 104.33335,442.87882 L 114.614,442.87882 L 114.614,453.15948 L 104.33335,453.15948 z M 167.78811,492.90479 L 136.01154,492.90479 C 136.01152,497.10233 137.15108,500.25047 139.43022,502.34922 C 141.70933,504.44799 144.61972,505.49737 148.1614,505.49736 C 152.39169,505.49737 156.13011,503.85771 159.37667,500.57839 L 166.80432,506.92386 C 164.2792,509.87525 161.4344,511.98221 158.2699,513.24475 C 155.10532,514.50728 151.80141,515.13855 148.35816,515.13855 C 143.11124,515.13855 138.0283,513.44151 133.10934,510.04741 C 128.19036,506.65333 125.73088,499.70938 125.73088,489.21556 C 125.73088,479.27926 128.0018,472.4091 132.54366,468.60505 C 137.0855,464.8011 141.8323,462.8991 146.78409,462.89904 C 152.39169,462.8991 157.29426,464.84209 161.49182,468.72803 C 165.6893,472.61406 167.78806,477.85276 167.78811,484.44415 L 167.78811,492.90479 z M 136.01154,484.44415 L 157.55664,484.44415 C 157.39264,480.60739 156.31047,477.6724 154.31012,475.63919 C 152.30971,473.60605 149.80103,472.58947 146.78409,472.58942 C 143.7343,472.58947 141.20104,473.60605 139.18428,475.63919 C 137.16748,477.6724 136.1099,480.60739 136.01154,484.44415 L 136.01154,484.44415 z M 180.23311,514.54827 L 180.23311,471.35968 L 175.06819,471.35968 L 175.06819,463.48932 L 180.23311,463.48932 L 180.23311,456.75033 C 180.2331,451.99538 181.54483,448.49471 184.16829,446.24832 C 186.79173,444.00206 190.10384,442.87889 194.10462,442.87882 L 200.74523,442.87882 L 200.74523,452.52001 L 194.94085,452.52001 C 191.95665,452.52007 190.46456,453.93018 190.46458,456.75033 L 190.46458,463.48932 L 200.74523,463.48932 L 200.74523,471.35968 L 190.46458,471.35968 L 190.46458,514.54827 L 180.23311,514.54827 z M 246.09818,492.90479 L 214.3216,492.90479 C 214.32159,497.10233 215.46115,500.25047 217.74029,502.34922 C 220.0194,504.44799 222.92979,505.49737 226.47147,505.49736 C 230.70176,505.49737 234.44017,503.85771 237.68673,500.57839 L 245.11438,506.92386 C 242.58927,509.87525 239.74446,511.98221 236.57996,513.24475 C 233.41539,514.50728 230.11148,515.13855 226.66823,515.13855 C 221.4213,515.13855 216.33837,513.44151 211.41941,510.04741 C 206.50043,506.65333 204.04094,499.70938 204.04095,489.21556 C 204.04094,479.27926 206.31187,472.4091 210.85373,468.60505 C 215.39556,464.8011 220.14237,462.8991 225.09416,462.89904 C 230.70176,462.8991 235.60433,464.84209 239.80189,468.72803 C 243.99937,472.61406 246.09813,477.85276 246.09818,484.44415 L 246.09818,492.90479 z M 214.3216,484.44415 L 235.86671,484.44415 C 235.70271,480.60739 234.62054,477.6724 232.62019,475.63919 C 230.61977,473.60605 228.1111,472.58947 225.09416,472.58942 C 222.04437,472.58947 219.5111,473.60605 217.49434,475.63919 C 215.47755,477.6724 214.41997,480.60739 214.3216,484.44415 L 214.3216,484.44415 z M 256.91992,514.54827 L 256.91992,463.48932 L 267.20058,463.48932 L 267.20058,468.94938 L 267.39734,468.94938 C 270.57826,464.91587 275.00533,462.8991 280.67857,462.89904 C 284.41696,462.8991 287.97501,464.21082 291.35274,466.83422 L 283.92509,475.68838 C 281.69513,474.01597 279.4324,473.17974 277.13691,473.1797 C 274.61181,473.17974 272.32449,474.02417 270.27494,475.71297 C 268.22535,477.40186 267.20056,480.11549 267.20058,483.85387 L 267.20058,514.54827 L 256.91992,514.54827 z M 294.74685,491.82261 L 294.74685,481.54196 L 325.09692,481.54196 L 325.09692,491.82261 L 294.74685,491.82261 z "
+       id="text1983" />
+    <path
+       style="font-size:100.73999786px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       d="M 42.266536,611.05261 L 23.574545,559.99396 L 34.445413,559.99396 L 46.39845,595.75469 L 46.595208,595.75469 L 58.597434,559.99396 L 69.468303,559.99396 L 50.727122,611.05261 L 42.266536,611.05261 z M 115.01774,589.40925 L 83.241352,589.40925 C 83.241337,593.60677 84.380892,596.75489 86.660019,598.85362 C 88.93911,600.95238 91.849483,602.00176 95.391146,602.00175 C 99.621408,602.00176 103.3598,600.36211 106.60634,597.0828 L 114.03395,603.42824 C 111.50885,606.37961 108.66406,608.48656 105.49958,609.74909 C 102.33502,611.01162 99.031136,611.64288 95.587904,611.64288 C 90.341008,611.64288 85.258103,609.94585 80.339174,606.55177 C 75.420222,603.15771 72.960752,596.2138 72.960756,585.72004 C 72.960752,575.78381 75.231663,568.91369 79.773495,565.10966 C 84.315306,561.30572 89.062083,559.40373 94.013842,559.40368 C 99.621408,559.40373 104.52395,561.34672 108.72149,565.23263 C 112.91894,569.11864 115.01769,574.35731 115.01774,580.94866 L 115.01774,589.40925 z M 83.241352,580.94866 L 104.78633,580.94866 C 104.62233,577.11192 103.54016,574.17695 101.53983,572.14375 C 99.539426,570.11063 97.030767,569.09405 94.013842,569.094 C 90.964074,569.09405 88.430819,570.11063 86.414071,572.14375 C 84.397288,574.17695 83.339716,577.11192 83.241352,580.94866 L 83.241352,580.94866 z M 125.83942,611.05261 L 125.83942,559.99396 L 136.12002,559.99396 L 136.12002,565.45399 L 136.31677,565.45399 C 139.49767,561.4205 143.92472,559.40373 149.59793,559.40368 C 153.33629,559.40373 156.89432,560.71545 160.27204,563.33884 L 152.84443,572.19294 C 150.61448,570.52054 148.35176,569.68432 146.05629,569.68428 C 143.5312,569.68432 141.2439,570.52874 139.19436,572.21754 C 137.14478,573.90641 136.12,576.62003 136.12002,580.35839 L 136.12002,611.05261 L 125.83942,611.05261 z M 164.99422,611.05261 L 164.99422,539.38358 L 175.27482,539.38358 L 175.27482,583.99841 L 175.47157,583.99841 L 195.09817,559.99396 L 207.39553,559.99396 L 189.78571,579.96487 L 209.80581,611.05261 L 196.91818,611.05261 L 183.34189,587.19572 L 175.27482,596.39415 L 175.27482,611.05261 L 164.99422,611.05261 z M 256.88011,589.40925 L 225.10373,589.40925 C 225.10371,593.60677 226.24327,596.75489 228.52239,598.85362 C 230.80148,600.95238 233.71186,602.00176 237.25352,602.00175 C 241.48378,602.00176 245.22218,600.36211 248.46871,597.0828 L 255.89632,603.42824 C 253.37122,606.37961 250.52643,608.48656 247.36195,609.74909 C 244.1974,611.01162 240.89351,611.64288 237.45028,611.64288 C 232.20338,611.64288 227.12048,609.94585 222.20155,606.55177 C 217.2826,603.15771 214.82313,596.2138 214.82313,585.72004 C 214.82313,575.78381 217.09404,568.91369 221.63587,565.10966 C 226.17768,561.30572 230.92446,559.40373 235.87622,559.40368 C 241.48378,559.40373 246.38633,561.34672 250.58386,565.23263 C 254.78132,569.11864 256.88006,574.35731 256.88011,580.94866 L 256.88011,589.40925 z M 225.10373,580.94866 L 246.64871,580.94866 C 246.4847,577.11192 245.40254,574.17695 243.4022,572.14375 C 241.4018,570.11063 238.89314,569.09405 235.87622,569.094 C 232.82645,569.09405 230.29319,570.11063 228.27644,572.14375 C 226.25966,574.17695 225.20209,577.11192 225.10373,580.94866 L 225.10373,580.94866 z M 267.7018,611.05261 L 267.7018,539.38358 L 277.9824,539.38358 L 277.9824,565.45399 L 278.17916,565.45399 C 281.36005,561.4205 285.7871,559.40373 291.46031,559.40368 C 295.42822,559.40373 299.2568,560.91221 302.94604,563.92911 C 306.63521,566.94611 308.47981,571.34036 308.47986,577.11189 L 308.47986,611.05261 L 298.19926,611.05261 L 298.19926,580.65353 C 298.19923,577.2103 297.24003,574.52128 295.32168,572.58646 C 293.40326,570.65171 291.01757,569.68432 288.16461,569.68428 C 285.21322,569.68432 282.77835,570.65171 280.85998,572.58646 C 278.94157,574.52128 277.98238,577.2103 277.9824,580.65353 L 277.9824,611.05261 L 267.7018,611.05261 z M 321.81019,611.05261 L 321.81019,559.99396 L 332.09078,559.99396 L 332.09078,565.45399 L 332.28754,565.45399 C 335.46844,561.4205 339.89548,559.40373 345.56869,559.40368 C 349.30705,559.40373 352.86509,560.71545 356.2428,563.33884 L 348.81519,572.19294 C 346.58524,570.52054 344.32253,569.68432 342.02705,569.68428 C 339.50197,569.68432 337.21466,570.52874 335.16512,572.21754 C 333.11554,573.90641 332.09076,576.62003 332.09078,580.35839 L 332.09078,611.05261 L 321.81019,611.05261 z "
+       id="text1987" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-36.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-36.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-36.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1026-36.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="56.694665"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g4007"
+     transform="translate(178.0324,-330.0984)">
+    <path
+       id="text2001"
+       style="font-size:94.86149597px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M -43.60527,449.35091 L -70.54561,449.35091 L -70.54561,386.07904 L -61.53365,386.07904 L -61.53365,440.24342 L -43.60527,440.24342 L -43.60527,449.35091 z M -37.39851,444.609 C -37.8424,443.8486 -38.12755,443.01003 -38.25396,442.09329 C -38.38038,441.17657 -38.44358,440.14886 -38.44358,439.01018 L -38.44358,433.88902 C -38.44358,430.5367 -37.6055,428.03836 -35.92932,426.39401 C -34.25316,424.74971 -32.73525,423.62744 -31.37558,423.0272 C -30.01593,422.427 -28.38753,422.12689 -26.49036,422.12687 L -20.41967,422.12687 L -20.41967,418.23606 C -20.41969,417.35024 -20.46697,416.62313 -20.56152,416.05472 C -20.65611,415.48638 -21.05127,414.75927 -21.747,413.87338 C -22.44277,412.98757 -23.39183,412.54464 -24.59417,412.54461 C -25.85831,412.54464 -26.9333,412.95572 -27.81914,413.77785 C -28.70501,414.60005 -29.2425,415.67504 -29.43162,417.00282 L -38.44358,417.00282 C -38.44358,413.33593 -37.13121,410.19009 -34.50646,407.5653 C -31.88172,404.9406 -28.70404,403.62823 -24.97341,403.62818 C -21.30457,403.62823 -18.11049,404.92468 -15.39115,407.51754 C -12.67186,410.11048 -11.31221,413.27224 -11.31217,417.00282 L -11.31217,449.35091 L -20.41967,449.35091 L -20.41967,444.79717 C -21.3673,446.37781 -22.55278,447.62698 -23.9761,448.54467 C -25.39947,449.46237 -26.99699,449.92122 -28.76868,449.92122 C -32.75213,449.92122 -35.62874,448.15048 -37.39851,444.609 L -37.39851,444.609 z M -29.33609,433.79349 L -29.33609,436.06891 C -29.3361,437.27129 -28.9091,438.36268 -28.05508,439.34309 C -27.20108,440.32352 -26.0793,440.81373 -24.68971,440.81373 C -23.92932,440.81373 -23.21716,440.62412 -22.55324,440.24487 C -21.88935,439.86564 -21.3837,439.34407 -21.03629,438.68015 C -20.68892,438.01626 -20.4993,437.16225 -20.46743,436.11813 C -20.43561,435.07403 -20.41969,434.331 -20.41967,433.88902 L -20.41967,429.52345 L -23.8357,429.52345 C -25.48004,429.52347 -26.80786,429.83998 -27.81914,430.47299 C -28.83045,431.10603 -29.3361,432.21287 -29.33609,433.79349 L -29.33609,433.79349 z M 22.29812,408.27457 C 22.80566,409.03501 23.15402,409.95271 23.34319,411.02765 C 23.53229,412.10268 23.62686,413.17767 23.62689,414.25262 L 23.62689,449.35091 L 14.5194,449.35091 L 14.5194,417.57312 C 14.51938,414.22081 13.03331,412.54464 10.06119,412.54461 C 8.73336,412.54464 7.65837,413.05077 6.83622,414.063 C 6.01405,415.0753 5.60297,416.24534 5.60298,417.57312 L 5.60298,449.35091 L -3.50451,449.35091 L -3.50451,404.19559 L 5.60298,404.19559 L 5.60298,408.56116 C 7.62749,405.27255 10.44234,403.62823 14.04753,403.62818 C 17.71443,403.62823 20.46462,405.17702 22.29812,408.27457 L 22.29812,408.27457 z M 49.34846,449.35091 L 49.34846,444.70163 C 48.46259,446.22052 47.29255,447.47017 45.83834,448.45059 C 44.3841,449.43101 42.77113,449.92122 40.99944,449.92122 C 36.88861,449.92122 34.29571,448.79846 33.22073,446.55295 C 32.14574,444.30744 31.56096,442.69448 31.4664,441.71405 C 31.37182,440.73364 31.32454,439.42127 31.32454,437.77693 L 31.32454,413.39861 C 31.32454,410.67934 32.24127,408.3711 34.07474,406.47391 C 35.90819,404.5768 38.21643,403.62823 40.99944,403.62818 C 42.70744,403.62823 44.30449,404.07067 45.79057,404.95551 C 47.27662,405.84044 48.46259,407.01048 49.34846,408.46563 L 49.34846,386.07904 L 58.45595,386.07904 L 58.45595,449.35091 L 49.34846,449.35091 z M 48.68262,414.72739 C 47.79868,413.20855 46.50271,412.44911 44.79471,412.44907 C 43.90884,412.44911 43.1026,412.68649 42.37599,413.16123 C 41.64934,413.63603 41.15913,414.20537 40.90536,414.86924 C 40.65155,415.53319 40.50922,416.22894 40.47835,416.9565 C 40.44746,417.68413 40.43202,418.23706 40.43203,418.6153 L 40.43203,434.83567 C 40.43202,435.46871 40.44746,436.10174 40.47835,436.73475 C 40.50922,437.36779 40.80933,438.18995 41.37868,439.20124 C 41.948,440.21255 43.11853,440.7182 44.89025,440.71819 C 46.72369,440.7182 47.92509,440.21255 48.49445,439.20124 C 49.06377,438.18995 49.34844,437.17769 49.34846,436.16445 L 49.34846,434.83567 L 49.34846,418.6153 C 49.34844,417.98231 49.33251,417.33384 49.30069,416.6699 C 49.26883,416.00603 49.0628,415.35852 48.68262,414.72739 L 48.68262,414.72739 z M 91.58279,449.35091 L 86.46163,422.21951 L 81.33758,449.35091 L 73.46623,449.35091 L 62.65073,404.19559 L 72.23299,404.19559 L 77.92445,432.27654 L 83.0456,404.19559 L 89.6866,404.19559 L 94.90329,432.27654 L 100.50211,404.19559 L 110.08147,404.19559 L 99.3615,449.35091 L 91.58279,449.35091 z M 114.2415,449.35091 L 114.2415,404.19559 L 123.34899,404.19559 L 123.34899,449.35091 L 114.2415,449.35091 z M 114.2415,394.99546 L 114.2415,386.07904 L 123.34899,386.07904 L 123.34899,394.99546 L 114.2415,394.99546 z M 152.15657,403.62818 L 152.15657,412.92384 C 151.71459,412.79843 151.27214,412.70386 150.82924,412.64014 C 150.38629,412.57649 149.97473,412.54464 149.59455,412.54461 C 146.62239,412.54464 144.346,413.55642 142.76538,415.57995 C 141.18472,417.60355 140.39441,420.03868 140.39442,422.88534 L 140.39442,449.35091 L 131.28693,449.35091 L 131.28693,404.19559 L 140.39442,404.19559 L 140.39442,409.03593 C 141.97504,407.07513 143.91948,405.68363 146.22773,404.86143 C 148.53594,404.03931 150.51222,403.62823 152.15657,403.62818 L 152.15657,403.62818 z M 171.34715,440.71819 L 173.43441,440.71819 L 173.43441,449.35091 L 170.58868,449.35091 C 168.88065,449.35091 167.36273,449.17722 166.03493,448.82982 C 164.70711,448.48243 163.41066,447.77076 162.14558,446.6948 C 160.88048,445.61885 159.99511,444.43289 159.48947,443.13692 C 158.98381,441.84096 158.73099,440.2444 158.73099,438.34723 L 158.73099,411.31136 L 154.27278,411.31136 L 154.27278,404.19559 L 158.73099,404.19559 L 158.73099,390.53725 L 167.83848,390.53725 L 167.83848,404.19559 L 173.43441,404.19559 L 173.43441,411.31136 L 167.83848,411.31136 L 167.83848,436.73475 C 167.83847,438.25171 168.04401,439.29486 168.45511,439.86418 C 168.86617,440.43353 169.83019,440.7182 171.34715,440.71819 L 171.34715,440.71819 z M 181.0539,428.95604 L 181.0539,419.94408 L 208.08977,419.94408 L 208.08977,428.95604 L 181.0539,428.95604 z " />
+    <path
+       id="path3999"
+       style="font-size:94.86100006px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M -88.281728,533.99694 C -86.89025,533.99694 -85.688856,533.5545 -84.677543,532.66961 C -83.666268,531.78474 -83.160621,530.64655 -83.160601,529.25504 C -83.160621,527.61074 -83.58714,526.39342 -84.440159,525.60309 C -85.293216,524.81279 -86.637426,524.10113 -88.472794,523.46808 L -90.273439,522.80514 C -92.170593,522.10845 -93.751705,521.42814 -95.016778,520.76422 C -96.281869,520.10034 -97.641519,518.89895 -99.095732,517.16004 C -100.54995,515.42118 -101.27706,512.90742 -101.27706,509.61875 C -101.27706,505.88819 -99.980619,502.72645 -97.387724,500.13352 C -94.794843,497.54067 -91.601258,496.24423 -87.80696,496.24418 C -84.329206,496.24423 -81.388927,497.57203 -78.986115,500.2276 C -76.58335,502.88325 -75.38196,505.88722 -75.38193,509.23951 L -83.728007,509.23951 C -83.728027,507.91174 -84.155028,506.82084 -85.009012,505.9668 C -85.863034,505.11283 -86.985782,504.68583 -88.377261,504.68579 C -89.641394,504.68583 -90.684532,505.16011 -91.506678,506.10865 C -92.328849,507.05725 -92.739928,508.19544 -92.739917,509.52322 C -92.739928,510.91474 -92.328849,511.99021 -91.506678,512.74961 C -90.684532,513.50908 -89.483138,514.17346 -87.902493,514.74277 L -84.961246,515.68941 C -83.253259,516.32246 -81.909531,516.92364 -80.930059,517.49295 C -79.950632,518.06231 -78.9707,518.91583 -77.990259,520.05352 C -77.00987,521.19124 -76.20315,522.51905 -75.5701,524.03694 C -74.9371,525.55486 -74.62059,527.16782 -74.62056,528.87581 C -74.62059,532.54466 -75.93296,535.75416 -78.557665,538.50434 C -81.182423,541.25452 -84.329206,542.62961 -87.998025,542.62961 C -90.211694,542.62961 -92.440786,542.02891 -94.685309,540.82752 C -96.92985,539.62613 -98.668735,537.99773 -99.901969,535.94233 C -101.13521,533.88694 -101.75183,531.56328 -101.75183,528.97134 L -93.310218,528.97134 C -93.310229,530.36285 -92.820021,531.54832 -91.839595,532.52776 C -90.859192,533.50722 -89.673238,533.99694 -88.281728,533.99694 L -88.281728,533.99694 z M -42.17132,528.97134 C -42.17135,532.70195 -43.531,535.89553 -46.25027,538.55211 C -48.9696,541.20869 -52.19551,542.53697 -55.92801,542.53697 C -57.95062,542.53697 -59.95825,542.01492 -61.95091,540.97082 C -63.9436,539.92672 -65.44558,538.67756 -66.45687,537.22333 C -67.46817,535.76912 -68.17935,534.28306 -68.59043,532.76514 C -69.00151,531.24725 -69.20705,529.69798 -69.20705,528.11734 L -69.20705,510.47275 C -69.20705,506.74219 -67.92653,503.43812 -65.36548,500.56052 C -62.80444,497.683 -59.62678,496.24423 -55.83248,496.24418 C -51.91084,496.24423 -48.65357,497.63524 -46.06065,500.41722 C -43.46779,503.19928 -42.17135,506.55112 -42.17132,510.47275 L -51.18323,510.47275 C -51.18325,509.08129 -51.57841,507.84805 -52.3687,506.77303 C -53.15903,505.69809 -54.24994,505.1606 -55.64142,505.16056 C -56.46359,505.1606 -57.17526,505.33429 -57.77643,505.68165 C -58.37762,506.02907 -58.91511,506.56656 -59.3889,507.29412 C -59.86272,508.02175 -60.09962,509.08129 -60.0996,510.47275 L -60.0996,528.11734 C -60.09962,529.76167 -59.75174,531.05811 -59.05598,532.00667 C -58.36025,532.95525 -57.19118,533.42954 -55.54878,533.42953 C -54.21906,533.42954 -53.15903,532.93933 -52.3687,531.95891 C -51.57841,530.9785 -51.18325,529.79255 -51.18323,528.40104 L -42.17132,528.40104 L -42.17132,528.97134 z M -18.00736,496.24418 C -16.36306,496.24423 -14.81331,496.68667 -13.3581,497.57151 C -11.90295,498.45643 -10.85932,499.48413 -10.22724,500.6546 C -9.59521,501.82516 -9.20005,502.8215 -9.04176,503.64362 C -8.88354,504.46581 -8.80441,505.5408 -8.80438,506.86857 L -8.80438,541.96667 L -17.91182,541.96667 L -17.91182,510.28169 C -17.91184,508.76478 -18.25972,507.53202 -18.95544,506.58342 C -19.65121,505.63488 -20.75756,505.1606 -22.27448,505.16056 C -23.6023,505.1606 -24.69321,505.68216 -25.5472,506.72527 C -26.40121,507.76844 -26.82821,508.95391 -26.8282,510.28169 L -26.8282,541.96667 L -35.93564,541.96667 L -35.93564,478.69513 L -26.8282,478.69513 L -26.8282,501.17714 C -24.74194,497.88854 -21.80166,496.24423 -18.00736,496.24418 L -18.00736,496.24418 z M -0.44672,537.22478 C -0.89062,536.46439 -1.17577,535.62582 -1.30217,534.70909 C -1.42859,533.79237 -1.4918,532.76467 -1.49179,531.62599 L -1.49179,526.50486 C -1.4918,523.15256 -0.65371,520.65423 1.02245,519.00989 C 2.69861,517.3656 4.21651,516.24333 5.57617,515.64309 C 6.93581,515.0429 8.56421,514.7428 10.46137,514.74277 L 16.53203,514.74277 L 16.53203,510.85199 C 16.53201,509.96617 16.48472,509.23906 16.39018,508.67066 C 16.29559,508.10232 15.90043,507.37521 15.20471,506.48933 C 14.50894,505.60352 13.55989,505.1606 12.35754,505.16056 C 11.09341,505.1606 10.01843,505.57168 9.13259,506.3938 C 8.24673,507.21599 7.70924,508.29097 7.52012,509.61875 L -1.49179,509.61875 C -1.4918,505.95188 -0.17943,502.80606 2.44531,500.18128 C 5.07004,497.55659 8.2477,496.24423 11.97831,496.24418 C 15.64713,496.24423 18.84119,497.54067 21.56052,500.13352 C 24.27979,502.72645 25.63944,505.88819 25.63947,509.61875 L 25.63947,541.96667 L 16.53203,541.96667 L 16.53203,537.41295 C 15.5844,538.99359 14.39893,540.24275 12.97561,541.16044 C 11.55225,542.07813 9.95474,542.53697 8.18306,542.53697 C 4.19963,542.53697 1.32304,540.76624 -0.44672,537.22478 L -0.44672,537.22478 z M 7.61565,526.40933 L 7.61565,528.68474 C 7.61564,529.88712 8.04264,530.9785 8.89666,531.95891 C 9.75065,532.93933 10.87243,533.42954 12.26201,533.42953 C 13.02239,533.42954 13.73455,533.23992 14.39847,532.86068 C 15.06235,532.48145 15.568,531.95988 15.91541,531.29597 C 16.26278,530.63208 16.4524,529.77807 16.48426,528.73396 C 16.51609,527.68987 16.53201,526.94684 16.53203,526.50486 L 16.53203,522.13931 L 13.11601,522.13931 C 11.47168,522.13933 10.14387,522.45584 9.13259,523.08885 C 8.12129,523.72189 7.61564,524.82872 7.61565,526.40933 L 7.61565,526.40933 z M 35.53434,541.96667 L 35.53434,504.02285 L 31.07616,504.02285 L 31.07616,496.81159 L 35.53434,496.81159 L 35.53434,490.55275 C 35.53434,487.01135 36.4197,484.38661 38.19044,482.67855 C 39.96116,480.9706 41.60548,479.8797 43.1234,479.40583 C 44.64129,478.93209 46.31793,478.69519 48.15334,478.69513 L 51.28275,478.69513 L 51.28275,487.0412 L 47.96227,487.0412 C 45.7486,487.04126 44.64177,488.21177 44.64179,490.55275 L 44.64179,496.81159 L 51.28275,496.81159 L 51.28275,504.02285 L 44.64179,504.02285 L 44.64179,541.96667 L 35.53434,541.96667 z M 69.34131,533.334 L 71.42856,533.334 L 71.42856,541.96667 L 68.58284,541.96667 C 66.87482,541.96667 65.35692,541.79298 64.02912,541.44559 C 62.7013,541.0982 61.40486,540.38653 60.13979,539.31058 C 58.8747,538.23463 57.98933,537.04868 57.48369,535.75271 C 56.97804,534.45676 56.72521,532.8602 56.72522,530.96305 L 56.72522,503.92732 L 52.26703,503.92732 L 52.26703,496.81159 L 56.72522,496.81159 L 56.72522,483.15332 L 65.83266,483.15332 L 65.83266,496.81159 L 71.42856,496.81159 L 71.42856,503.92732 L 65.83266,503.92732 L 65.83266,529.35058 C 65.83265,530.86753 66.03819,531.91067 66.44928,532.47999 C 66.86035,533.04934 67.82436,533.33401 69.34131,533.334 L 69.34131,533.334 z M 87.30145,478.69513 L 87.30145,528.97134 C 87.30143,530.4883 87.55426,531.59464 88.05992,532.29038 C 88.56555,532.98613 89.57781,533.33401 91.0967,533.334 L 91.75963,533.334 L 91.75963,541.96667 L 89.76792,541.96667 C 88.31273,541.96667 86.95308,541.80842 85.68897,541.49191 C 84.42484,541.17539 83.16024,540.52741 81.89517,539.54796 C 80.63008,538.56851 79.69695,537.30391 79.09577,535.75416 C 78.49459,534.20441 78.194,532.54369 78.194,530.77199 L 78.194,478.69513 L 87.30145,478.69513 z M 97.27736,541.96667 L 97.27736,496.81159 L 106.3848,496.81159 L 106.3848,541.96667 L 97.27736,541.96667 z M 97.27736,487.61151 L 97.27736,478.69513 L 106.3848,478.69513 L 106.3848,487.61151 L 97.27736,487.61151 z M 140.69549,528.97134 C 140.69546,532.70195 139.33581,535.89553 136.61653,538.55211 C 133.89721,541.20869 130.6713,542.53697 126.93879,542.53697 C 124.91619,542.53697 122.90856,542.01492 120.91589,540.97082 C 118.92321,539.92672 117.42123,538.67756 116.40994,537.22333 C 115.39864,535.76912 114.68745,534.28306 114.27638,532.76514 C 113.86529,531.24725 113.65975,529.69798 113.65976,528.11734 L 113.65976,510.47275 C 113.65975,506.74219 114.94027,503.43812 117.50133,500.56052 C 120.06236,497.683 123.24002,496.24423 127.03432,496.24418 C 130.95596,496.24423 134.21324,497.63524 136.80615,500.41722 C 139.39901,503.19928 140.69546,506.55112 140.69549,510.47275 L 131.68358,510.47275 C 131.68356,509.08129 131.2884,507.84805 130.4981,506.77303 C 129.70777,505.69809 128.61687,505.1606 127.22539,505.16056 C 126.40321,505.1606 125.69154,505.33429 125.09038,505.68165 C 124.48918,506.02907 123.95169,506.56656 123.4779,507.29412 C 123.00409,508.02175 122.76719,509.08129 122.7672,510.47275 L 122.7672,528.11734 C 122.76719,529.76167 123.11506,531.05811 123.81082,532.00667 C 124.50655,532.95525 125.67562,533.42954 127.31803,533.42953 C 128.64774,533.42954 129.70777,532.93933 130.4981,531.95891 C 131.2884,530.9785 131.68356,529.79255 131.68358,528.40104 L 140.69549,528.40104 L 140.69549,528.97134 z M 164.85946,496.24418 C 166.50375,496.24423 168.0535,496.68667 169.50871,497.57151 C 170.96387,498.45643 172.00749,499.48413 172.63958,500.6546 C 173.27161,501.82516 173.66676,502.8215 173.82505,503.64362 C 173.98328,504.46581 174.0624,505.5408 174.06243,506.86857 L 174.06243,541.96667 L 164.95499,541.96667 L 164.95499,510.28169 C 164.95497,508.76478 164.6071,507.53202 163.91137,506.58342 C 163.2156,505.63488 162.10926,505.1606 160.59233,505.16056 C 159.26451,505.1606 158.17361,505.68216 157.31962,506.72527 C 156.4656,507.76844 156.0386,508.95391 156.03861,510.28169 L 156.03861,541.96667 L 146.93117,541.96667 L 146.93117,478.69513 L 156.03861,478.69513 L 156.03861,501.17714 C 158.12488,497.88854 161.06515,496.24423 164.85946,496.24418 L 164.85946,496.24418 z M 194.74958,533.334 C 196.0793,533.33401 197.15477,532.92293 197.97598,532.10076 C 198.79715,531.27861 199.30328,530.20363 199.49437,528.87581 L 208.50628,528.87581 L 208.50628,529.91798 C 208.50625,531.30949 208.20566,532.70098 207.60451,534.09247 C 207.0033,535.48397 205.75414,537.23926 203.85702,539.35834 C 201.95986,541.47743 198.98774,542.53697 194.94065,542.53697 C 192.34678,542.53697 189.95895,541.84123 187.77715,540.44973 C 185.59533,539.05824 184.09335,537.52441 183.27119,535.84824 C 182.44903,534.17209 181.92746,532.65418 181.70648,531.29452 C 181.4855,529.93488 181.37501,528.59115 181.37501,527.26333 L 181.37501,510.09352 C 181.37501,506.36295 182.71874,503.12209 185.4062,500.3709 C 188.09365,497.6198 191.30364,496.24423 195.03618,496.24418 C 198.89413,496.24423 202.10364,497.58795 204.66471,500.27537 C 207.22573,502.96287 208.50625,506.23558 208.50628,510.09352 L 208.50628,522.61408 L 190.48246,522.61408 L 190.48246,529.35058 C 190.48245,530.2982 190.94081,531.199 191.85755,532.05299 C 192.77426,532.90701 193.73827,533.33401 194.74958,533.334 L 194.74958,533.334 z M 194.94065,505.16056 C 193.73827,505.1606 192.69465,505.57168 191.80978,506.3938 C 190.92489,507.21599 190.48245,508.67021 190.48246,510.75645 L 190.48246,515.21464 L 199.39884,515.21464 L 199.39884,510.75645 C 199.39881,509.11217 199.05094,507.76844 198.35521,506.72527 C 197.65945,505.68216 196.52126,505.1606 194.94065,505.16056 L 194.94065,505.16056 z M 236.53787,496.24418 L 236.53787,505.53979 C 236.09589,505.41438 235.65345,505.31982 235.21055,505.25609 C 234.7676,505.19244 234.35604,505.1606 233.97586,505.16056 C 231.00372,505.1606 228.72734,506.17237 227.14673,508.19589 C 225.56608,510.21948 224.77577,512.65459 224.77578,515.50124 L 224.77578,541.96667 L 215.66834,541.96667 L 215.66834,496.81159 L 224.77578,496.81159 L 224.77578,501.65191 C 226.3564,499.69112 228.30082,498.29962 230.60906,497.47742 C 232.91726,496.65531 234.89353,496.24423 236.53787,496.24418 L 236.53787,496.24418 z " />
+    <path
+       id="path4001"
+       style="font-size:94.86100006px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M -97.402092,633.54754 L -110.30189,570.276 L -100.81811,570.276 L -93.511308,614.19495 L -86.019235,570.276 L -76.43702,570.276 L -89.62342,633.54754 L -97.402092,633.54754 z M -59.25563,624.91487 C -57.92591,624.91488 -56.85044,624.5038 -56.02923,623.68163 C -55.20806,622.85948 -54.70193,621.7845 -54.51084,620.45668 L -45.49893,620.45668 L -45.49893,621.49885 C -45.49896,622.89036 -45.79955,624.28185 -46.4007,625.67334 C -47.00191,627.06484 -48.25107,628.82013 -50.14818,630.93921 C -52.04535,633.0583 -55.01747,634.11785 -59.06456,634.11785 C -61.65843,634.11785 -64.04626,633.4221 -66.22806,632.0306 C -68.40988,630.63911 -69.91186,629.10528 -70.73402,627.42911 C -71.55618,625.75296 -72.07775,624.23505 -72.29872,622.87539 C -72.51971,621.51575 -72.6302,620.17203 -72.63019,618.84421 L -72.63019,601.67439 C -72.6302,597.94383 -71.28647,594.70296 -68.59901,591.95177 C -65.91156,589.20067 -62.70157,587.8251 -58.96903,587.82505 C -55.11108,587.8251 -51.90157,589.16883 -49.3405,591.85624 C -46.77948,594.54374 -45.49896,597.81645 -45.49893,601.67439 L -45.49893,614.19495 L -63.52275,614.19495 L -63.52275,620.93145 C -63.52276,621.87907 -63.0644,622.77987 -62.14766,623.63386 C -61.23095,624.48788 -60.26694,624.91488 -59.25563,624.91487 L -59.25563,624.91487 z M -59.06456,596.74143 C -60.26694,596.74147 -61.31056,597.15255 -62.19543,597.97467 C -63.08032,598.79686 -63.52276,600.25108 -63.52275,602.33733 L -63.52275,606.79552 L -54.60637,606.79552 L -54.60637,602.33733 C -54.60639,600.69304 -54.95427,599.34931 -55.64999,598.30614 C -56.34576,597.26304 -57.48395,596.74147 -59.06456,596.74143 L -59.06456,596.74143 z M -17.46734,587.82505 L -17.46734,597.12067 C -17.90932,596.99526 -18.35176,596.90069 -18.79466,596.83696 C -19.23761,596.77331 -19.64917,596.74147 -20.02935,596.74143 C -23.0015,596.74147 -25.27787,597.75324 -26.85849,599.77676 C -28.43913,601.80035 -29.22945,604.23546 -29.22943,607.08211 L -29.22943,633.54754 L -38.33688,633.54754 L -38.33688,588.39246 L -29.22943,588.39246 L -29.22943,593.23278 C -27.64882,591.27199 -25.70439,589.88049 -23.39615,589.05829 C -21.08795,588.23618 -19.11168,587.8251 -17.46734,587.82505 L -17.46734,587.82505 z M -11.84249,633.54754 L -11.84249,570.276 L -2.73505,570.276 L -2.73505,607.93612 L 8.64781,588.39246 L 17.65972,588.39246 L 6.9398,606.32364 L 19.8425,633.54754 L 9.69288,633.54754 L 1.81867,614.29048 L -2.73505,621.02698 L -2.73505,633.54754 L -11.84249,633.54754 z M 36.9023,624.91487 C 38.23202,624.91488 39.30748,624.5038 40.1287,623.68163 C 40.94987,622.85948 41.456,621.7845 41.64709,620.45668 L 50.659,620.45668 L 50.659,621.49885 C 50.65897,622.89036 50.35838,624.28185 49.75723,625.67334 C 49.15602,627.06484 47.90686,628.82013 46.00974,630.93921 C 44.11257,633.0583 41.14045,634.11785 37.09336,634.11785 C 34.49949,634.11785 32.11166,633.4221 29.92986,632.0306 C 27.74805,630.63911 26.24606,629.10528 25.42391,627.42911 C 24.60174,625.75296 24.08018,624.23505 23.8592,622.87539 C 23.63822,621.51575 23.52773,620.17203 23.52773,618.84421 L 23.52773,601.67439 C 23.52773,597.94383 24.87146,594.70296 27.55892,591.95177 C 30.24637,589.20067 33.45636,587.8251 37.1889,587.82505 C 41.04685,587.8251 44.25636,589.16883 46.81743,591.85624 C 49.37844,594.54374 50.65897,597.81645 50.659,601.67439 L 50.659,614.19495 L 32.63517,614.19495 L 32.63517,620.93145 C 32.63516,621.87907 33.09353,622.77987 34.01026,623.63386 C 34.92698,624.48788 35.89099,624.91488 36.9023,624.91487 L 36.9023,624.91487 z M 37.09336,596.74143 C 35.89099,596.74147 34.84737,597.15255 33.9625,597.97467 C 33.0776,598.79686 32.63516,600.25108 32.63517,602.33733 L 32.63517,606.79552 L 41.55155,606.79552 L 41.55155,602.33733 C 41.55153,600.69304 41.20366,599.34931 40.50793,598.30614 C 39.81216,597.26304 38.67398,596.74147 37.09336,596.74143 L 37.09336,596.74143 z M 75.74934,587.82505 C 77.39364,587.8251 78.94339,588.26754 80.3986,589.15238 C 81.85375,590.0373 82.89737,591.065 83.52946,592.23548 C 84.16149,593.40603 84.55665,594.40237 84.71493,595.22449 C 84.87316,596.04669 84.95229,597.12167 84.95232,598.44944 L 84.95232,633.54754 L 75.84487,633.54754 L 75.84487,601.86256 C 75.84485,600.34565 75.49698,599.11289 74.80125,598.16429 C 74.10549,597.21575 72.99914,596.74147 71.48222,596.74143 C 70.15439,596.74147 69.06349,597.26304 68.2095,598.30614 C 67.35548,599.34931 66.92848,600.53478 66.9285,601.86256 L 66.9285,633.54754 L 57.82105,633.54754 L 57.82105,570.276 L 66.9285,570.276 L 66.9285,592.75801 C 69.01476,589.46942 71.95504,587.8251 75.74934,587.82505 L 75.74934,587.82505 z M 113.89291,587.82505 L 113.89291,597.12067 C 113.45092,596.99526 113.00848,596.90069 112.56558,596.83696 C 112.12263,596.77331 111.71107,596.74147 111.33089,596.74143 C 108.35875,596.74147 106.08237,597.75324 104.50176,599.77676 C 102.92111,601.80035 102.1308,604.23546 102.13081,607.08211 L 102.13081,633.54754 L 93.02337,633.54754 L 93.02337,588.39246 L 102.13081,588.39246 L 102.13081,593.23278 C 103.71143,591.27199 105.65585,589.88049 107.96409,589.05829 C 110.27229,588.23618 112.24856,587.8251 113.89291,587.82505 L 113.89291,587.82505 z M 154.85904,633.54754 L 154.85904,595.60372 L 150.40085,595.60372 L 150.40085,588.39246 L 154.85904,588.39246 L 154.85904,582.13362 C 154.85904,578.59222 155.7444,575.96748 157.51514,574.25942 C 159.28586,572.55147 160.93018,571.46057 162.4481,570.9867 C 163.96599,570.51296 165.64263,570.27606 167.47803,570.276 L 170.60745,570.276 L 170.60745,578.62208 L 167.28697,578.62208 C 165.0733,578.62213 163.96647,579.79265 163.96649,582.13362 L 163.96649,588.39246 L 170.60745,588.39246 L 170.60745,595.60372 L 163.96649,595.60372 L 163.96649,633.54754 L 154.85904,633.54754 z M 195.9699,587.82505 L 195.9699,597.12067 C 195.52792,596.99526 195.08548,596.90069 194.64258,596.83696 C 194.19963,596.77331 193.78807,596.74147 193.40789,596.74143 C 190.43574,596.74147 188.15937,597.75324 186.57875,599.77676 C 184.99811,601.80035 184.2078,604.23546 184.20781,607.08211 L 184.20781,633.54754 L 175.10037,633.54754 L 175.10037,588.39246 L 184.20781,588.39246 L 184.20781,593.23278 C 185.78842,591.27199 187.73285,589.88049 190.04109,589.05829 C 192.34929,588.23618 194.32556,587.8251 195.9699,587.82505 L 195.9699,587.82505 z M 214.21085,624.91487 C 215.54057,624.91488 216.61603,624.5038 217.43724,623.68163 C 218.25842,622.85948 218.76455,621.7845 218.95563,620.45668 L 227.96754,620.45668 L 227.96754,621.49885 C 227.96751,622.89036 227.66692,624.28185 227.06577,625.67334 C 226.46456,627.06484 225.2154,628.82013 223.31829,630.93921 C 221.42112,633.0583 218.449,634.11785 214.40191,634.11785 C 211.80804,634.11785 209.42021,633.4221 207.23841,632.0306 C 205.05659,630.63911 203.55461,629.10528 202.73246,627.42911 C 201.91029,625.75296 201.38872,624.23505 201.16775,622.87539 C 200.94677,621.51575 200.83628,620.17203 200.83628,618.84421 L 200.83628,601.67439 C 200.83628,597.94383 202.18,594.70296 204.86747,591.95177 C 207.55491,589.20067 210.7649,587.8251 214.49744,587.82505 C 218.3554,587.8251 221.5649,589.16883 224.12597,591.85624 C 226.68699,594.54374 227.96751,597.81645 227.96754,601.67439 L 227.96754,614.19495 L 209.94372,614.19495 L 209.94372,620.93145 C 209.94371,621.87907 210.40207,622.77987 211.31881,623.63386 C 212.23553,624.48788 213.19954,624.91488 214.21085,624.91487 L 214.21085,624.91487 z M 214.40191,596.74143 C 213.19954,596.74147 212.15592,597.15255 211.27105,597.97467 C 210.38615,598.79686 209.94371,600.25108 209.94372,602.33733 L 209.94372,606.79552 L 218.8601,606.79552 L 218.8601,602.33733 C 218.86008,600.69304 218.51221,599.34931 217.81648,598.30614 C 217.12071,597.26304 215.98252,596.74147 214.40191,596.74143 L 214.40191,596.74143 z M 235.1296,633.54754 L 235.1296,588.39246 L 244.23704,588.39246 L 244.23704,633.54754 L 235.1296,633.54754 z M 235.1296,579.19238 L 235.1296,570.276 L 244.23704,570.276 L 244.23704,579.19238 L 235.1296,579.19238 z " />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-37.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-37.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-37.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1026-37.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="74.730949"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g3981"
+     transform="translate(-196.4117,-340.0425)">
+    <path
+       id="text2023"
+       style="font-size:94.05919647px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M 298.16712,459.38275 L 298.16712,396.646 L 324.87961,396.646 L 324.87961,405.11098 L 307.00813,405.11098 L 307.00813,423.9211 L 322.71528,423.9211 L 322.71528,432.29423 L 307.00813,432.29423 L 307.00813,459.38275 L 298.16712,459.38275 z M 334.02202,419.21929 C 335.3386,417.58891 336.89056,416.31921 338.67791,415.41019 C 340.46523,414.50126 342.39322,414.04677 344.46188,414.04672 C 346.78119,414.04677 348.83453,414.47016 350.62189,415.3169 C 352.4092,416.16373 354.08698,417.62144 355.65524,419.69004 C 357.22343,421.75873 358.00755,424.45504 358.00758,427.779 L 358.00758,445.65047 C 358.00755,449.03571 357.25501,451.74734 355.74996,453.78535 C 354.24486,455.82338 352.55177,457.36003 350.67068,458.39531 C 348.78956,459.43059 346.87687,459.94823 344.93264,459.94823 C 342.2363,459.94823 339.77489,459.27415 337.54838,457.92599 C 335.32185,456.57784 333.7852,455.07276 332.93842,453.41076 C 332.09163,451.74877 331.57447,450.36904 331.38694,449.27156 C 331.1994,448.1741 331.10563,446.96707 331.10564,445.65047 L 331.10564,427.779 C 331.10563,424.39189 332.07776,421.53866 334.02202,419.21929 L 334.02202,419.21929 z M 344.64846,422.79301 C 343.27063,422.79305 342.17411,423.26332 341.35891,424.20384 C 340.54369,425.14443 340.13609,426.33615 340.1361,427.779 L 340.1361,445.65047 C 340.13609,447.09337 340.5279,448.33197 341.31155,449.36628 C 342.09517,450.40061 343.20748,450.91777 344.64846,450.91777 C 346.5927,450.91777 347.8002,450.35325 348.27098,449.2242 C 348.74171,448.09516 348.97709,446.84077 348.97711,445.46102 L 348.97711,427.779 C 348.97709,426.3993 348.58527,425.22337 347.80166,424.2512 C 347.01801,423.27911 345.96694,422.79305 344.64846,422.79301 L 344.64846,422.79301 z M 385.89121,414.04672 L 385.89121,423.26377 C 385.45297,423.13941 385.01426,423.04565 384.57511,422.98246 C 384.1359,422.91935 383.72782,422.88777 383.35086,422.88774 C 380.40383,422.88777 378.1467,423.891 376.57944,425.89741 C 375.01216,427.90389 374.22853,430.31842 374.22854,433.14101 L 374.22854,459.38275 L 365.19808,459.38275 L 365.19808,414.60933 L 374.22854,414.60933 L 374.22854,419.40874 C 375.79579,417.46452 377.72378,416.08479 380.01251,415.26954 C 382.30121,414.45437 384.26077,414.04677 385.89121,414.04672 L 385.89121,414.04672 z M 402.94461,451.48038 C 404.32433,451.48038 405.51557,451.04168 406.51833,450.16427 C 407.52106,449.28688 408.02243,448.15831 408.02245,446.77856 C 408.02243,445.14816 407.59952,443.94113 406.75371,443.15748 C 405.90786,442.37386 404.57501,441.66821 402.75516,441.04052 L 400.96973,440.38318 C 399.08861,439.69238 397.52087,439.01782 396.26649,438.35951 C 395.01209,437.70124 393.66393,436.51 392.22201,434.78579 C 390.78008,433.06162 390.05912,430.56911 390.05912,427.30824 C 390.05912,423.60921 391.3446,420.4742 393.91558,417.90318 C 396.48655,415.33225 399.65314,414.04677 403.41536,414.04672 C 406.86372,414.04677 409.77915,415.36335 412.16165,417.99647 C 414.54411,420.62968 415.73535,423.60826 415.73537,426.93221 L 407.45984,426.93221 C 407.45982,425.61566 407.03643,424.53398 406.18966,423.68716 C 405.34286,422.84041 404.2296,422.41702 402.84988,422.41698 C 401.59644,422.41702 400.56212,422.88729 399.74692,423.82781 C 398.9317,424.7684 398.52409,425.89697 398.5241,427.21352 C 398.52409,428.59328 398.9317,429.65966 399.74692,430.41264 C 400.56212,431.16569 401.75335,431.82446 403.32064,432.38895 L 406.23703,433.32759 C 407.93058,433.95529 409.26295,434.55139 410.23414,435.11589 C 411.20529,435.68044 412.17694,436.52674 413.14909,437.65481 C 414.12119,438.78292 414.92109,440.0995 415.54879,441.60456 C 416.17644,443.10966 416.49028,444.70898 416.4903,446.40253 C 416.49028,450.04037 415.189,453.22275 412.58648,455.94968 C 409.98391,458.67662 406.86372,460.04008 403.22591,460.04008 C 401.03096,460.04008 398.82071,459.44446 396.59515,458.25322 C 394.36958,457.06199 392.6454,455.44735 391.42259,453.40932 C 390.19977,451.37131 389.58836,449.06729 389.58836,446.49726 L 397.95862,446.49726 C 397.95861,447.877 398.44468,449.05246 399.41682,450.02362 C 400.38893,450.9948 401.56486,451.48038 402.94461,451.48038 L 402.94461,451.48038 z M 435.96637,450.82304 L 438.03597,450.82304 L 438.03597,459.38275 L 435.21431,459.38275 C 433.52072,459.38275 432.01565,459.21052 430.69908,458.86607 C 429.38248,458.52161 428.09699,457.81596 426.84261,456.7491 C 425.58822,455.68225 424.71034,454.50632 424.20897,453.22131 C 423.70759,451.93631 423.4569,450.35325 423.45691,448.47214 L 423.45691,421.66492 L 419.0364,421.66492 L 419.0364,414.60933 L 423.45691,414.60933 L 423.45691,401.06651 L 432.48737,401.06651 L 432.48737,414.60933 L 438.03597,414.60933 L 438.03597,421.66492 L 432.48737,421.66492 L 432.48737,446.87329 C 432.48736,448.37742 432.69116,449.41174 433.09878,449.97626 C 433.50637,450.54079 434.46223,450.82305 435.96637,450.82304 L 435.96637,450.82304 z M 469.85787,459.38275 L 464.78003,432.48081 L 459.69932,459.38275 L 451.89454,459.38275 L 441.1705,414.60933 L 450.67172,414.60933 L 456.31505,442.45278 L 461.39289,414.60933 L 467.97772,414.60933 L 473.15029,442.45278 L 478.70175,414.60933 L 488.2001,414.60933 L 477.57079,459.38275 L 469.85787,459.38275 z M 492.32496,459.38275 L 492.32496,414.60933 L 501.35542,414.60933 L 501.35542,459.38275 L 492.32496,459.38275 z M 492.32496,405.48701 L 492.32496,396.646 L 501.35542,396.646 L 501.35542,405.48701 L 492.32496,405.48701 z M 529.91936,414.04672 L 529.91936,423.26377 C 529.48111,423.13941 529.04241,423.04565 528.60325,422.98246 C 528.16405,422.91935 527.75597,422.88777 527.379,422.88774 C 524.43198,422.88777 522.17484,423.891 520.60759,425.89741 C 519.04031,427.90389 518.25667,430.31842 518.25668,433.14101 L 518.25668,459.38275 L 509.22622,459.38275 L 509.22622,414.60933 L 518.25668,414.60933 L 518.25668,419.40874 C 519.82394,417.46452 521.75193,416.08479 524.04066,415.26954 C 526.32935,414.45437 528.28891,414.04677 529.91936,414.04672 L 529.91936,414.04672 z M 548.94764,450.82304 L 551.01724,450.82304 L 551.01724,459.38275 L 548.19558,459.38275 C 546.50199,459.38275 544.99692,459.21052 543.68035,458.86607 C 542.36375,458.52161 541.07826,457.81596 539.82388,456.7491 C 538.56949,455.68225 537.6916,454.50632 537.19024,453.22131 C 536.68886,451.93631 536.43817,450.35325 536.43818,448.47214 L 536.43818,421.66492 L 532.01767,421.66492 L 532.01767,414.60933 L 536.43818,414.60933 L 536.43818,401.06651 L 545.46864,401.06651 L 545.46864,414.60933 L 551.01724,414.60933 L 551.01724,421.66492 L 545.46864,421.66492 L 545.46864,446.87329 C 545.46863,448.37742 545.67243,449.41174 546.08005,449.97626 C 546.48764,450.54079 547.4435,450.82305 548.94764,450.82304 L 548.94764,450.82304 z M 558.57227,439.16037 L 558.57227,430.22463 L 585.37949,430.22463 L 585.37949,439.16037 L 558.57227,439.16037 z " />
+    <path
+       id="text2005"
+       style="font-size:94.05899811px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M 287.46234,543.42329 C 288.84205,543.4233 290.03329,542.9846 291.03605,542.10719 C 292.03878,541.2298 292.54015,540.10123 292.54017,538.72149 C 292.54015,537.09109 292.11724,535.88407 291.27143,535.10042 C 290.42558,534.3168 289.09274,533.61115 287.27289,532.98346 L 285.48747,532.32612 C 283.60635,531.63532 282.03861,530.96077 280.78423,530.30245 C 279.52983,529.64419 278.18168,528.45295 276.73976,526.72874 C 275.29784,525.00458 274.57687,522.51207 274.57688,519.25121 C 274.57687,515.55219 275.86236,512.41718 278.43333,509.84617 C 281.00429,507.27525 284.17087,505.98976 287.93309,505.98972 C 291.38144,505.98976 294.29687,507.30634 296.67936,509.93946 C 299.06181,512.57266 300.25305,515.55123 300.25308,518.87518 L 291.97756,518.87518 C 291.97754,517.55863 291.55415,516.47695 290.70739,515.63013 C 289.86058,514.78339 288.74733,514.36 287.36761,514.35996 C 286.11417,514.36 285.07985,514.83027 284.26465,515.77079 C 283.44943,516.71137 283.04183,517.83994 283.04184,519.15649 C 283.04183,520.53625 283.44943,521.60262 284.26465,522.35561 C 285.07985,523.10865 286.27109,523.76742 287.83837,524.33191 L 290.75475,525.27055 C 292.4483,525.89825 293.78066,526.49435 294.75185,527.05884 C 295.723,527.62339 296.69465,528.46969 297.6668,529.59776 C 298.6389,530.72587 299.4388,532.04245 300.0665,533.5475 C 300.69414,535.05259 301.00798,536.65191 301.00801,538.34546 C 301.00798,541.98329 299.70671,545.16567 297.10419,547.89259 C 294.50162,550.61952 291.38144,551.98298 287.74364,551.98298 C 285.54869,551.98298 283.33844,551.38737 281.1129,550.19613 C 278.88733,549.00489 277.16315,547.39026 275.94034,545.35224 C 274.71753,543.31423 274.10612,541.01021 274.10612,538.44019 L 282.47636,538.44019 C 282.47635,539.81993 282.96242,540.99538 283.93455,541.96654 C 284.90667,542.93772 286.08259,543.4233 287.46234,543.42329 L 287.46234,543.42329 z M 333.18291,538.44019 C 333.18288,542.13925 331.83473,545.30584 329.13844,547.93995 C 326.44211,550.57407 323.24347,551.89113 319.54252,551.89113 C 317.53702,551.89113 315.54636,551.37349 313.57054,550.33822 C 311.59471,549.30294 310.10542,548.06434 309.10268,546.62241 C 308.09993,545.1805 307.39476,543.707 306.98716,542.20192 C 306.57955,540.69685 306.37575,539.16068 306.37575,537.5934 L 306.37575,520.09799 C 306.37575,516.39897 307.64544,513.12283 310.18484,510.26956 C 312.72423,507.41638 315.87502,505.98976 319.63724,505.98972 C 323.52573,505.98976 326.75547,507.36902 329.32646,510.12748 C 331.8974,512.88602 333.18288,516.20952 333.18291,520.09799 L 324.24719,520.09799 C 324.24717,518.7183 323.85535,517.49548 323.07174,516.42956 C 322.28809,515.3637 321.20641,514.83075 319.82669,514.83071 C 319.01147,514.83075 318.30582,515.00298 317.70974,515.3474 C 317.11362,515.69189 316.58068,516.22483 316.11089,516.94624 C 315.64108,517.66771 315.40618,518.7183 315.4062,520.09799 L 315.4062,537.5934 C 315.40618,539.22383 315.75112,540.50932 316.441,541.44986 C 317.13085,542.39042 318.29003,542.86069 319.91855,542.86069 C 321.23703,542.86069 322.28809,542.37463 323.07174,541.4025 C 323.85535,540.43038 324.24717,539.25445 324.24719,537.87471 L 333.18291,537.87471 L 333.18291,538.44019 z M 357.14258,505.98972 C 358.77297,505.98976 360.30962,506.42846 361.75253,507.30582 C 363.19538,508.18327 364.23018,509.20228 364.85692,510.36285 C 365.48361,511.52351 365.87542,512.51143 366.03237,513.3266 C 366.18926,514.14184 366.26772,515.20774 366.26775,516.52428 L 366.26775,551.32565 L 357.2373,551.32565 L 357.2373,519.90854 C 357.23728,518.40446 356.89235,517.18213 356.20251,516.24154 C 355.51262,515.30103 354.41563,514.83075 352.91153,514.83071 C 351.59493,514.83075 350.51325,515.34791 349.66648,516.38219 C 348.81969,517.41655 348.3963,518.592 348.39631,519.90854 L 348.39631,551.32565 L 339.36587,551.32565 L 339.36587,488.58903 L 348.39631,488.58903 L 348.39631,510.88097 C 350.46493,507.62018 353.38035,505.98976 357.14258,505.98972 L 357.14258,505.98972 z M 374.55474,546.62385 C 374.1146,545.86988 373.83187,545.03841 373.70653,544.12943 C 373.58118,543.22046 373.51851,542.20145 373.51851,541.07239 L 373.51851,535.99456 C 373.51851,532.6706 374.3495,530.1934 376.0115,528.56296 C 377.67348,526.93257 379.17856,525.81979 380.52672,525.22462 C 381.87487,524.62951 383.48949,524.33194 385.37061,524.33191 L 391.38995,524.33191 L 391.38995,520.47402 C 391.38993,519.5957 391.34305,518.87474 391.2493,518.31114 C 391.15551,517.74761 390.76369,517.02664 390.07385,516.14825 C 389.38396,515.26993 388.44293,514.83075 387.25076,514.83071 C 385.99731,514.83075 384.93142,515.23835 384.05307,516.05353 C 383.1747,516.86877 382.64175,517.93466 382.45423,519.25121 L 373.51851,519.25121 C 373.51851,515.61534 374.81978,512.49612 377.42233,509.89353 C 380.02486,507.29104 383.17566,505.98976 386.87473,505.98972 C 390.51253,505.98976 393.67959,507.27525 396.37593,509.84617 C 399.07221,512.41718 400.42037,515.55219 400.4204,519.25121 L 400.4204,551.32565 L 391.38995,551.32565 L 391.38995,546.81043 C 390.45034,548.3777 389.27489,549.6163 387.8636,550.52623 C 386.45228,551.43616 384.86827,551.89113 383.11156,551.89113 C 379.16181,551.89113 376.30954,550.13537 374.55474,546.62385 L 374.55474,546.62385 z M 382.54896,535.89984 L 382.54896,538.15601 C 382.54894,539.34822 382.97234,540.43038 383.81913,541.4025 C 384.6659,542.37463 385.7782,542.86069 387.15603,542.86069 C 387.90999,542.86069 388.61612,542.67268 389.27443,542.29664 C 389.9327,541.92062 390.43407,541.40346 390.77854,540.74516 C 391.12298,540.08688 391.31099,539.2401 391.34259,538.20481 C 391.37414,537.16955 391.38993,536.4328 391.38995,535.99456 L 391.38995,531.66592 L 388.00282,531.66592 C 386.37238,531.66594 385.0558,531.97978 384.05307,532.60743 C 383.05032,533.23512 382.54894,534.33259 382.54896,535.89984 L 382.54896,535.89984 z M 410.2316,551.32565 L 410.2316,513.70263 L 405.8111,513.70263 L 405.8111,506.55233 L 410.2316,506.55233 L 410.2316,500.34641 C 410.2316,496.83494 411.10948,494.2324 412.86524,492.53878 C 414.62099,490.84527 416.25141,489.76359 417.75649,489.29373 C 419.26155,488.824 420.92402,488.5891 422.74391,488.58903 L 425.84687,488.58903 L 425.84687,496.86455 L 422.55446,496.86455 C 420.3595,496.8646 419.26203,498.02522 419.26205,500.34641 L 419.26205,506.55233 L 425.84687,506.55233 L 425.84687,513.70263 L 419.26205,513.70263 L 419.26205,551.32565 L 410.2316,551.32565 z M 443.75275,542.76596 L 445.82234,542.76596 L 445.82234,551.32565 L 443.00069,551.32565 C 441.30711,551.32565 439.80203,551.15342 438.48547,550.80897 C 437.16887,550.46452 435.88339,549.75886 434.62901,548.69201 C 433.37462,547.62516 432.49674,546.44923 431.99537,545.16422 C 431.49399,543.87923 431.24331,542.29617 431.24331,540.41506 L 431.24331,513.6079 L 426.82282,513.6079 L 426.82282,506.55233 L 431.24331,506.55233 L 431.24331,493.00953 L 440.27376,493.00953 L 440.27376,506.55233 L 445.82234,506.55233 L 445.82234,513.6079 L 440.27376,513.6079 L 440.27376,538.81622 C 440.27374,540.32035 440.47755,541.35466 440.88516,541.91918 C 441.29275,542.48371 442.24861,542.76597 443.75275,542.76596 L 443.75275,542.76596 z M 461.56104,488.58903 L 461.56104,538.44019 C 461.56103,539.94432 461.81171,541.04131 462.3131,541.73116 C 462.81446,542.42104 463.81816,542.76597 465.3242,542.76596 L 465.98154,542.76596 L 465.98154,551.32565 L 464.00667,551.32565 C 462.56377,551.32565 461.21562,551.16873 459.9622,550.8549 C 458.70876,550.54106 457.45485,549.89856 456.20047,548.92739 C 454.94607,547.95622 454.02083,546.70231 453.42474,545.16566 C 452.82864,543.62902 452.53059,541.98234 452.5306,540.22561 L 452.5306,488.58903 L 461.56104,488.58903 z M 471.45262,551.32565 L 471.45262,506.55233 L 480.48307,506.55233 L 480.48307,551.32565 L 471.45262,551.32565 z M 471.45262,497.43003 L 471.45262,488.58903 L 480.48307,488.58903 L 480.48307,497.43003 L 471.45262,497.43003 z M 514.50368,538.44019 C 514.50365,542.13925 513.15549,545.30584 510.45921,547.93995 C 507.76287,550.57407 504.56424,551.89113 500.86329,551.89113 C 498.85778,551.89113 496.86712,551.37349 494.89131,550.33822 C 492.91547,549.30294 491.42619,548.06434 490.42345,546.62241 C 489.4207,545.1805 488.71553,543.707 488.30793,542.20192 C 487.90032,540.69685 487.69652,539.16068 487.69652,537.5934 L 487.69652,520.09799 C 487.69652,516.39897 488.96621,513.12283 491.50561,510.26956 C 494.04499,507.41638 497.19579,505.98976 500.95801,505.98972 C 504.8465,505.98976 508.07623,507.36902 510.64722,510.12748 C 513.21816,512.88602 514.50365,516.20952 514.50368,520.09799 L 505.56796,520.09799 C 505.56794,518.7183 505.17612,517.49548 504.39251,516.42956 C 503.60885,515.3637 502.52717,514.83075 501.14746,514.83071 C 500.33224,514.83075 499.62658,515.00298 499.0305,515.3474 C 498.43439,515.69189 497.90144,516.22483 497.43166,516.94624 C 496.96185,517.66771 496.72695,518.7183 496.72696,520.09799 L 496.72696,537.5934 C 496.72695,539.22383 497.07188,540.50932 497.76176,541.44986 C 498.45161,542.39042 499.6108,542.86069 501.23932,542.86069 C 502.55779,542.86069 503.60885,542.37463 504.39251,541.4025 C 505.17612,540.43038 505.56794,539.25445 505.56796,537.87471 L 514.50368,537.87471 L 514.50368,538.44019 z M 538.46335,505.98972 C 540.09374,505.98976 541.63039,506.42846 543.07329,507.30582 C 544.51615,508.18327 545.55094,509.20228 546.17769,510.36285 C 546.80437,511.52351 547.19619,512.51143 547.35314,513.3266 C 547.51003,514.14184 547.58848,515.20774 547.58852,516.52428 L 547.58852,551.32565 L 538.55807,551.32565 L 538.55807,519.90854 C 538.55805,518.40446 538.21312,517.18213 537.52327,516.24154 C 536.83339,515.30103 535.7364,514.83075 534.2323,514.83071 C 532.9157,514.83075 531.83402,515.34791 530.98725,516.38219 C 530.14045,517.41655 529.71706,518.592 529.71708,519.90854 L 529.71708,551.32565 L 520.68663,551.32565 L 520.68663,488.58903 L 529.71708,488.58903 L 529.71708,510.88097 C 531.7857,507.62018 534.70112,505.98976 538.46335,505.98972 L 538.46335,505.98972 z M 568.10077,542.76596 C 569.41925,542.76597 570.48562,542.35837 571.29989,541.54315 C 572.11412,540.72795 572.61598,539.66206 572.80545,538.34546 L 581.74117,538.34546 L 581.74117,539.37883 C 581.74114,540.75857 581.44309,542.1383 580.84702,543.51802 C 580.25089,544.89776 579.01229,546.63821 577.13122,548.73937 C 575.25009,550.84054 572.3031,551.89113 568.29022,551.89113 C 565.71828,551.89113 563.35064,551.20126 561.18729,549.82153 C 559.02392,548.44181 557.53463,546.92095 556.71943,545.25895 C 555.90422,543.59696 555.38706,542.09189 555.16795,540.74373 C 554.94883,539.39558 554.83928,538.06322 554.83928,536.74662 L 554.83928,519.72197 C 554.83928,516.02294 556.17165,512.80948 558.83639,510.08155 C 561.50111,507.35371 564.68397,505.98976 568.38495,505.98972 C 572.21028,505.98976 575.39266,507.32213 577.93207,509.98682 C 580.47144,512.6516 581.74114,515.89664 581.74117,519.72197 L 581.74117,532.13667 L 563.86973,532.13667 L 563.86973,538.81622 C 563.86971,539.75582 564.3242,540.64901 565.23319,541.49579 C 566.14215,542.34258 567.09801,542.76597 568.10077,542.76596 L 568.10077,542.76596 z M 568.29022,514.83071 C 567.09801,514.83075 566.06322,515.23835 565.18583,516.05353 C 564.30841,516.86877 563.86971,518.31069 563.86973,520.3793 L 563.86973,524.7998 L 572.71072,524.7998 L 572.71072,520.3793 C 572.7107,518.74891 572.36577,517.41655 571.67592,516.38219 C 570.98604,515.34791 569.85747,514.83075 568.29022,514.83071 L 568.29022,514.83071 z M 609.53575,505.98972 L 609.53575,515.20674 C 609.0975,515.08239 608.6588,514.98862 608.21964,514.92544 C 607.78044,514.86233 607.37236,514.83075 606.9954,514.83071 C 604.04838,514.83075 601.79125,515.83397 600.224,517.84038 C 598.65672,519.84686 597.87308,522.26139 597.8731,525.08397 L 597.8731,551.32565 L 588.84265,551.32565 L 588.84265,506.55233 L 597.8731,506.55233 L 597.8731,511.35172 C 599.44035,509.40751 601.36834,508.02778 603.65706,507.21253 C 605.94575,506.39737 607.90531,505.98976 609.53575,505.98972 L 609.53575,505.98972 z " />
+    <path
+       id="text2009"
+       style="font-size:94.05899811px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M 278.43166,642.87356 L 265.64092,580.13695 L 275.04453,580.13695 L 282.28955,623.68459 L 289.71828,580.13695 L 299.21948,580.13695 L 286.14457,642.87356 L 278.43166,642.87356 z M 316.25562,634.31387 C 317.57409,634.31388 318.64047,633.90628 319.45474,633.09106 C 320.26897,632.27586 320.77082,631.20997 320.96029,629.89338 L 329.89601,629.89338 L 329.89601,630.92674 C 329.89598,632.30648 329.59793,633.68621 329.00186,635.06593 C 328.40574,636.44567 327.16714,638.18612 325.28606,640.28729 C 323.40494,642.38846 320.45794,643.43904 316.44507,643.43904 C 313.87313,643.43904 311.50549,642.74918 309.34213,641.36945 C 307.17876,639.98972 305.68948,638.46886 304.87427,636.80686 C 304.05906,635.14488 303.5419,633.6398 303.32279,632.29164 C 303.10368,630.9435 302.99412,629.61113 302.99413,628.29453 L 302.99413,611.26988 C 302.99412,607.57086 304.32649,604.35739 306.99123,601.62946 C 309.65596,598.90162 312.83881,597.53768 316.53979,597.53763 C 320.36513,597.53768 323.5475,598.87004 326.08692,601.53474 C 328.62628,604.19951 329.89598,607.44456 329.89601,611.26988 L 329.89601,623.68459 L 312.02457,623.68459 L 312.02457,630.36413 C 312.02456,631.30374 312.47905,632.19692 313.38804,633.0437 C 314.297,633.89049 315.25286,634.31388 316.25562,634.31387 L 316.25562,634.31387 z M 316.44507,606.37863 C 315.25286,606.37866 314.21806,606.78627 313.34067,607.60144 C 312.46326,608.41668 312.02456,609.8586 312.02457,611.92721 L 312.02457,616.34771 L 320.86557,616.34771 L 320.86557,611.92721 C 320.86554,610.29683 320.52061,608.96446 319.83077,607.93011 C 319.14088,606.89582 318.01232,606.37866 316.44507,606.37863 L 316.44507,606.37863 z M 357.6906,597.53763 L 357.6906,606.75466 C 357.25236,606.63031 356.81366,606.53654 356.3745,606.47335 C 355.9353,606.41024 355.52722,606.37866 355.15025,606.37863 C 352.20323,606.37866 349.9461,607.38189 348.37885,609.3883 C 346.81157,611.39477 346.02794,613.8093 346.02795,616.63188 L 346.02795,642.87356 L 336.99751,642.87356 L 336.99751,598.10024 L 346.02795,598.10024 L 346.02795,602.89964 C 347.59521,600.95543 349.52319,599.5757 351.81192,598.76044 C 354.1006,597.94528 356.06016,597.53768 357.6906,597.53763 L 357.6906,597.53763 z M 363.26789,642.87356 L 363.26789,580.13695 L 372.29834,580.13695 L 372.29834,617.47867 L 383.58496,598.10024 L 392.52068,598.10024 L 381.89139,615.87983 L 394.685,642.87356 L 384.62119,642.87356 L 376.81356,623.77931 L 372.29834,630.45886 L 372.29834,642.87356 L 363.26789,642.87356 z M 411.60057,634.31387 C 412.91905,634.31388 413.98542,633.90628 414.79969,633.09106 C 415.61392,632.27586 416.11577,631.20997 416.30524,629.89338 L 425.24096,629.89338 L 425.24096,630.92674 C 425.24093,632.30648 424.94288,633.68621 424.34682,635.06593 C 423.75069,636.44567 422.51209,638.18612 420.63101,640.28729 C 418.74989,642.38846 415.80289,643.43904 411.79002,643.43904 C 409.21808,643.43904 406.85044,642.74918 404.68708,641.36945 C 402.52371,639.98972 401.03443,638.46886 400.21922,636.80686 C 399.40401,635.14488 398.88685,633.6398 398.66774,632.29164 C 398.44863,630.9435 398.33907,629.61113 398.33908,628.29453 L 398.33908,611.26988 C 398.33907,607.57086 399.67144,604.35739 402.33618,601.62946 C 405.00091,598.90162 408.18376,597.53768 411.88474,597.53763 C 415.71008,597.53768 418.89245,598.87004 421.43187,601.53474 C 423.97124,604.19951 425.24093,607.44456 425.24096,611.26988 L 425.24096,623.68459 L 407.36952,623.68459 L 407.36952,630.36413 C 407.36951,631.30374 407.824,632.19692 408.73299,633.0437 C 409.64195,633.89049 410.59781,634.31388 411.60057,634.31387 L 411.60057,634.31387 z M 411.79002,606.37863 C 410.59781,606.37866 409.56301,606.78627 408.68562,607.60144 C 407.80821,608.41668 407.36951,609.8586 407.36952,611.92721 L 407.36952,616.34771 L 416.21052,616.34771 L 416.21052,611.92721 C 416.2105,610.29683 415.86556,608.96446 415.17572,607.93011 C 414.48583,606.89582 413.35727,606.37866 411.79002,606.37863 L 411.79002,606.37863 z M 450.11918,597.53763 C 451.74957,597.53768 453.28622,597.97638 454.72913,598.85373 C 456.17198,599.73118 457.20678,600.75019 457.83352,601.91077 C 458.46021,603.07143 458.85202,604.05934 459.00897,604.87451 C 459.16586,605.68975 459.24432,606.75565 459.24435,608.07219 L 459.24435,642.87356 L 450.2139,642.87356 L 450.2139,611.45646 C 450.21388,609.95237 449.86895,608.73004 449.1791,607.78945 C 448.48922,606.84894 447.39223,606.37866 445.88813,606.37863 C 444.57153,606.37866 443.48985,606.89582 442.64308,607.93011 C 441.79629,608.96446 441.3729,610.13991 441.37291,611.45646 L 441.37291,642.87356 L 432.34246,642.87356 L 432.34246,580.13695 L 441.37291,580.13695 L 441.37291,602.42888 C 443.44153,599.16809 446.35695,597.53768 450.11918,597.53763 L 450.11918,597.53763 z M 487.94027,597.53763 L 487.94027,606.75466 C 487.50202,606.63031 487.06332,606.53654 486.62416,606.47335 C 486.18496,606.41024 485.77688,606.37866 485.39992,606.37863 C 482.4529,606.37866 480.19577,607.38189 478.62852,609.3883 C 477.06124,611.39477 476.2776,613.8093 476.27762,616.63188 L 476.27762,642.87356 L 467.24717,642.87356 L 467.24717,598.10024 L 476.27762,598.10024 L 476.27762,602.89964 C 477.84487,600.95543 479.77286,599.5757 482.06158,598.76044 C 484.35027,597.94528 486.30983,597.53768 487.94027,597.53763 L 487.94027,597.53763 z M 528.56006,642.87356 L 528.56006,605.25054 L 524.13956,605.25054 L 524.13956,598.10024 L 528.56006,598.10024 L 528.56006,591.89432 C 528.56005,588.38286 529.43793,585.78031 531.1937,584.08669 C 532.94945,582.39318 534.57986,581.3115 536.08495,580.84164 C 537.59001,580.37191 539.25248,580.13701 541.07236,580.13695 L 544.17532,580.13695 L 544.17532,588.41246 L 540.88291,588.41246 C 538.68796,588.41252 537.59049,589.57314 537.5905,591.89432 L 537.5905,598.10024 L 544.17532,598.10024 L 544.17532,605.25054 L 537.5905,605.25054 L 537.5905,642.87356 L 528.56006,642.87356 z M 569.32335,597.53763 L 569.32335,606.75466 C 568.88511,606.63031 568.44641,606.53654 568.00725,606.47335 C 567.56805,606.41024 567.15997,606.37866 566.783,606.37863 C 563.83599,606.37866 561.57886,607.38189 560.01161,609.3883 C 558.44432,611.39477 557.66069,613.8093 557.6607,616.63188 L 557.6607,642.87356 L 548.63026,642.87356 L 548.63026,598.10024 L 557.6607,598.10024 L 557.6607,602.89964 C 559.22796,600.95543 561.15594,599.5757 563.44467,598.76044 C 565.73335,597.94528 567.69291,597.53768 569.32335,597.53763 L 569.32335,597.53763 z M 587.41008,634.31387 C 588.72856,634.31388 589.79493,633.90628 590.6092,633.09106 C 591.42343,632.27586 591.92528,631.20997 592.11475,629.89338 L 601.05047,629.89338 L 601.05047,630.92674 C 601.05044,632.30648 600.75239,633.68621 600.15632,635.06593 C 599.5602,636.44567 598.3216,638.18612 596.44052,640.28729 C 594.5594,642.38846 591.6124,643.43904 587.59953,643.43904 C 585.02759,643.43904 582.65995,642.74918 580.49659,641.36945 C 578.33322,639.98972 576.84394,638.46886 576.02873,636.80686 C 575.21352,635.14488 574.69636,633.6398 574.47725,632.29164 C 574.25814,630.9435 574.14858,629.61113 574.14859,628.29453 L 574.14859,611.26988 C 574.14858,607.57086 575.48095,604.35739 578.14569,601.62946 C 580.81042,598.90162 583.99327,597.53768 587.69425,597.53763 C 591.51959,597.53768 594.70196,598.87004 597.24138,601.53474 C 599.78074,604.19951 601.05044,607.44456 601.05047,611.26988 L 601.05047,623.68459 L 583.17903,623.68459 L 583.17903,630.36413 C 583.17902,631.30374 583.63351,632.19692 584.5425,633.0437 C 585.45146,633.89049 586.40732,634.31388 587.41008,634.31387 L 587.41008,634.31387 z M 587.59953,606.37863 C 586.40732,606.37866 585.37252,606.78627 584.49513,607.60144 C 583.61772,608.41668 583.17902,609.8586 583.17903,611.92721 L 583.17903,616.34771 L 592.02003,616.34771 L 592.02003,611.92721 C 592.02,610.29683 591.67507,608.96446 590.98523,607.93011 C 590.29534,606.89582 589.16678,606.37866 587.59953,606.37863 L 587.59953,606.37863 z M 608.15196,642.87356 L 608.15196,598.10024 L 617.1824,598.10024 L 617.1824,642.87356 L 608.15196,642.87356 z M 608.15196,588.97794 L 608.15196,580.13695 L 617.1824,580.13695 L 617.1824,588.97794 L 608.15196,588.97794 z " />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-38.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-38.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-38.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1026-38.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="83.429599"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g3957"
+     transform="translate(114.6911,-384.6562)">
+    <path
+       id="text1874"
+       style="font-size:96.77400208px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M -29.025092,688.15074 L -42.185033,623.60324 L -32.509996,623.60324 L -25.055846,668.40788 L -17.412684,623.60324 L -7.63723,623.60324 L -21.089553,688.15074 L -29.025092,688.15074 z M 9.89065,679.34398 C 11.24719,679.34399 12.34434,678.92462 13.18211,678.08587 C 14.01985,677.24714 14.53618,676.15048 14.73112,674.79588 L 23.92477,674.79588 L 23.92477,675.85907 C 23.92474,677.27864 23.61809,678.6982 23.00482,680.11775 C 22.39148,681.53731 21.11713,683.328 19.18176,685.48981 C 17.24633,687.65163 14.21427,688.73254 10.08557,688.73255 C 7.43939,688.73254 5.00341,688.02277 2.77761,686.60321 C 0.55179,685.18366 -0.98048,683.6189 -1.81922,681.90893 C -2.65796,680.19897 -3.19005,678.65045 -3.41548,677.26337 C -3.64092,675.87631 -3.75364,674.50549 -3.75363,673.15089 L -3.75363,655.63482 C -3.75364,651.82903 -2.38281,648.5228 0.35885,645.71613 C 3.10049,642.90955 6.37522,641.50624 10.18303,641.50619 C 14.11878,641.50624 17.39301,642.87707 20.00573,645.61868 C 22.6184,648.36037 23.92474,651.69908 23.92477,655.63482 L 23.92477,668.40788 L 5.53747,668.40788 L 5.53747,675.28023 C 5.53746,676.24695 6.00507,677.16592 6.9403,678.03714 C 7.8755,678.90837 8.85895,679.34399 9.89065,679.34398 L 9.89065,679.34398 z M 10.08557,650.60238 C 8.85895,650.60242 7.79428,651.02179 6.89157,651.86049 C 5.98883,652.69927 5.53746,654.18281 5.53747,656.31113 L 5.53747,660.85922 L 14.63366,660.85922 L 14.63366,656.31113 C 14.63364,654.63368 14.27875,653.26286 13.569,652.19865 C 12.8592,651.13451 11.69806,650.60242 10.08557,650.60238 L 10.08557,650.60238 z M 52.52166,641.50619 L 52.52166,650.98927 C 52.07076,650.86133 51.6194,650.76485 51.16757,650.69984 C 50.71569,650.63491 50.29582,650.60242 49.90798,650.60238 C 46.8759,650.60242 44.55361,651.6346 42.94113,653.69893 C 41.3286,655.76332 40.52235,658.24754 40.52237,661.1516 L 40.52237,688.15074 L 31.23126,688.15074 L 31.23126,642.08504 L 40.52237,642.08504 L 40.52237,647.02297 C 42.13486,645.02264 44.11849,643.60309 46.47328,642.7643 C 48.82803,641.92561 50.84415,641.50624 52.52166,641.50619 L 52.52166,641.50619 z M 58.25993,688.15074 L 58.25993,623.60324 L 67.55104,623.60324 L 67.55104,662.02283 L 79.16344,642.08504 L 88.35709,642.08504 L 77.42099,660.37783 L 90.58389,688.15074 L 80.22959,688.15074 L 72.19659,668.50534 L 67.55104,675.37769 L 67.55104,688.15074 L 58.25993,688.15074 z M 107.98773,679.34398 C 109.34427,679.34399 110.44142,678.92462 111.27919,678.08587 C 112.11693,677.24714 112.63326,676.15048 112.8282,674.79588 L 122.02185,674.79588 L 122.02185,675.85907 C 122.02182,677.27864 121.71517,678.6982 121.1019,680.11775 C 120.48856,681.53731 119.21421,683.328 117.27884,685.48981 C 115.34341,687.65163 112.31135,688.73254 108.18265,688.73255 C 105.53647,688.73254 103.10049,688.02277 100.87469,686.60321 C 98.64887,685.18366 97.1166,683.6189 96.27786,681.90893 C 95.43912,680.19897 94.90703,678.65045 94.6816,677.26337 C 94.45616,675.87631 94.34344,674.50549 94.34345,673.15089 L 94.34345,655.63482 C 94.34344,651.82903 95.71427,648.5228 98.45593,645.71613 C 101.19757,642.90955 104.4723,641.50624 108.28011,641.50619 C 112.21586,641.50624 115.49009,642.87707 118.10281,645.61868 C 120.71548,648.36037 122.02182,651.69908 122.02185,655.63482 L 122.02185,668.40788 L 103.63455,668.40788 L 103.63455,675.28023 C 103.63454,676.24695 104.10215,677.16592 105.03738,678.03714 C 105.97258,678.90837 106.95603,679.34399 107.98773,679.34398 L 107.98773,679.34398 z M 108.18265,650.60238 C 106.95603,650.60242 105.89136,651.02179 104.98865,651.86049 C 104.08591,652.69927 103.63454,654.18281 103.63455,656.31113 L 103.63455,660.85922 L 112.73074,660.85922 L 112.73074,656.31113 C 112.73072,654.63368 112.37583,653.26286 111.66608,652.19865 C 110.95628,651.13451 109.79514,650.60242 108.18265,650.60238 L 108.18265,650.60238 z M 147.61817,641.50619 C 149.29563,641.50624 150.87663,641.9576 152.36119,642.86029 C 153.84569,643.76306 154.91035,644.81148 155.55519,646.00556 C 156.19996,647.19972 156.60309,648.21615 156.76457,649.05485 C 156.92598,649.89363 157.00671,650.99029 157.00674,652.34484 L 157.00674,688.15074 L 147.71563,688.15074 L 147.71563,655.82679 C 147.71561,654.27929 147.36072,653.02167 146.65096,652.05393 C 145.94116,651.08627 144.81251,650.60242 143.265,650.60238 C 141.9104,650.60242 140.79749,651.13451 139.92628,652.19865 C 139.05504,653.26286 138.61943,654.47224 138.61944,655.82679 L 138.61944,688.15074 L 129.32833,688.15074 L 129.32833,623.60324 L 138.61944,623.60324 L 138.61944,646.53863 C 140.74778,643.18372 143.74735,641.50624 147.61817,641.50619 L 147.61817,641.50619 z M 186.53096,641.50619 L 186.53096,650.98927 C 186.08007,650.86133 185.6287,650.76485 185.17687,650.69984 C 184.72499,650.63491 184.30513,650.60242 183.91729,650.60238 C 180.8852,650.60242 178.56292,651.6346 176.95043,653.69893 C 175.33791,655.76332 174.53166,658.24754 174.53167,661.1516 L 174.53167,688.15074 L 165.24057,688.15074 L 165.24057,642.08504 L 174.53167,642.08504 L 174.53167,647.02297 C 176.14417,645.02264 178.1278,643.60309 180.48259,642.7643 C 182.83734,641.92561 184.85346,641.50624 186.53096,641.50619 L 186.53096,641.50619 z M 211.31218,688.15074 L 211.31218,649.44173 L 206.76408,649.44173 L 206.76408,642.08504 L 211.31218,642.08504 L 211.31218,635.69999 C 211.31217,632.08717 212.21539,629.4095 214.02184,627.66699 C 215.82827,625.9246 217.50574,624.8117 219.05427,624.32828 C 220.60278,623.84498 222.31323,623.6033 224.18565,623.60324 L 227.37817,623.60324 L 227.37817,632.11763 L 223.99073,632.11763 C 221.73242,632.11768 220.60327,633.3118 220.60328,635.69999 L 220.60328,642.08504 L 227.37817,642.08504 L 227.37817,649.44173 L 220.60328,649.44173 L 220.60328,688.15074 L 211.31218,688.15074 z M 253.25211,641.50619 L 253.25211,650.98927 C 252.80121,650.86133 252.34985,650.76485 251.89802,650.69984 C 251.44614,650.63491 251.02628,650.60242 250.63843,650.60238 C 247.60635,650.60242 245.28407,651.6346 243.67158,653.69893 C 242.05906,655.76332 241.25281,658.24754 241.25282,661.1516 L 241.25282,688.15074 L 231.96171,688.15074 L 231.96171,642.08504 L 241.25282,642.08504 L 241.25282,647.02297 C 242.86531,645.02264 244.84895,643.60309 247.20374,642.7643 C 249.55848,641.92561 251.57461,641.50624 253.25211,641.50619 L 253.25211,641.50619 z M 271.86088,679.34398 C 273.21742,679.34399 274.31457,678.92462 275.15235,678.08587 C 275.99008,677.24714 276.50642,676.15048 276.70136,674.79588 L 285.89501,674.79588 L 285.89501,675.85907 C 285.89497,677.27864 285.58832,678.6982 284.97505,680.11775 C 284.36172,681.53731 283.08737,683.328 281.15199,685.48981 C 279.21657,687.65163 276.18451,688.73254 272.0558,688.73255 C 269.40962,688.73254 266.97364,688.02277 264.74784,686.60321 C 262.52202,685.18366 260.98975,683.6189 260.15102,681.90893 C 259.31227,680.19897 258.78019,678.65045 258.55475,677.26337 C 258.32932,675.87631 258.2166,674.50549 258.2166,673.15089 L 258.2166,655.63482 C 258.2166,651.82903 259.58742,648.5228 262.32908,645.71613 C 265.07073,642.90955 268.34545,641.50624 272.15326,641.50619 C 276.08902,641.50624 279.36325,642.87707 281.97597,645.61868 C 284.58863,648.36037 285.89497,651.69908 285.89501,655.63482 L 285.89501,668.40788 L 267.50771,668.40788 L 267.50771,675.28023 C 267.5077,676.24695 267.9753,677.16592 268.91053,678.03714 C 269.84573,678.90837 270.82918,679.34399 271.86088,679.34398 L 271.86088,679.34398 z M 272.0558,650.60238 C 270.82918,650.60242 269.76451,651.02179 268.8618,651.86049 C 267.95906,652.69927 267.5077,654.18281 267.50771,656.31113 L 267.50771,660.85922 L 276.6039,660.85922 L 276.6039,656.31113 C 276.60388,654.63368 276.24899,653.26286 275.53923,652.19865 C 274.82943,651.13451 273.66829,650.60242 272.0558,650.60238 L 272.0558,650.60238 z M 293.20149,688.15074 L 293.20149,642.08504 L 302.4926,642.08504 L 302.4926,688.15074 L 293.20149,688.15074 z M 293.20149,632.69943 L 293.20149,623.60324 L 302.4926,623.60324 L 302.4926,632.69943 L 293.20149,632.69943 z " />
+    <path
+       id="text1880"
+       style="font-size:96.77400208px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M -49.432413,595.7366 L -49.432413,557.02759 L -53.980507,557.02759 L -53.980507,549.6709 L -49.432413,549.6709 L -49.432413,543.28585 C -49.432419,539.67303 -48.5292,536.99536 -46.722752,535.25285 C -44.916323,533.51046 -43.238846,532.39756 -41.690315,531.91414 C -40.141813,531.43084 -38.431357,531.18917 -36.558942,531.1891 L -33.366416,531.1891 L -33.366416,539.70349 L -36.753861,539.70349 C -39.012174,539.70354 -40.141321,540.89766 -40.141305,543.28585 L -40.141305,549.6709 L -33.366416,549.6709 L -33.366416,557.02759 L -40.141305,557.02759 L -40.141305,595.7366 L -49.432413,595.7366 z M -26.458629,554.41392 C -25.104053,552.73648 -23.507299,551.43014 -21.668363,550.49488 C -19.82945,549.55971 -17.845813,549.0921 -15.717447,549.09206 C -13.33119,549.0921 -11.2186,549.52771 -9.37965,550.39889 C -7.54075,551.27016 -5.81454,552.76995 -4.20102,554.89826 C -2.58756,557.02665 -1.78082,559.80079 -1.78079,563.22068 L -1.78079,581.60798 C -1.78082,585.09092 -2.55508,587.88081 -4.10356,589.97765 C -5.65211,592.07451 -7.39407,593.65551 -9.32944,594.72067 C -11.26486,595.78583 -13.23275,596.31841 -15.233105,596.31841 C -18.00726,596.31841 -20.53972,595.62487 -22.83049,594.2378 C -25.121281,592.85073 -26.702283,591.30222 -27.573503,589.59225 C -28.444733,587.88229 -28.97682,586.46273 -29.169766,585.33358 C -29.362719,584.20444 -29.459194,582.96258 -29.45919,581.60798 L -29.45919,563.22068 C -29.459194,559.73581 -28.459008,556.80023 -26.458629,554.41392 L -26.458629,554.41392 z M -15.525482,558.09079 C -16.943086,558.09082 -18.071249,558.57467 -18.909974,559.54234 C -19.748726,560.51007 -20.168095,561.73619 -20.168083,563.22068 L -20.168083,581.60798 C -20.168095,583.09252 -19.764969,584.36687 -18.958703,585.43104 C -18.152465,586.49522 -17.008059,587.02731 -15.525482,587.0273 C -13.52513,587.02731 -12.28277,586.44649 -11.79841,585.28485 C -11.31409,584.12322 -11.07192,582.83263 -11.07189,581.41306 L -11.07189,563.22068 C -11.07192,561.80116 -11.47504,560.59129 -12.28127,559.59107 C -13.08755,558.59092 -14.16895,558.09082 -15.525482,558.09079 L -15.525482,558.09079 z M 26.90765,549.09206 L 26.90765,558.57513 C 26.45676,558.44719 26.00539,558.35071 25.55356,558.2857 C 25.10168,558.22077 24.68182,558.18828 24.29398,558.18824 C 21.26189,558.18828 18.93961,559.22046 17.32712,561.28479 C 15.7146,563.34918 14.90835,565.8334 14.90836,568.73746 L 14.90836,595.7366 L 5.61725,595.7366 L 5.61725,549.6709 L 14.90836,549.6709 L 14.90836,554.60883 C 16.52085,552.6085 18.50449,551.18895 20.85928,550.35016 C 23.21403,549.51147 25.23015,549.0921 26.90765,549.09206 L 26.90765,549.09206 z M 44.45325,587.60615 C 45.87279,587.60616 47.09841,587.15479 48.13012,586.25206 C 49.16179,585.34934 49.67763,584.1882 49.67765,582.76863 C 49.67763,581.09116 49.24251,579.8493 48.37229,579.04303 C 47.50203,578.23679 46.13071,577.51077 44.25833,576.86497 L 42.42138,576.18866 C 40.48596,575.47792 38.87297,574.78389 37.58238,574.10658 C 36.29178,573.42931 34.90471,572.20368 33.42117,570.42971 C 31.93762,568.65578 31.19585,566.09133 31.19585,562.73634 C 31.19585,558.93055 32.51844,555.70504 35.16362,553.05982 C 37.80879,550.41469 41.06678,549.0921 44.93759,549.09206 C 48.48548,549.0921 51.48506,550.44668 53.93632,553.15581 C 56.38754,555.86502 57.61316,558.92956 57.61319,562.34946 L 49.09881,562.34946 C 49.09878,560.99491 48.66317,559.882 47.79197,559.01074 C 46.92072,558.13955 45.77533,557.70394 44.35579,557.7039 C 43.06617,557.70394 42.00199,558.18779 41.16327,559.15545 C 40.32451,560.12319 39.90515,561.28433 39.90516,562.63888 C 39.90515,564.05847 40.32451,565.15562 41.16327,565.93034 C 42.00199,566.70512 43.22761,567.38291 44.84013,567.96369 L 47.8407,568.92943 C 49.58313,569.57524 50.95395,570.18855 51.95318,570.76934 C 52.95236,571.35018 53.95205,572.22091 54.95226,573.38154 C 55.95242,574.54221 56.77541,575.89679 57.42123,577.44529 C 58.06699,578.99383 58.38988,580.63931 58.38991,582.38174 C 58.38988,586.12458 57.05105,589.39881 54.37341,592.20445 C 51.69572,595.01009 48.48548,596.41291 44.74268,596.41291 C 42.48437,596.41291 40.21032,595.8001 37.92053,594.57448 C 35.63073,593.34886 33.85678,591.68762 32.59867,589.59077 C 31.34056,587.49393 30.71151,585.12341 30.71151,582.4792 L 39.32336,582.4792 C 39.32334,583.89877 39.82344,585.10815 40.82364,586.10734 C 41.82381,587.10655 43.03368,587.60616 44.45325,587.60615 L 44.45325,587.60615 z M 78.42811,586.92984 L 80.55745,586.92984 L 80.55745,595.7366 L 77.65435,595.7366 C 75.91188,595.7366 74.36336,595.55941 73.00879,595.20501 C 71.6542,594.85061 70.33161,594.12459 69.04102,593.02694 C 67.75042,591.9293 66.8472,590.71943 66.33136,589.39733 C 65.81551,588.07524 65.55759,586.44649 65.5576,584.51108 L 65.5576,556.93014 L 61.0095,556.93014 L 61.0095,549.6709 L 65.5576,549.6709 L 65.5576,535.7372 L 74.8487,535.7372 L 74.8487,549.6709 L 80.55745,549.6709 L 80.55745,556.93014 L 74.8487,556.93014 L 74.8487,582.86609 C 74.84869,584.41363 75.05837,585.47781 75.47776,586.05861 C 75.89711,586.63944 76.88056,586.92985 78.42811,586.92984 L 78.42811,586.92984 z M 113.29782,595.7366 L 108.07342,568.0582 L 102.84606,595.7366 L 94.81602,595.7366 L 83.78246,549.6709 L 93.55791,549.6709 L 99.36411,578.31799 L 104.58851,549.6709 L 111.3634,549.6709 L 116.68526,578.31799 L 122.39696,549.6709 L 132.16946,549.6709 L 121.23336,595.7366 L 113.29782,595.7366 z M 136.41337,595.7366 L 136.41337,549.6709 L 145.70447,549.6709 L 145.70447,595.7366 L 136.41337,595.7366 z M 136.41337,540.28529 L 136.41337,531.1891 L 145.70447,531.1891 L 145.70447,540.28529 L 136.41337,540.28529 z M 175.09285,549.09206 L 175.09285,558.57513 C 174.64195,558.44719 174.19059,558.35071 173.73876,558.2857 C 173.28688,558.22077 172.86702,558.18828 172.47917,558.18824 C 169.44709,558.18828 167.12481,559.22046 165.51232,561.28479 C 163.8998,563.34918 163.09354,565.8334 163.09356,568.73746 L 163.09356,595.7366 L 153.80245,595.7366 L 153.80245,549.6709 L 163.09356,549.6709 L 163.09356,554.60883 C 164.70605,552.6085 166.68969,551.18895 169.04447,550.35016 C 171.39922,549.51147 173.41535,549.0921 175.09285,549.09206 L 175.09285,549.09206 z M 194.67032,586.92984 L 196.79966,586.92984 L 196.79966,595.7366 L 193.89656,595.7366 C 192.15409,595.7366 190.60557,595.55941 189.251,595.20501 C 187.89641,594.85061 186.57382,594.12459 185.28323,593.02694 C 183.99263,591.9293 183.08941,590.71943 182.57357,589.39733 C 182.05772,588.07524 181.7998,586.44649 181.79981,584.51108 L 181.79981,556.93014 L 177.25171,556.93014 L 177.25171,549.6709 L 181.79981,549.6709 L 181.79981,535.7372 L 191.09091,535.7372 L 191.09091,549.6709 L 196.79966,549.6709 L 196.79966,556.93014 L 191.09091,556.93014 L 191.09091,582.86609 C 191.0909,584.41363 191.30058,585.47781 191.71997,586.05861 C 192.13932,586.63944 193.12277,586.92985 194.67032,586.92984 L 194.67032,586.92984 z M 215.50887,587.60615 C 216.92841,587.60616 218.15403,587.15479 219.18574,586.25206 C 220.21741,585.34934 220.73325,584.1882 220.73327,582.76863 C 220.73325,581.09116 220.29813,579.8493 219.42791,579.04303 C 218.55765,578.23679 217.18633,577.51077 215.31395,576.86497 L 213.47699,576.18866 C 211.54158,575.47792 209.92858,574.78389 208.638,574.10658 C 207.34739,573.42931 205.96033,572.20368 204.47679,570.42971 C 202.99324,568.65578 202.25147,566.09133 202.25147,562.73634 C 202.25147,558.93055 203.57406,555.70504 206.21924,553.05982 C 208.86441,550.41469 212.1224,549.0921 215.99321,549.09206 C 219.5411,549.0921 222.54067,550.44668 224.99194,553.15581 C 227.44316,555.86502 228.66878,558.92956 228.66881,562.34946 L 220.15442,562.34946 C 220.1544,560.99491 219.71879,559.882 218.84758,559.01074 C 217.97634,558.13955 216.83095,557.70394 215.41141,557.7039 C 214.12178,557.70394 213.05761,558.18779 212.21888,559.15545 C 211.38013,560.12319 210.96076,561.28433 210.96078,562.63888 C 210.96076,564.05847 211.38013,565.15562 212.21888,565.93034 C 213.05761,566.70512 214.28323,567.38291 215.89575,567.96369 L 218.89631,568.92943 C 220.63875,569.57524 222.00957,570.18855 223.0088,570.76934 C 224.00797,571.35018 225.00767,572.22091 226.00788,573.38154 C 227.00804,574.54221 227.83103,575.89679 228.47685,577.44529 C 229.12261,578.99383 229.4455,580.63931 229.44553,582.38174 C 229.4455,586.12458 228.10667,589.39881 225.42903,592.20445 C 222.75134,595.01009 219.5411,596.41291 215.79829,596.41291 C 213.53998,596.41291 211.26594,595.8001 208.97615,594.57448 C 206.68635,593.34886 204.91239,591.68762 203.65429,589.59077 C 202.39618,587.49393 201.76712,585.12341 201.76713,582.4792 L 210.37897,582.4792 C 210.37896,583.89877 210.87906,585.10815 211.87925,586.10734 C 212.87943,587.10655 214.0893,587.60616 215.50887,587.60615 L 215.50887,587.60615 z M 262.54917,582.4792 C 262.54914,586.28504 261.16207,589.54303 258.38796,592.25318 C 255.6138,594.96333 252.32283,596.31841 248.51505,596.31841 C 246.45166,596.31841 244.40354,595.78583 242.3707,594.72067 C 240.33783,593.65551 238.80555,592.38116 237.77387,590.89761 C 236.74218,589.41407 236.01665,587.89804 235.59728,586.34951 C 235.17791,584.80101 234.96823,583.2205 234.96823,581.60798 L 234.96823,563.60756 C 234.96823,559.80177 236.27457,556.43107 238.88727,553.49544 C 241.49995,550.55989 244.7417,549.0921 248.61251,549.09206 C 252.61324,549.0921 255.9362,550.51117 258.5814,553.34925 C 261.22655,556.18742 262.54914,559.60685 262.54917,563.60756 L 253.35553,563.60756 C 253.3555,562.18804 252.95238,560.92993 252.14615,559.83324 C 251.33987,558.73661 250.22697,558.18828 248.80743,558.18824 C 247.96868,558.18828 247.24265,558.36548 246.62937,558.71984 C 246.01605,559.07427 245.46772,559.6226 244.98437,560.36483 C 244.501,561.10713 244.25932,562.18804 244.25934,563.60756 L 244.25934,581.60798 C 244.25932,583.28547 244.61421,584.60806 245.324,585.57575 C 246.03377,586.54346 247.22641,587.02731 248.90194,587.0273 C 250.25847,587.02731 251.33987,586.52721 252.14615,585.52702 C 252.95238,584.52684 253.3555,583.31697 253.35553,581.8974 L 262.54917,581.8974 L 262.54917,582.4792 z M 287.20043,549.09206 C 288.87788,549.0921 290.45888,549.54347 291.94344,550.44615 C 293.42794,551.34892 294.49261,552.39734 295.13744,553.59142 C 295.78222,554.78558 296.18534,555.80201 296.34682,556.64071 C 296.50824,557.47949 296.58896,558.57615 296.58899,559.9307 L 296.58899,595.7366 L 287.29789,595.7366 L 287.29789,563.41265 C 287.29786,561.86515 286.94297,560.60753 286.23322,559.6398 C 285.52342,558.67213 284.39476,558.18828 282.84725,558.18824 C 281.49265,558.18828 280.37975,558.72037 279.50854,559.78451 C 278.6373,560.84872 278.20168,562.0581 278.2017,563.41265 L 278.2017,595.7366 L 268.91059,595.7366 L 268.91059,531.1891 L 278.2017,531.1891 L 278.2017,554.12449 C 280.33003,550.76958 283.32961,549.0921 287.20043,549.09206 L 287.20043,549.09206 z M 305.40462,595.7366 L 305.40462,586.54296 L 314.59827,586.54296 L 314.59827,595.7366 L 305.40462,595.7366 z " />
+    <path
+       id="text1886"
+       style="font-size:96.77368927px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M 11.1449,505.12715 L -16.338493,505.12715 L -16.338493,440.57986 L -7.14487,440.57986 L -7.14487,495.83608 L 11.1449,495.83608 L 11.1449,505.12715 z M 17.47678,500.28965 C 17.02393,499.51392 16.73304,498.65845 16.60408,497.72323 C 16.47511,496.78803 16.41063,495.73961 16.41064,494.57797 L 16.41064,489.35359 C 16.41063,485.93369 17.26561,483.38499 18.97558,481.70749 C 20.68553,480.03005 22.23404,478.88515 23.62112,478.27281 C 25.00817,477.66052 26.6694,477.35436 28.60481,477.35433 L 34.79787,477.35433 L 34.79787,473.3851 C 34.79785,472.48142 34.74962,471.73965 34.65316,471.15979 C 34.55667,470.57999 34.15354,469.83822 33.44379,468.93448 C 32.73399,468.03081 31.7658,467.57895 30.53922,467.57891 C 29.24959,467.57895 28.15294,467.99832 27.24924,468.83702 C 26.34552,469.67579 25.79719,470.77245 25.60426,472.12699 L 16.41064,472.12699 C 16.41063,468.38619 17.74946,465.17694 20.42712,462.49924 C 23.10477,459.82163 26.3465,458.4828 30.15234,458.48276 C 33.89513,458.4828 37.1536,459.80539 39.92775,462.45051 C 42.70186,465.09572 44.08892,468.32121 44.08895,472.12699 L 44.08895,505.12715 L 34.79787,505.12715 L 34.79787,500.48161 C 33.83114,502.09412 32.62177,503.36847 31.16975,504.30466 C 29.71769,505.24086 28.08796,505.70895 26.28056,505.70895 C 22.21681,505.70895 19.28222,503.90252 17.47678,500.28965 L 17.47678,500.28965 z M 25.70171,489.25613 L 25.70171,491.57742 C 25.7017,492.80403 26.13731,493.91743 27.00855,494.9176 C 27.87976,495.91779 29.02416,496.41788 30.44176,496.41788 C 31.21747,496.41788 31.94398,496.22444 32.62129,495.83755 C 33.29856,495.45068 33.81441,494.91859 34.16882,494.24129 C 34.5232,493.56402 34.71664,492.69279 34.74914,491.62763 C 34.78161,490.56248 34.79785,489.80447 34.79787,489.35359 L 34.79787,484.90001 L 31.31298,484.90001 C 29.63549,484.90003 28.28091,485.22293 27.24924,485.86869 C 26.21754,486.5145 25.7017,487.64364 25.70171,489.25613 L 25.70171,489.25613 z M 78.37675,463.2228 C 78.89453,463.99857 79.24991,464.93477 79.44289,466.03139 C 79.63581,467.12808 79.73228,468.22474 79.73231,469.32136 L 79.73231,505.12715 L 70.44124,505.12715 L 70.44124,472.70879 C 70.44121,469.28891 68.92519,467.57895 65.89316,467.57891 C 64.53856,467.57895 63.4419,468.09529 62.60318,469.12792 C 61.76443,470.16062 61.34506,471.35425 61.34508,472.70879 L 61.34508,505.12715 L 52.054,505.12715 L 52.054,459.0616 L 61.34508,459.0616 L 61.34508,463.51518 C 63.4104,460.16027 66.28199,458.4828 69.95985,458.48276 C 73.70067,458.4828 76.5063,460.06282 78.37675,463.2228 L 78.37675,463.2228 z M 105.97237,505.12715 L 105.97237,500.38416 C 105.06864,501.93366 103.87502,503.2085 102.3915,504.20868 C 100.90794,505.20886 99.26246,505.70895 97.45506,505.70895 C 93.26136,505.70895 90.61619,504.56357 89.51954,502.27279 C 88.42288,499.98202 87.82631,498.33654 87.72984,497.33635 C 87.63337,496.33618 87.58513,494.99735 87.58513,493.31987 L 87.58513,468.45014 C 87.58513,465.67605 88.52034,463.32128 90.39077,461.38585 C 92.26118,459.4505 94.61594,458.4828 97.45506,458.48276 C 99.19749,458.4828 100.82672,458.93416 102.34277,459.83684 C 103.85877,460.73961 105.06864,461.93324 105.97237,463.41772 L 105.97237,440.57986 L 115.26345,440.57986 L 115.26345,505.12715 L 105.97237,505.12715 z M 105.29311,469.8057 C 104.39135,468.25624 103.06926,467.48149 101.32683,467.48146 C 100.42311,467.48149 99.60061,467.72366 98.85935,468.20797 C 98.11806,468.69235 97.61797,469.27316 97.35907,469.95041 C 97.10016,470.62774 96.95495,471.33751 96.92346,472.07974 C 96.89195,472.82204 96.8762,473.38612 96.87621,473.77198 L 96.87621,490.31931 C 96.8762,490.96512 96.89195,491.6109 96.92346,492.25668 C 96.95495,492.90248 97.26111,493.74121 97.84194,494.77289 C 98.42274,495.80458 99.61686,496.32043 101.42429,496.32042 C 103.29469,496.32043 104.52031,495.80458 105.10115,494.77289 C 105.68194,493.74121 105.97235,492.70854 105.97237,491.67488 L 105.97237,490.31931 L 105.97237,473.77198 C 105.97235,473.12623 105.9561,472.46469 105.92364,471.78737 C 105.89113,471.11011 105.68096,470.44956 105.29311,469.8057 L 105.29311,469.8057 z M 124.09086,484.32116 L 124.09086,475.12755 L 151.67171,475.12755 L 151.67171,484.32116 L 124.09086,484.32116 z M 196.13953,505.12715 L 196.13953,500.48161 C 195.04285,502.15909 193.83298,503.44968 192.50992,504.35339 C 191.18683,505.2571 189.59008,505.70895 187.71967,505.70895 C 185.84924,505.70895 184.09153,505.19262 182.44656,504.15995 C 180.80156,503.12728 179.65618,501.9499 179.01039,500.6278 C 178.3646,499.30572 177.99347,498.2253 177.897,497.38656 C 177.80052,496.54783 177.75228,495.32123 177.75229,493.70675 L 177.75229,459.0616 L 187.04337,459.0616 L 187.04337,490.22481 C 187.04335,490.93361 187.0596,491.65914 187.0921,492.40139 C 187.12457,493.14366 187.47946,493.99864 188.15676,494.96633 C 188.83403,495.93404 190.01141,496.41788 191.6889,496.41788 C 192.52762,496.41788 193.30139,496.19196 194.0102,495.74009 C 194.71897,495.28825 195.21857,494.75616 195.509,494.14384 C 195.79938,493.53153 195.97707,492.87048 196.04207,492.1607 C 196.10702,491.45093 196.1395,490.80564 196.13953,490.22481 L 196.13953,459.0616 L 205.4306,459.0616 L 205.4306,505.12715 L 196.13953,505.12715 z M 239.79223,463.2228 C 240.31001,463.99857 240.66539,464.93477 240.85837,466.03139 C 241.05129,467.12808 241.14776,468.22474 241.14779,469.32136 L 241.14779,505.12715 L 231.85672,505.12715 L 231.85672,472.70879 C 231.8567,469.28891 230.34067,467.57895 227.30864,467.57891 C 225.95404,467.57895 224.85738,468.09529 224.01866,469.12792 C 223.17991,470.16062 222.76054,471.35425 222.76056,472.70879 L 222.76056,505.12715 L 213.46948,505.12715 L 213.46948,459.0616 L 222.76056,459.0616 L 222.76056,463.51518 C 224.82588,460.16027 227.69747,458.4828 231.37533,458.48276 C 235.11615,458.4828 237.92178,460.06282 239.79223,463.2228 L 239.79223,463.2228 z M 267.38785,505.12715 L 267.38785,500.38416 C 266.48412,501.93366 265.2905,503.2085 263.80698,504.20868 C 262.32342,505.20886 260.67794,505.70895 258.87054,505.70895 C 254.67684,505.70895 252.03168,504.56357 250.93503,502.27279 C 249.83836,499.98202 249.2418,498.33654 249.14533,497.33635 C 249.04885,496.33618 249.00061,494.99735 249.00061,493.31987 L 249.00061,468.45014 C 249.00061,465.67605 249.93582,463.32128 251.80625,461.38585 C 253.67666,459.4505 256.03142,458.4828 258.87054,458.48276 C 260.61297,458.4828 262.2422,458.93416 263.75825,459.83684 C 265.27425,460.73961 266.48412,461.93324 267.38785,463.41772 L 267.38785,440.57986 L 276.67893,440.57986 L 276.67893,505.12715 L 267.38785,505.12715 z M 266.70859,469.8057 C 265.80683,468.25624 264.48474,467.48149 262.74231,467.48146 C 261.83859,467.48149 261.01609,467.72366 260.27483,468.20797 C 259.53354,468.69235 259.03345,469.27316 258.77456,469.95041 C 258.51564,470.62774 258.37043,471.33751 258.33894,472.07974 C 258.30743,472.82204 258.29168,473.38612 258.29169,473.77198 L 258.29169,490.31931 C 258.29168,490.96512 258.30743,491.6109 258.33894,492.25668 C 258.37043,492.90248 258.67659,493.74121 259.25742,494.77289 C 259.83822,495.80458 261.03234,496.32043 262.83977,496.32042 C 264.71017,496.32043 265.93579,495.80458 266.51663,494.77289 C 267.09742,493.74121 267.38783,492.70854 267.38785,491.67488 L 267.38785,490.31931 L 267.38785,473.77198 C 267.38783,473.12623 267.37159,472.46469 267.33912,471.78737 C 267.30661,471.11011 267.09644,470.44956 266.70859,469.8057 L 266.70859,469.8057 z " />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-39.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-39.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1026-39.svg	(revision 36424)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="translate(239.8387,-361.3143)"
+     id="g2430">
+    <path
+       d="M -136.70895,402.37814 C -135.31688,402.37819 -133.92479,402.69031 -132.53268,403.31451 C -131.14061,403.93879 -129.67635,405.01913 -128.1399,406.55551 C -126.60349,408.09199 -125.83528,410.46843 -125.83525,413.68485 L -125.83525,417.35778 C -125.83528,421.00802 -127.27573,423.60097 -130.1566,425.13664 C -127.27573,426.81743 -125.83528,429.48292 -125.83525,433.13311 L -125.83525,438.7513 C -125.83528,442.11137 -126.91561,444.89592 -129.07626,447.10494 C -131.23695,449.31397 -134.0215,450.41849 -137.42991,450.41849 L -148.01787,450.41849 L -148.01787,402.37814 L -136.70895,402.37814 z M -132.60521,416.63902 L -132.60521,413.68485 C -132.60523,412.19755 -133.03715,411.0216 -133.90096,410.157 C -134.7648,409.29248 -135.91694,408.8602 -137.35737,408.86016 L -141.2479,408.86016 L -141.2479,422.11214 L -137.14197,422.11214 C -135.55793,422.11217 -134.40579,421.62017 -133.68555,420.63615 C -132.96534,419.6522 -132.60523,418.31982 -132.60521,416.63902 L -132.60521,416.63902 z M -132.60521,438.7513 L -132.60521,433.13311 C -132.60523,431.59596 -133.02542,430.38338 -133.86579,429.49535 C -134.70619,428.60737 -135.87005,428.16336 -137.35737,428.16334 L -141.2479,428.16334 L -141.2479,443.57599 L -137.28704,443.57599 C -135.8935,443.576 -134.7648,443.11991 -133.90096,442.20771 C -133.03715,441.29553 -132.60523,440.1434 -132.60521,438.7513 L -132.60521,438.7513 z M -110.18082,443.86393 C -109.1712,443.86394 -108.35463,443.55182 -107.7311,442.92757 C -107.10761,442.30333 -106.72332,441.48713 -106.57823,440.47895 L -99.73573,440.47895 L -99.73573,441.27025 C -99.73576,442.32678 -99.96399,443.3833 -100.42042,444.43982 C -100.8769,445.49635 -101.82536,446.82909 -103.26578,448.43805 C -104.70625,450.04702 -106.9629,450.8515 -110.03575,450.8515 C -112.0052,450.8515 -113.81821,450.32324 -115.47479,449.26672 C -117.13139,448.21019 -118.2718,447.0456 -118.89604,445.77293 C -119.52029,444.50027 -119.9163,443.34777 -120.08408,442.31542 C -120.25187,441.28308 -120.33576,440.26282 -120.33576,439.25465 L -120.33576,426.21808 C -120.33576,423.38556 -119.31551,420.92486 -117.27499,418.83596 C -115.23448,416.74712 -112.79723,415.70269 -109.96321,415.70265 C -107.03397,415.70269 -104.59708,416.72295 -102.65253,418.76342 C -100.70802,420.80397 -99.73576,423.28885 -99.73573,426.21808 L -99.73573,435.7246 L -113.42073,435.7246 L -113.42073,440.83943 C -113.42074,441.55893 -113.07271,442.24289 -112.37666,442.8913 C -111.68062,443.53973 -110.94868,443.86394 -110.18082,443.86393 L -110.18082,443.86393 z M -110.03575,422.47262 C -110.94868,422.47264 -111.74107,422.78477 -112.41293,423.40898 C -113.0848,424.03325 -113.42074,425.1374 -113.42073,426.72143 L -113.42073,430.10641 L -106.65077,430.10641 L -106.65077,426.72143 C -106.65078,425.47296 -106.91491,424.45271 -107.44316,423.66066 C -107.97144,422.86866 -108.83563,422.47264 -110.03575,422.47262 L -110.03575,422.47262 z M -83.99777,443.86393 L -82.41298,443.86393 L -82.41298,450.41849 L -84.57366,450.41849 C -85.87051,450.41849 -87.02302,450.28661 -88.03117,450.02284 C -89.03935,449.75908 -90.0237,449.21873 -90.98424,448.40179 C -91.94479,447.58485 -92.61702,446.68439 -93.00094,445.7004 C -93.38487,444.71641 -93.57683,443.5042 -93.57683,442.06374 L -93.57683,421.53625 L -96.96181,421.53625 L -96.96181,416.13347 L -93.57683,416.13347 L -93.57683,405.76312 L -86.66179,405.76312 L -86.66179,416.13347 L -82.41298,416.13347 L -82.41298,421.53625 L -86.66179,421.53625 L -86.66179,440.83943 C -86.6618,441.99121 -86.50574,442.78324 -86.19361,443.21551 C -85.8815,443.6478 -85.14955,443.86394 -83.99777,443.86393 L -83.99777,443.86393 z M -61.4305,415.70265 L -61.4305,422.76056 C -61.76609,422.66534 -62.10202,422.59354 -62.4383,422.54515 C -62.77462,422.49682 -63.08711,422.47264 -63.37577,422.47262 C -65.63244,422.47264 -67.36083,423.24086 -68.56094,424.77726 C -69.76108,426.31371 -70.36115,428.16263 -70.36114,430.32401 L -70.36114,450.41849 L -77.27617,450.41849 L -77.27617,416.13347 L -70.36114,416.13347 L -70.36114,419.80859 C -69.16102,418.31982 -67.68467,417.2633 -65.93209,416.63902 C -64.17953,416.01481 -62.67901,415.70269 -61.4305,415.70265 L -61.4305,415.70265 z M -57.15971,450.41849 L -57.15971,416.13347 L -50.24468,416.13347 L -50.24468,450.41849 L -57.15971,450.41849 z M -57.15971,409.1481 L -57.15971,402.37814 L -50.24468,402.37814 L -50.24468,409.1481 L -57.15971,409.1481 z M -34.6386,443.86393 C -33.62898,443.86394 -32.81241,443.55182 -32.18889,442.92757 C -31.56539,442.30333 -31.1811,441.48713 -31.03602,440.47895 L -24.19352,440.47895 L -24.19352,441.27025 C -24.19354,442.32678 -24.42177,443.3833 -24.87821,444.43982 C -25.33469,445.49635 -26.28314,446.82909 -27.72357,448.43805 C -29.16404,450.04702 -31.42069,450.8515 -34.49353,450.8515 C -36.46299,450.8515 -38.276,450.32324 -39.93258,449.26672 C -41.58918,448.21019 -42.72959,447.0456 -43.35383,445.77293 C -43.97808,444.50027 -44.37409,443.34777 -44.54187,442.31542 C -44.70966,441.28308 -44.79355,440.26282 -44.79354,439.25465 L -44.79354,426.21808 C -44.79355,423.38556 -43.77329,420.92486 -41.73278,418.83596 C -39.69227,416.74712 -37.25501,415.70269 -34.421,415.70265 C -31.49176,415.70269 -29.05487,416.72295 -27.11032,418.76342 C -25.16581,420.80397 -24.19354,423.28885 -24.19352,426.21808 L -24.19352,435.7246 L -37.87851,435.7246 L -37.87851,440.83943 C -37.87852,441.55893 -37.5305,442.24289 -36.83444,442.8913 C -36.13841,443.53973 -35.40646,443.86394 -34.6386,443.86393 L -34.6386,443.86393 z M -34.49353,422.47262 C -35.40646,422.47264 -36.19886,422.78477 -36.87071,423.40898 C -37.54259,424.03325 -37.87852,425.1374 -37.87851,426.72143 L -37.87851,430.10641 L -31.10855,430.10641 L -31.10855,426.72143 C -31.10857,425.47296 -31.3727,424.45271 -31.90095,423.66066 C -32.42922,422.86866 -33.29342,422.47264 -34.49353,422.47262 L -34.49353,422.47262 z M -5.35853,415.70265 C -2.52601,415.70269 -0.67746,416.435 0.18713,417.8996 C 1.05167,419.36425 1.55612,420.51676 1.70048,421.35711 C 1.84479,422.19752 1.91696,422.95328 1.91698,423.62439 L 1.91698,442.42422 C 1.91696,443.62436 1.8327,444.63252 1.66421,445.44872 C 1.49567,446.26493 0.89524,447.36944 -0.13708,448.76227 C -1.16945,450.15509 -2.93411,450.8515 -5.43106,450.8515 C -6.77481,450.8515 -7.98703,450.50311 -9.06772,449.80633 C -10.14843,449.10956 -11.04853,448.1611 -11.76801,446.96097 L -11.76801,450.41849 L -18.68304,450.41849 L -18.68304,402.37814 L -11.76801,402.37814 L -11.76801,419.44811 C -10.23232,416.95117 -8.09583,415.70269 -5.35853,415.70265 L -5.35853,415.70265 z M -8.45556,422.47262 C -9.41539,422.47264 -10.20741,422.85693 -10.83164,423.62549 C -11.4559,424.39409 -11.76802,425.28247 -11.76801,426.29061 L -11.76801,439.83053 C -11.76802,440.93542 -11.56397,441.89597 -11.15586,442.71216 C -10.74776,443.52837 -9.84767,443.93648 -8.45556,443.93647 C -7.44741,443.93648 -6.61912,443.63644 -5.97068,443.03637 C -5.32228,442.43632 -4.99807,441.75163 -4.99805,440.98231 L -4.99805,426.29061 C -4.99807,425.18575 -5.31019,424.2732 -5.93441,423.55295 C -6.55867,422.83276 -7.39905,422.47264 -8.45556,422.47262 L -8.45556,422.47262 z M 16.47901,444.36729 C 17.53552,444.36729 18.4477,444.03136 19.21557,443.35948 C 19.9834,442.68763 20.36732,441.82343 20.36734,440.7669 C 20.36732,439.51842 20.04348,438.59415 19.39581,437.99407 C 18.7481,437.39402 17.72748,436.85367 16.33394,436.37302 L 14.96676,435.86967 C 13.5263,435.34069 12.3258,434.82415 11.36527,434.32005 C 10.40472,433.81598 9.37238,432.9038 8.26823,431.58349 C 7.16408,430.26322 6.61201,428.35459 6.61201,425.8576 C 6.61201,423.02508 7.59636,420.62446 9.56508,418.65572 C 11.53378,416.68704 13.95858,415.70269 16.83949,415.70265 C 19.48005,415.70269 21.71252,416.71086 23.53691,418.72716 C 25.36126,420.74352 26.27345,423.02435 26.27347,425.56965 L 19.93652,425.56965 C 19.93651,424.56151 19.6123,423.73322 18.96389,423.08477 C 18.31546,422.43638 17.46298,422.11217 16.40647,422.11214 C 15.44665,422.11217 14.65463,422.47228 14.03039,423.19247 C 13.40614,423.91272 13.09402,424.77692 13.09403,425.78506 C 13.09402,426.84161 13.40614,427.65818 14.03039,428.23478 C 14.65463,428.81142 15.56681,429.31587 16.76695,429.74813 L 19.00016,430.46689 C 20.29699,430.94754 21.31724,431.404 22.06093,431.83626 C 22.80458,432.26856 23.54862,432.91662 24.29304,433.78043 C 25.03742,434.64427 25.64994,435.65244 26.1306,436.80493 C 26.61121,437.95745 26.85153,439.18212 26.85156,440.47895 C 26.85153,443.26461 25.85509,445.7015 23.86222,447.78963 C 21.86932,449.87777 19.48005,450.92184 16.69442,450.92184 C 15.01364,450.92184 13.32115,450.46575 11.61694,449.55356 C 9.91273,448.64137 8.59244,447.40498 7.65608,445.84437 C 6.71971,444.28377 6.25153,442.51948 6.25153,440.55149 L 12.66101,440.55149 C 12.66101,441.60802 13.03321,442.50812 13.77762,443.25178 C 14.52201,443.99546 15.42247,444.36729 16.47901,444.36729 L 16.47901,444.36729 z M 32.11365,434.9333 L 32.11365,428.0908 L 52.64114,428.0908 L 52.64114,434.9333 L 32.11365,434.9333 z M 98.39773,450.41849 L 98.39773,446.96097 C 97.58151,448.20946 96.68105,449.17 95.69634,449.8426 C 94.71161,450.5152 93.5232,450.8515 92.13112,450.8515 C 90.73902,450.8515 89.43082,450.46721 88.20652,449.69863 C 86.98221,448.93005 86.12974,448.05377 85.64911,447.06978 C 85.16846,446.08579 84.89224,445.28168 84.82045,444.65743 C 84.74864,444.03319 84.71274,443.12027 84.71274,441.91867 L 84.71274,416.13347 L 91.62777,416.13347 L 91.62777,439.32718 C 91.62776,439.85472 91.63985,440.39471 91.66404,440.94714 C 91.68821,441.49959 91.95234,442.13592 92.45643,442.85613 C 92.96051,443.57636 93.83679,443.93648 95.08529,443.93647 C 95.70952,443.93648 96.2854,443.76833 96.81295,443.43202 C 97.34046,443.09573 97.7123,442.69971 97.92845,442.24398 C 98.14458,441.78826 98.27683,441.29627 98.3252,440.768 C 98.37354,440.23974 98.39772,439.75947 98.39773,439.32718 L 98.39773,416.13347 L 105.31277,416.13347 L 105.31277,450.41849 L 98.39773,450.41849 z M 130.88694,419.23051 C 131.27231,419.80789 131.53681,420.50467 131.68044,421.32084 C 131.82402,422.13708 131.89582,422.95328 131.89584,423.76946 L 131.89584,450.41849 L 124.98081,450.41849 L 124.98081,426.29061 C 124.9808,423.74531 123.85247,422.47264 121.59583,422.47262 C 120.58765,422.47264 119.77145,422.85693 119.14722,423.62549 C 118.52296,424.39409 118.21084,425.28247 118.21085,426.29061 L 118.21085,450.41849 L 111.29582,450.41849 L 111.29582,416.13347 L 118.21085,416.13347 L 118.21085,419.44811 C 119.748,416.95117 121.88523,415.70269 124.62253,415.70265 C 127.4067,415.70269 129.49483,416.87864 130.88694,419.23051 L 130.88694,419.23051 z M 151.42543,450.41849 L 151.42543,446.88844 C 150.75282,448.04168 149.86444,448.9905 148.76031,449.7349 C 147.65615,450.4793 146.43148,450.8515 145.08629,450.8515 C 141.96507,450.8515 139.99636,449.99903 139.18016,448.29408 C 138.36395,446.58914 137.91994,445.36447 137.84815,444.62006 C 137.77634,443.87566 137.74044,442.87922 137.74044,441.63073 L 137.74044,423.12104 C 137.74044,421.05638 138.43648,419.30381 139.82858,417.86333 C 141.22066,416.42291 142.97323,415.70269 145.08629,415.70265 C 146.38312,415.70269 147.5957,416.03862 148.72404,416.71046 C 149.85236,417.38236 150.75282,418.27073 151.42543,419.37558 L 151.42543,402.37814 L 158.34047,402.37814 L 158.34047,450.41849 L 151.42543,450.41849 z M 150.91989,424.12994 C 150.24874,422.97673 149.26475,422.40011 147.96792,422.40008 C 147.29531,422.40011 146.68315,422.58035 146.13146,422.9408 C 145.57974,423.3013 145.20754,423.73358 145.01485,424.23764 C 144.82215,424.74175 144.71408,425.27001 144.69064,425.82243 C 144.66719,426.37489 144.65546,426.79472 144.65547,427.08191 L 144.65547,439.39752 C 144.65546,439.87817 144.66719,440.3588 144.69064,440.83943 C 144.71408,441.32008 144.94194,441.94432 145.37423,442.71216 C 145.8065,443.48002 146.69524,443.86394 148.04045,443.86393 C 149.43253,443.86394 150.34472,443.48002 150.77701,442.71216 C 151.20928,441.94432 151.42542,441.17574 151.42543,440.40642 L 151.42543,439.39752 L 151.42543,427.08191 C 151.42542,426.60129 151.41333,426.10893 151.38917,425.60482 C 151.36497,425.10076 151.20854,424.60914 150.91989,424.12994 L 150.91989,424.12994 z "
+       style="font-size:72.02535248px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       id="text2092" />
+    <path
+       d="M -185.35723,518.07518 L -195.15164,470.03507 L -187.9509,470.03507 L -182.40308,503.38136 L -176.71458,470.03507 L -169.4391,470.03507 L -179.45112,518.07518 L -185.35723,518.07518 z M -156.3938,511.52066 C -155.38419,511.52067 -154.56762,511.20855 -153.9441,510.5843 C -153.32061,509.96007 -152.93632,509.14387 -152.79123,508.1357 L -145.94877,508.1357 L -145.94877,508.92699 C -145.94879,509.98351 -146.17702,511.04003 -146.63346,512.09654 C -147.08994,513.15307 -148.03839,514.4858 -149.47881,516.09476 C -150.91927,517.70371 -153.17591,518.50819 -156.24873,518.50819 C -158.21818,518.50819 -160.03118,517.97993 -161.68776,516.92341 C -163.34434,515.8669 -164.48475,514.70231 -165.10899,513.42965 C -165.73323,512.15699 -166.12924,511.0045 -166.29702,509.97215 C -166.46481,508.93982 -166.5487,507.91957 -166.5487,506.91139 L -166.5487,493.87489 C -166.5487,491.04239 -165.52845,488.5817 -163.48794,486.49281 C -161.44745,484.40398 -159.0102,483.35955 -156.1762,483.35952 C -153.24697,483.35955 -150.8101,484.3798 -148.86556,486.42027 C -146.92106,488.4608 -145.94879,490.94567 -145.94877,493.87489 L -145.94877,503.38136 L -159.6337,503.38136 L -159.6337,508.49617 C -159.63371,509.21567 -159.28569,509.89962 -158.58963,510.54803 C -157.8936,511.19646 -157.16166,511.52067 -156.3938,511.52066 L -156.3938,511.52066 z M -156.24873,490.12945 C -157.16166,490.12947 -157.95405,490.44159 -158.6259,491.06581 C -159.29778,491.69007 -159.63371,492.79421 -159.6337,494.37823 L -159.6337,497.7632 L -152.86377,497.7632 L -152.86377,494.37823 C -152.86379,493.12978 -153.12792,492.10953 -153.65616,491.31748 C -154.18443,490.52548 -155.04862,490.12947 -156.24873,490.12945 L -156.24873,490.12945 z M -124.66526,483.35952 L -124.66526,490.41739 C -125.00085,490.32217 -125.33678,490.25036 -125.67306,490.20198 C -126.00937,490.15365 -126.32186,490.12947 -126.61052,490.12945 C -128.86718,490.12947 -130.59556,490.89768 -131.79567,492.43408 C -132.9958,493.97052 -133.59586,495.81943 -133.59585,497.9808 L -133.59585,518.07518 L -140.51085,518.07518 L -140.51085,483.79033 L -133.59585,483.79033 L -133.59585,487.46543 C -132.39574,485.97667 -130.9194,484.92015 -129.16683,484.29588 C -127.41428,483.67167 -125.91376,483.35955 -124.66526,483.35952 L -124.66526,483.35952 z M -111.60677,512.02401 C -110.55026,512.02401 -109.63808,511.68808 -108.87022,511.01621 C -108.10239,510.34436 -107.71847,509.48017 -107.71846,508.42364 C -107.71847,507.17517 -108.04231,506.2509 -108.68998,505.65082 C -109.33768,505.05078 -110.3583,504.51043 -111.75184,504.02978 L -113.11901,503.52643 C -114.55946,502.99745 -115.75995,502.48092 -116.72048,501.97682 C -117.68103,501.47275 -118.71337,500.56057 -119.8175,499.24027 C -120.92165,497.92001 -121.47372,496.01139 -121.47372,493.51441 C -121.47372,490.68191 -120.48937,488.2813 -118.52067,486.31257 C -116.55197,484.3439 -114.12718,483.35955 -111.24629,483.35952 C -108.60574,483.35955 -106.37328,484.36771 -104.5489,486.384 C -102.72456,488.40036 -101.81238,490.68118 -101.81235,493.22647 L -108.14927,493.22647 C -108.14929,492.21833 -108.47349,491.39004 -109.1219,490.7416 C -109.77033,490.09321 -110.6228,489.769 -111.6793,489.76897 C -112.63912,489.769 -113.43114,490.12911 -114.05537,490.8493 C -114.67962,491.56955 -114.99174,492.43374 -114.99173,493.44187 C -114.99174,494.49842 -114.67962,495.31498 -114.05537,495.89158 C -113.43114,496.46822 -112.51896,496.97266 -111.31883,497.40492 L -109.08563,498.12368 C -107.78881,498.60433 -106.76856,499.06079 -106.02488,499.49305 C -105.28123,499.92534 -104.5372,500.5734 -103.79278,501.4372 C -103.0484,502.30104 -102.43588,503.30921 -101.95523,504.46169 C -101.47461,505.6142 -101.23429,506.83887 -101.23427,508.1357 C -101.23429,510.92134 -102.23073,513.35822 -104.22359,515.44634 C -106.21649,517.53447 -108.60574,518.57853 -111.39136,518.57853 C -113.07213,518.57853 -114.76461,518.12244 -116.46881,517.21026 C -118.17302,516.29808 -119.4933,515.06169 -120.42966,513.50108 C -121.36602,511.94049 -121.8342,510.17621 -121.8342,508.20823 L -115.42474,508.20823 C -115.42475,509.26476 -115.05255,510.16485 -114.30815,510.90851 C -113.56376,511.65218 -112.6633,512.02401 -111.60677,512.02401 L -111.60677,512.02401 z M -94.89077,487.32036 C -93.88261,486.07192 -92.69421,485.09966 -91.32556,484.40358 C -89.95693,483.70757 -88.48059,483.35955 -86.89654,483.35952 C -85.12054,483.35955 -83.54822,483.68376 -82.17957,484.33214 C -80.81095,484.9806 -79.5262,486.09683 -78.32532,487.68084 C -77.12449,489.26492 -76.52406,491.3296 -76.52404,493.87489 L -76.52404,507.55981 C -76.52406,510.15203 -77.10031,512.22843 -78.25279,513.78903 C -79.40531,515.34963 -80.70178,516.52631 -82.1422,517.31906 C -83.58266,518.11181 -85.04728,518.50819 -86.53606,518.50819 C -88.60075,518.50819 -90.48556,517.99202 -92.19049,516.95968 C -93.89543,515.92734 -95.07211,514.77484 -95.72052,513.50218 C -96.36894,512.22953 -96.76496,511.17301 -96.90856,510.33263 C -97.05216,509.49225 -97.12397,508.56798 -97.12396,507.55981 L -97.12396,493.87489 C -97.12397,491.28124 -96.37957,489.0964 -94.89077,487.32036 L -94.89077,487.32036 z M -86.75366,490.05691 C -87.80873,490.05694 -88.64838,490.41705 -89.27261,491.13724 C -89.89686,491.85749 -90.20897,492.77004 -90.20897,493.87489 L -90.20897,507.55981 C -90.20897,508.6647 -89.90894,509.61315 -89.30887,510.40516 C -88.70882,511.19719 -87.85709,511.5932 -86.75366,511.59319 C -85.26488,511.5932 -84.34024,511.16092 -83.97975,510.29636 C -83.61929,509.43181 -83.43905,508.47127 -83.43904,507.41474 L -83.43904,493.87489 C -83.43905,492.81839 -83.73908,491.91793 -84.33913,491.17351 C -84.93921,490.42914 -85.74405,490.05694 -86.75366,490.05691 L -86.75366,490.05691 z M -55.17239,483.35952 L -55.17239,490.41739 C -55.50797,490.32217 -55.8439,490.25036 -56.18018,490.20198 C -56.5165,490.15365 -56.82899,490.12947 -57.11764,490.12945 C -59.3743,490.12947 -61.10268,490.89768 -62.30279,492.43408 C -63.50293,493.97052 -64.10299,495.81943 -64.10298,497.9808 L -64.10298,518.07518 L -71.01798,518.07518 L -71.01798,483.79033 L -64.10298,483.79033 L -64.10298,487.46543 C -62.90287,485.97667 -61.42653,484.92015 -59.67395,484.29588 C -57.92141,483.67167 -56.42089,483.35955 -55.17239,483.35952 L -55.17239,483.35952 z M -32.38982,527.51132 C -33.35111,528.95175 -34.57577,530.09216 -36.06382,530.93255 C -37.5519,531.77292 -39.13631,532.1931 -40.81706,532.19312 C -43.74631,532.1931 -46.25535,531.19667 -48.34421,529.2038 C -50.43307,527.21091 -51.4775,524.72568 -51.4775,521.74809 L -44.5625,521.74809 C -44.56251,522.70935 -44.25039,523.52592 -43.62614,524.19779 C -43.00191,524.86965 -42.18571,525.20558 -41.17753,525.20559 C -39.73711,525.20558 -38.68059,524.55716 -38.00798,523.26033 C -37.81603,522.78116 -37.72005,522.01331 -37.72004,520.9568 L -37.72004,514.54515 C -38.39265,515.69838 -39.3052,516.6472 -40.45768,517.39159 C -41.61019,518.13599 -42.83486,518.50819 -44.13169,518.50819 C -45.52378,518.50819 -46.80779,518.13599 -47.98373,517.39159 C -49.15968,516.6472 -50.00006,515.79473 -50.50487,514.83419 C -51.00969,513.87365 -51.29799,513.10544 -51.36979,512.52955 C -51.4416,511.95368 -51.4775,511.06494 -51.4775,509.86335 L -51.4775,490.8504 C -51.4775,489.98587 -51.36943,489.19348 -51.15329,488.47323 C -50.93715,487.75304 -50.33672,486.70861 -49.352,485.33994 C -48.36729,483.97134 -46.65063,483.28702 -44.20202,483.28698 C -42.90666,483.28702 -41.70654,483.61123 -40.60165,484.25961 C -39.49679,484.90806 -38.53625,485.80815 -37.72004,486.95989 L -37.72004,483.79033 L -30.80504,483.79033 L -30.80504,520.9568 C -30.80506,522.30052 -30.91313,523.48855 -31.12925,524.5209 C -31.34541,525.55323 -31.7656,526.55004 -32.38982,527.51132 L -32.38982,527.51132 z M -38.36845,491.42628 C -39.08942,490.46504 -40.02578,489.9844 -41.17753,489.98438 C -42.52274,489.9844 -43.39939,490.38078 -43.80748,491.17351 C -44.21559,491.96629 -44.44345,492.56672 -44.49106,492.97479 C -44.5387,493.38292 -44.56251,493.80311 -44.5625,494.23536 L -44.5625,507.27187 C -44.56251,507.94448 -44.52661,508.48483 -44.4548,508.89292 C -44.383,509.30103 -44.10678,509.84101 -43.62614,510.51286 C -43.14551,511.18473 -42.28169,511.52067 -41.03466,511.52066 C -39.54588,511.52067 -38.63333,511.10048 -38.29702,510.26009 C -37.96074,509.41972 -37.79259,508.78339 -37.79257,508.3511 C -37.79259,507.91883 -37.76841,507.55909 -37.72004,507.27187 L -37.72004,494.23536 C -37.72005,493.56279 -37.75632,493.03453 -37.82884,492.65058 C -37.90139,492.26669 -38.08126,491.85859 -38.36845,491.42628 L -38.36845,491.42628 z M -10.97882,518.07518 L -10.97882,514.61768 C -11.79504,515.86616 -12.6955,516.8267 -13.6802,517.4993 C -14.66493,518.17189 -15.85333,518.50819 -17.2454,518.50819 C -18.6375,518.50819 -19.94569,518.1239 -21.16998,517.35533 C -22.39429,516.58675 -23.24676,515.71047 -23.72739,514.72648 C -24.20803,513.7425 -24.48425,512.93839 -24.55605,512.31415 C -24.62785,511.68991 -24.66375,510.777 -24.66375,509.5754 L -24.66375,483.79033 L -17.74875,483.79033 L -17.74875,506.98393 C -17.74876,507.51147 -17.73667,508.05145 -17.71248,508.60388 C -17.68832,509.15632 -17.42419,509.79265 -16.92009,510.51286 C -16.41602,511.23309 -15.53974,511.5932 -14.29125,511.59319 C -13.66703,511.5932 -13.09114,511.42505 -12.5636,511.08875 C -12.03609,510.75246 -11.66426,510.35644 -11.4481,509.90071 C -11.23198,509.445 -11.09973,508.95301 -11.05136,508.42474 C -11.00302,507.89649 -10.97884,507.41622 -10.97882,506.98393 L -10.97882,483.79033 L -4.06383,483.79033 L -4.06383,518.07518 L -10.97882,518.07518 z M 21.51024,486.88735 C 21.8956,487.46473 22.1601,488.16151 22.30373,488.97768 C 22.44731,489.79391 22.51911,490.61011 22.51913,491.42628 L 22.51913,518.07518 L 15.60413,518.07518 L 15.60413,493.94742 C 15.60412,491.40213 14.4758,490.12947 12.21917,490.12945 C 11.211,490.12947 10.3948,490.51376 9.77057,491.28231 C 9.14632,492.05091 8.8342,492.93928 8.83421,493.94742 L 8.83421,518.07518 L 1.91921,518.07518 L 1.91921,483.79033 L 8.83421,483.79033 L 8.83421,487.10496 C 10.37135,484.60803 12.50856,483.35955 15.24586,483.35952 C 18.03001,483.35955 20.11813,484.5355 21.51024,486.88735 L 21.51024,486.88735 z M 47.0909,527.51132 C 46.1296,528.95175 44.90494,530.09216 43.41689,530.93255 C 41.92881,531.77292 40.3444,532.1931 38.66366,532.19312 C 35.73441,532.1931 33.22536,531.19667 31.13651,529.2038 C 29.04764,527.21091 28.00321,524.72568 28.00322,521.74809 L 34.91821,521.74809 C 34.9182,522.70935 35.23032,523.52592 35.85457,524.19779 C 36.4788,524.86965 37.295,525.20558 38.30318,525.20559 C 39.74361,525.20558 40.80012,524.55716 41.47274,523.26033 C 41.66468,522.78116 41.76066,522.01331 41.76068,520.9568 L 41.76068,514.54515 C 41.08807,515.69838 40.17552,516.6472 39.02303,517.39159 C 37.87052,518.13599 36.64585,518.50819 35.34903,518.50819 C 33.95693,518.50819 32.67292,518.13599 31.49698,517.39159 C 30.32103,516.6472 29.48065,515.79473 28.97584,514.83419 C 28.47103,513.87365 28.18272,513.10544 28.11092,512.52955 C 28.03911,511.95368 28.00321,511.06494 28.00322,509.86335 L 28.00322,490.8504 C 28.00321,489.98587 28.11128,489.19348 28.32743,488.47323 C 28.54356,487.75304 29.14399,486.70861 30.12871,485.33994 C 31.11342,483.97134 32.83008,483.28702 35.27869,483.28698 C 36.57405,483.28702 37.77417,483.61123 38.87906,484.25961 C 39.98392,484.90806 40.94446,485.80815 41.76068,486.95989 L 41.76068,483.79033 L 48.67568,483.79033 L 48.67568,520.9568 C 48.67565,522.30052 48.56758,523.48855 48.35147,524.5209 C 48.1353,525.55323 47.71511,526.55004 47.0909,527.51132 L 47.0909,527.51132 z M 41.11226,491.42628 C 40.39129,490.46504 39.45493,489.9844 38.30318,489.98438 C 36.95797,489.9844 36.08133,490.38078 35.67324,491.17351 C 35.26513,491.96629 35.03726,492.56672 34.98965,492.97479 C 34.94202,493.38292 34.9182,493.80311 34.91821,494.23536 L 34.91821,507.27187 C 34.9182,507.94448 34.95411,508.48483 35.02592,508.89292 C 35.09771,509.30103 35.37393,509.84101 35.85457,510.51286 C 36.3352,511.18473 37.19902,511.52067 38.44605,511.52066 C 39.93483,511.52067 40.84738,511.10048 41.18369,510.26009 C 41.51998,509.41972 41.68813,508.78339 41.68814,508.3511 C 41.68813,507.91883 41.7123,507.55909 41.76068,507.27187 L 41.76068,494.23536 C 41.76066,493.56279 41.72439,493.03453 41.65187,492.65058 C 41.57932,492.26669 41.39945,491.85859 41.11226,491.42628 L 41.11226,491.42628 z M 63.53215,512.02401 C 64.58865,512.02401 65.50083,511.68808 66.26869,511.01621 C 67.03652,510.34436 67.42044,509.48017 67.42046,508.42364 C 67.42044,507.17517 67.0966,506.2509 66.44893,505.65082 C 65.80123,505.05078 64.78061,504.51043 63.38708,504.02978 L 62.0199,503.52643 C 60.57945,502.99745 59.37896,502.48092 58.41843,501.97682 C 57.45789,501.47275 56.42555,500.56057 55.32141,499.24027 C 54.21727,497.92001 53.66519,496.01139 53.6652,493.51441 C 53.66519,490.68191 54.64954,488.2813 56.61825,486.31257 C 58.58694,484.3439 61.01173,483.35955 63.89262,483.35952 C 66.53317,483.35955 68.76564,484.36771 70.59002,486.384 C 72.41436,488.40036 73.32654,490.68118 73.32656,493.22647 L 66.98965,493.22647 C 66.98963,492.21833 66.66542,491.39004 66.01702,490.7416 C 65.36859,490.09321 64.51612,489.769 63.45961,489.76897 C 62.4998,489.769 61.70777,490.12911 61.08354,490.8493 C 60.45929,491.56955 60.14717,492.43374 60.14718,493.44187 C 60.14717,494.49842 60.45929,495.31498 61.08354,495.89158 C 61.70777,496.46822 62.61995,496.97266 63.82009,497.40492 L 66.05329,498.12368 C 67.35011,498.60433 68.37036,499.06079 69.11404,499.49305 C 69.85769,499.92534 70.60172,500.5734 71.34614,501.4372 C 72.09052,502.30104 72.70303,503.30921 73.18369,504.46169 C 73.6643,505.6142 73.90462,506.83887 73.90464,508.1357 C 73.90462,510.92134 72.90818,513.35822 70.91533,515.44634 C 68.92243,517.53447 66.53317,518.57853 63.74755,518.57853 C 62.06678,518.57853 60.3743,518.12244 58.67011,517.21026 C 56.9659,516.29808 55.64562,515.06169 54.70926,513.50108 C 53.7729,511.94049 53.30472,510.17621 53.30472,508.20823 L 59.71417,508.20823 C 59.71416,509.26476 60.08636,510.16485 60.83077,510.90851 C 61.57516,511.65218 62.47562,512.02401 63.53215,512.02401 L 63.53215,512.02401 z M 91.98781,518.07518 L 91.98781,514.54515 C 91.3152,515.69838 90.42683,516.6472 89.3227,517.39159 C 88.21855,518.13599 86.99388,518.50819 85.6487,518.50819 C 82.52749,518.50819 80.55879,517.65572 79.7426,515.95079 C 78.92639,514.24585 78.48239,513.02119 78.41059,512.27678 C 78.33878,511.53239 78.30288,510.53595 78.30289,509.28746 L 78.30289,490.77786 C 78.30288,488.71321 78.99893,486.96065 80.39101,485.52018 C 81.78309,484.07977 83.53565,483.35955 85.6487,483.35952 C 86.94552,483.35955 88.1581,483.69548 89.28644,484.36731 C 90.41474,485.03921 91.3152,485.92758 91.98781,487.03242 L 91.98781,470.03507 L 98.90281,470.03507 L 98.90281,518.07518 L 91.98781,518.07518 z M 91.48227,491.78676 C 90.81112,490.63355 89.82714,490.05694 88.53031,490.05691 C 87.8577,490.05694 87.24555,490.23718 86.69386,490.59763 C 86.14215,490.95813 85.76995,491.39041 85.57726,491.89446 C 85.38456,492.39857 85.27649,492.92683 85.25305,493.47924 C 85.2296,494.0317 85.21787,494.45153 85.21788,494.73871 L 85.21788,507.05427 C 85.21787,507.53491 85.2296,508.01555 85.25305,508.49617 C 85.27649,508.97682 85.50435,509.60106 85.93664,510.36889 C 86.36891,511.13674 87.25764,511.52067 88.60285,511.52066 C 89.99492,511.52067 90.9071,511.13674 91.33939,510.36889 C 91.77166,509.60106 91.9878,508.83248 91.98781,508.06316 L 91.98781,507.05427 L 91.98781,494.73871 C 91.9878,494.2581 91.97571,493.76574 91.95155,493.26164 C 91.92735,492.75758 91.77092,492.26595 91.48227,491.78676 L 91.48227,491.78676 z M 104.82432,518.07518 L 104.82432,483.79033 L 111.73932,483.79033 L 111.73932,518.07518 L 104.82432,518.07518 z M 104.82432,476.805 L 104.82432,470.03507 L 111.73932,470.03507 L 111.73932,476.805 L 104.82432,476.805 z M 127.34532,511.52066 C 128.35493,511.52067 129.1715,511.20855 129.79502,510.5843 C 130.41851,509.96007 130.8028,509.14387 130.94789,508.1357 L 137.79035,508.1357 L 137.79035,508.92699 C 137.79033,509.98351 137.5621,511.04003 137.10566,512.09654 C 136.64919,513.15307 135.70074,514.4858 134.26032,516.09476 C 132.81986,517.70371 130.56322,518.50819 127.49039,518.50819 C 125.52094,518.50819 123.70794,517.97993 122.05137,516.92341 C 120.39478,515.8669 119.25437,514.70231 118.63014,513.42965 C 118.00589,512.15699 117.60988,511.0045 117.4421,509.97215 C 117.27432,508.93982 117.19042,507.91957 117.19043,506.91139 L 117.19043,493.87489 C 117.19042,491.04239 118.21067,488.5817 120.25118,486.49281 C 122.29168,484.40398 124.72892,483.35955 127.56292,483.35952 C 130.49215,483.35955 132.92903,484.3798 134.87357,486.42027 C 136.81807,488.4608 137.79033,490.94567 137.79035,493.87489 L 137.79035,503.38136 L 124.10542,503.38136 L 124.10542,508.49617 C 124.10541,509.21567 124.45344,509.89962 125.14949,510.54803 C 125.84552,511.19646 126.57746,511.52067 127.34532,511.52066 L 127.34532,511.52066 z M 127.49039,490.12945 C 126.57746,490.12947 125.78507,490.44159 125.11322,491.06581 C 124.44135,491.69007 124.10541,492.79421 124.10542,494.37823 L 124.10542,497.7632 L 130.87535,497.7632 L 130.87535,494.37823 C 130.87534,493.12978 130.61121,492.10953 130.08296,491.31748 C 129.55469,490.52548 128.6905,490.12947 127.49039,490.12945 L 127.49039,490.12945 z M 162.74675,486.88735 C 163.13211,487.46473 163.39661,488.16151 163.54024,488.97768 C 163.68382,489.79391 163.75562,490.61011 163.75564,491.42628 L 163.75564,518.07518 L 156.84065,518.07518 L 156.84065,493.94742 C 156.84063,491.40213 155.71231,490.12947 153.45568,490.12945 C 152.44751,490.12947 151.63131,490.51376 151.00708,491.28231 C 150.38283,492.05091 150.07071,492.93928 150.07072,493.94742 L 150.07072,518.07518 L 143.15572,518.07518 L 143.15572,483.79033 L 150.07072,483.79033 L 150.07072,487.10496 C 151.60786,484.60803 153.74508,483.35955 156.48237,483.35952 C 159.26652,483.35955 161.35464,484.5355 162.74675,486.88735 L 162.74675,486.88735 z M 178.60334,512.02401 C 179.65985,512.02401 180.57203,511.68808 181.33989,511.01621 C 182.10772,510.34436 182.49164,509.48017 182.49166,508.42364 C 182.49164,507.17517 182.1678,506.2509 181.52013,505.65082 C 180.87243,505.05078 179.85181,504.51043 178.45827,504.02978 L 177.0911,503.52643 C 175.65065,502.99745 174.45016,502.48092 173.48963,501.97682 C 172.52909,501.47275 171.49675,500.56057 170.39261,499.24027 C 169.28846,497.92001 168.73639,496.01139 168.73639,493.51441 C 168.73639,490.68191 169.72074,488.2813 171.68945,486.31257 C 173.65814,484.3439 176.08293,483.35955 178.96382,483.35952 C 181.60437,483.35955 183.83683,484.36771 185.66121,486.384 C 187.48556,488.40036 188.39774,490.68118 188.39776,493.22647 L 182.06084,493.22647 C 182.06083,492.21833 181.73662,491.39004 181.08822,490.7416 C 180.43978,490.09321 179.58732,489.769 178.53081,489.76897 C 177.57099,489.769 176.77897,490.12911 176.15474,490.8493 C 175.53049,491.56955 175.21837,492.43374 175.21838,493.44187 C 175.21837,494.49842 175.53049,495.31498 176.15474,495.89158 C 176.77897,496.46822 177.69115,496.97266 178.89129,497.40492 L 181.12448,498.12368 C 182.4213,498.60433 183.44156,499.06079 184.18524,499.49305 C 184.92889,499.92534 185.67292,500.5734 186.41734,501.4372 C 187.16171,502.30104 187.77423,503.30921 188.25489,504.46169 C 188.7355,505.6142 188.97582,506.83887 188.97584,508.1357 C 188.97582,510.92134 187.97938,513.35822 185.98652,515.44634 C 183.99363,517.53447 181.60437,518.57853 178.81875,518.57853 C 177.13798,518.57853 175.4455,518.12244 173.74131,517.21026 C 172.0371,516.29808 170.71681,515.06169 169.78046,513.50108 C 168.8441,511.94049 168.37592,510.17621 168.37592,508.20823 L 174.78537,508.20823 C 174.78536,509.26476 175.15756,510.16485 175.90197,510.90851 C 176.64636,511.65218 177.54681,512.02401 178.60334,512.02401 L 178.60334,512.02401 z M 203.88945,511.52066 L 205.47423,511.52066 L 205.47423,518.07518 L 203.31357,518.07518 C 202.01672,518.07518 200.86422,517.9433 199.85607,517.67954 C 198.8479,517.41577 197.86355,516.87542 196.90302,516.05849 C 195.94248,515.24156 195.27025,514.3411 194.88633,513.35711 C 194.5024,512.37313 194.31044,511.16092 194.31044,509.72047 L 194.31044,489.19309 L 190.92548,489.19309 L 190.92548,483.79033 L 194.31044,483.79033 L 194.31044,473.42003 L 201.22544,473.42003 L 201.22544,483.79033 L 205.47423,483.79033 L 205.47423,489.19309 L 201.22544,489.19309 L 201.22544,508.49617 C 201.22543,509.64795 201.38149,510.43997 201.69362,510.87224 C 202.00573,511.30453 202.73767,511.52067 203.88945,511.52066 L 203.88945,511.52066 z "
+       style="font-size:72.02500153px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       id="text2100" />
+    <path
+       d="M -38.18382,589.82838 L -38.18382,558.95048 L -41.87651,558.95048 L -41.87651,553.32352 L -38.18382,553.32352 L -38.18382,548.50544 C -38.18383,545.10587 -37.24601,542.60305 -35.37035,540.99698 C -33.49471,539.391 -31.1267,538.58799 -28.26632,538.58794 L -23.51858,538.58794 L -23.51858,545.48096 L -27.66846,545.48096 C -29.80202,545.481 -30.8688,546.48916 -30.86879,548.50544 L -30.86879,553.32352 L -23.51858,553.32352 L -23.51858,558.95048 L -30.86879,558.95048 L -30.86879,589.82838 L -38.18382,589.82838 z M -19.3687,589.82838 L -19.3687,553.32352 L -12.01849,553.32352 L -12.01849,557.22722 L -11.87782,557.22722 C -9.60361,554.34344 -6.43845,552.90154 -2.38234,552.9015 C 0.29044,552.90154 2.83429,553.83936 5.24922,555.71498 L -0.06122,562.0453 C -1.65554,560.8496 -3.27329,560.25174 -4.91446,560.25171 C -6.7198,560.25174 -8.35513,560.85546 -9.82046,562.06288 C -11.28583,563.27036 -12.0185,565.21049 -12.01849,567.88326 L -12.01849,589.82838 L -19.3687,589.82838 z M 36.90083,574.35426 L 14.18201,574.35426 C 14.182,577.35532 14.99673,579.60609 16.62622,581.1066 C 18.25567,582.60713 20.33647,583.35739 22.86862,583.35739 C 25.89308,583.35739 28.56588,582.18511 30.88703,579.84054 L 36.19746,584.37727 C 34.39212,586.48738 32.35821,587.99376 30.09574,588.89642 C 27.83321,589.79908 25.47106,590.2504 23.00929,590.2504 C 19.25797,590.2504 15.6239,589.03709 12.10707,586.61047 C 8.59022,584.18385 6.8318,579.21924 6.8318,571.71663 C 6.8318,564.61262 8.45541,559.70077 11.70263,556.98104 C 14.94984,554.26138 18.3436,552.90154 21.8839,552.9015 C 25.89308,552.90154 29.3982,554.29069 32.39927,557.06896 C 35.40028,559.8473 36.9008,563.59274 36.90083,568.30529 L 36.90083,574.35426 z M 14.18201,568.30529 L 29.58579,568.30529 C 29.46854,565.56217 28.69483,563.46379 27.26468,562.01013 C 25.83447,560.55653 24.04088,559.82972 21.8839,559.82969 C 19.70344,559.82972 17.89227,560.55653 16.45037,562.01013 C 15.00846,563.46379 14.25234,565.56217 14.18201,568.30529 L 14.18201,568.30529 z M 44.8489,589.82838 L 44.8489,553.32352 L 52.19911,553.32352 L 52.19911,589.82838 L 44.8489,589.82838 z M 44.8489,545.93815 L 44.8489,538.58794 L 52.19911,538.58794 L 52.19911,545.93815 L 44.8489,545.93815 z "
+       style="font-size:72.02500153px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       id="text1889" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1028-30.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1028-30.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1028-30.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1028-30.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="-30.613024"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g3933"
+     transform="translate(168.2284,-428.3237)">
+    <path
+       id="text2064"
+       style="font-size:103.73000336px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M -71.156515,640.08645 L -71.156515,598.59508 L -76.031521,598.59508 L -76.031521,590.7096 L -71.156515,590.7096 L -71.156515,583.86559 C -71.156521,579.99308 -70.18838,577.12295 -68.252087,575.25519 C -66.31581,573.38756 -64.51776,572.19466 -62.85792,571.6765 C -61.19812,571.15846 -59.36472,570.89941 -57.35771,570.89934 L -53.93571,570.89934 L -53.93571,580.02574 L -57.56664,580.02574 C -59.98728,580.0258 -61.19759,581.30575 -61.19757,583.86559 L -61.19757,590.7096 L -53.93571,590.7096 L -53.93571,598.59508 L -61.19757,598.59508 L -61.19757,640.08645 L -71.156515,640.08645 z M -48.70933,634.90121 C -49.19472,634.06972 -49.50653,633.15276 -49.64476,632.15032 C -49.78299,631.14789 -49.85211,630.0241 -49.8521,628.77896 L -49.8521,623.17904 C -49.85211,619.51331 -48.93567,616.78141 -47.10279,614.98333 C -45.26992,613.1853 -43.6101,611.95811 -42.12332,611.30175 C -40.63656,610.64545 -38.85592,610.31728 -36.78139,610.31725 L -30.14315,610.31725 L -30.14315,606.0627 C -30.14317,605.09407 -30.19488,604.29898 -30.29826,603.67743 C -30.4017,603.05596 -30.8338,602.26087 -31.59457,601.29216 C -32.35539,600.32353 -33.39317,599.83919 -34.70793,599.83915 C -36.09025,599.83919 -37.26574,600.28871 -38.23439,601.18769 C -39.20308,602.08676 -39.79082,603.26225 -39.99763,604.71416 L -49.8521,604.71416 C -49.85211,600.70445 -48.41704,597.26452 -45.5469,594.39434 C -42.67678,591.52426 -39.20202,590.08919 -35.12262,590.08914 C -31.11079,590.08919 -27.61809,591.50685 -24.64452,594.34211 C -21.67101,597.17746 -20.18424,600.63481 -20.18421,604.71416 L -20.18421,640.08645 L -30.14315,640.08645 L -30.14315,635.10697 C -31.17937,636.83539 -32.47568,638.20134 -34.03208,639.20483 C -35.58851,640.20832 -37.33538,640.71007 -39.27271,640.71007 C -43.62857,640.71007 -46.7741,638.77378 -48.70933,634.90121 L -48.70933,634.90121 z M -39.89316,623.07457 L -39.89316,625.56273 C -39.89318,626.87751 -39.42625,628.07094 -38.49239,629.14301 C -37.55856,630.2151 -36.33189,630.75113 -34.81239,630.75112 C -33.98092,630.75113 -33.20218,630.54379 -32.47619,630.12909 C -31.75024,629.71441 -31.19731,629.14407 -30.81742,628.41809 C -30.43757,627.69212 -30.23023,626.75828 -30.19538,625.61654 C -30.16058,624.47483 -30.14317,623.66233 -30.14315,623.17904 L -30.14315,618.40533 L -33.87854,618.40533 C -35.67662,618.40535 -37.12856,618.75146 -38.23439,619.44364 C -39.34025,620.13587 -39.89318,621.34618 -39.89316,623.07457 L -39.89316,623.07457 z M 8.06234,590.08914 C 9.86037,590.08919 11.55501,590.573 13.14627,591.54056 C 14.73748,592.50823 15.87867,593.63201 16.56986,594.91191 C 17.26098,596.19191 17.69308,597.2814 17.86617,598.18039 C 18.03919,599.07945 18.12571,600.25494 18.12575,601.70685 L 18.12575,640.08645 L 8.1668,640.08645 L 8.1668,605.43908 C 8.16678,603.78035 7.78638,602.43234 7.02561,601.39504 C 6.26479,600.35782 5.05501,599.83919 3.39626,599.83915 C 1.94429,599.83919 0.7514,600.40953 -0.18244,601.55015 C -1.1163,602.69086 -1.58322,603.98717 -1.58321,605.43908 L -1.58321,640.08645 L -11.54215,640.08645 L -11.54215,570.89934 L -1.58321,570.89934 L -1.58321,595.4833 C 0.69811,591.88724 3.91329,590.08919 8.06234,590.08914 L 8.06234,590.08914 z M 49.77213,590.08914 L 49.77213,600.25385 C 49.28882,600.11671 48.80502,600.0133 48.32071,599.94362 C 47.83635,599.87402 47.38631,599.83919 46.97059,599.83915 C 43.72056,599.83919 41.23135,600.94557 39.50296,603.15827 C 37.77454,605.37105 36.91033,608.03384 36.91034,611.14664 L 36.91034,640.08645 L 26.9514,640.08645 L 26.9514,590.7096 L 36.91034,590.7096 L 36.91034,596.00246 C 38.63874,593.85835 40.76496,592.33676 43.28901,591.43768 C 45.81301,590.5387 47.97405,590.08919 49.77213,590.08914 L 49.77213,590.08914 z M 53.84941,640.08645 L 53.84941,631.89074 L 69.7185,599.21553 L 54.98902,599.21553 L 54.98902,590.7096 L 80.82022,590.7096 L 80.82022,597.86699 L 64.94796,630.64666 L 80.82022,630.64666 L 80.82022,640.08645 L 53.84941,640.08645 z M 101.32374,630.64666 C 102.77778,630.64667 103.9538,630.19716 104.85179,629.29812 C 105.74974,628.3991 106.30319,627.22362 106.51214,625.77165 L 116.36662,625.77165 L 116.36662,626.91127 C 116.36659,628.43287 116.03789,629.95446 115.38054,631.47604 C 114.72312,632.99764 113.35717,634.91704 111.28269,637.23425 C 109.20814,639.55146 105.95814,640.71007 101.53267,640.71007 C 98.69629,640.71007 96.08521,639.94927 93.69942,638.42768 C 91.31362,636.90609 89.67121,635.22885 88.77219,633.39597 C 87.87315,631.56311 87.30282,629.90328 87.06119,628.4165 C 86.81954,626.92975 86.69872,625.46039 86.69873,624.00842 L 86.69873,605.23332 C 86.69872,601.15397 88.16808,597.61009 91.10681,594.60169 C 94.04552,591.59337 97.55562,590.08919 101.63714,590.08914 C 105.85579,590.08919 109.36537,591.55855 112.16588,594.49722 C 114.96634,597.43599 116.36659,601.01468 116.36662,605.23332 L 116.36662,618.92449 L 96.65767,618.92449 L 96.65767,626.29081 C 96.65765,627.32703 97.15887,628.31205 98.16132,629.24589 C 99.16374,630.17975 100.21788,630.64667 101.32374,630.64666 L 101.32374,630.64666 z M 101.53267,599.83915 C 100.21788,599.83919 99.07669,600.28871 98.10909,601.18769 C 97.14146,602.08676 96.65765,603.67694 96.65767,605.95824 L 96.65767,610.83324 L 106.40768,610.83324 L 106.40768,605.95824 C 106.40766,604.16022 106.02726,602.69086 105.26648,601.55015 C 104.50567,600.40953 103.26106,599.83919 101.53267,599.83915 L 101.53267,599.83915 z M 144.01171,640.08645 L 144.01171,635.10697 C 142.8362,636.90503 141.53936,638.28839 140.1212,639.25706 C 138.703,640.22573 136.99147,640.71007 134.98662,640.71007 C 132.98173,640.71007 131.09768,640.15662 129.33446,639.04972 C 127.57122,637.94282 126.3435,636.6808 125.6513,635.26367 C 124.95908,633.84655 124.56127,632.68847 124.45787,631.78944 C 124.35446,630.89042 124.30275,629.57565 124.30276,627.84511 L 124.30276,590.7096 L 134.2617,590.7096 L 134.2617,624.11289 C 134.26168,624.87264 134.27909,625.65032 134.31393,626.44592 C 134.34874,627.24156 134.72913,628.15799 135.45512,629.19524 C 136.18108,630.23251 137.4431,630.75113 139.24117,630.75112 C 140.14017,630.75113 140.96956,630.50897 141.72932,630.02462 C 142.48904,629.5403 143.02455,628.96996 143.33586,628.31362 C 143.64711,627.6573 143.83758,626.94874 143.90724,626.18793 C 143.97686,625.42715 144.01168,624.73547 144.01171,624.11289 L 144.01171,590.7096 L 153.97065,590.7096 L 153.97065,640.08645 L 144.01171,640.08645 z M 189.35242,653.67632 C 187.96798,655.75082 186.20422,657.39323 184.06114,658.60356 C 181.91801,659.81385 179.63615,660.419 177.21556,660.41902 C 172.99687,660.419 169.38335,658.98393 166.375,656.11382 C 163.36663,653.24367 161.86245,649.66445 161.86245,645.37614 L 171.82139,645.37614 C 171.82138,646.76055 172.27089,647.93657 173.16993,648.90419 C 174.06895,649.8718 175.24443,650.3556 176.6964,650.35561 C 178.77089,650.3556 180.29249,649.42176 181.26118,647.55407 C 181.53762,646.86396 181.67585,645.75812 181.67587,644.23653 L 181.67587,635.00251 C 180.70718,636.66339 179.39293,638.02987 177.73313,639.10195 C 176.07329,640.17403 174.30953,640.71007 172.44185,640.71007 C 170.43696,640.71007 168.58773,640.17403 166.89415,639.10195 C 165.20056,638.02987 163.99025,636.80215 163.26322,635.41879 C 162.53619,634.03543 162.12097,632.92906 162.01757,632.09967 C 161.91415,631.27029 161.86245,629.99034 161.86245,628.25981 L 161.86245,600.87747 C 161.86245,599.63238 162.01809,598.49118 162.32938,597.45388 C 162.64065,596.41667 163.50539,594.91249 164.92358,592.94134 C 166.34175,590.97028 168.81407,589.98473 172.34055,589.98468 C 174.20612,589.98473 175.93453,590.45165 177.52578,591.38545 C 179.117,592.31935 180.50036,593.61565 181.67587,595.27437 L 181.67587,590.7096 L 191.63481,590.7096 L 191.63481,644.23653 C 191.63478,646.17176 191.47914,647.88275 191.16789,649.36953 C 190.85657,650.85629 190.25142,652.29189 189.35242,653.67632 L 189.35242,653.67632 z M 180.74202,601.70685 C 179.70369,600.32247 178.35515,599.63027 176.6964,599.63022 C 174.75904,599.63027 173.4965,600.20113 172.90877,601.34281 C 172.32101,602.48457 171.99285,603.3493 171.92428,603.93701 C 171.85567,604.52479 171.82138,605.12994 171.82139,605.75247 L 171.82139,624.52758 C 171.82138,625.49626 171.87308,626.27447 171.97651,626.8622 C 172.0799,627.44996 172.47771,628.22764 173.16993,629.19524 C 173.86213,630.16286 175.1062,630.64667 176.90216,630.64666 C 179.0463,630.64667 180.36055,630.04152 180.8449,628.8312 C 181.32922,627.6209 181.57138,626.70446 181.57141,626.08188 C 181.57138,625.45933 181.6062,624.94123 181.67587,624.52758 L 181.67587,605.75247 C 181.67585,604.78384 181.62361,604.02304 181.51917,603.47008 C 181.41469,602.9172 181.15564,602.32945 180.74202,601.70685 L 180.74202,601.70685 z M 214.17064,630.64666 C 215.62468,630.64667 216.80069,630.19716 217.69869,629.29812 C 218.59664,628.3991 219.15008,627.22362 219.35904,625.77165 L 229.21351,625.77165 L 229.21351,626.91127 C 229.21348,628.43287 228.88479,629.95446 228.22743,631.47604 C 227.57001,632.99764 226.20406,634.91704 224.12958,637.23425 C 222.05504,639.55146 218.80504,640.71007 214.37957,640.71007 C 211.54318,640.71007 208.9321,639.94927 206.54632,638.42768 C 204.16051,636.90609 202.5181,635.22885 201.61908,633.39597 C 200.72005,631.56311 200.14971,629.90328 199.90808,628.4165 C 199.66643,626.92975 199.54562,625.46039 199.54562,624.00842 L 199.54562,605.23332 C 199.54562,601.15397 201.01497,597.61009 203.9537,594.60169 C 206.89241,591.59337 210.40252,590.08919 214.48403,590.08914 C 218.70268,590.08919 222.21226,591.55855 225.01278,594.49722 C 227.81324,597.43599 229.21348,601.01468 229.21351,605.23332 L 229.21351,618.92449 L 209.50456,618.92449 L 209.50456,626.29081 C 209.50455,627.32703 210.00576,628.31205 211.00821,629.24589 C 212.01063,630.17975 213.06477,630.64667 214.17064,630.64666 L 214.17064,630.64666 z M 214.37957,599.83915 C 213.06477,599.83919 211.92358,600.28871 210.95598,601.18769 C 209.98835,602.08676 209.50455,603.67694 209.50456,605.95824 L 209.50456,610.83324 L 219.25457,610.83324 L 219.25457,605.95824 C 219.25455,604.16022 218.87415,602.69086 218.11338,601.55015 C 217.35256,600.40953 216.10796,599.83919 214.37957,599.83915 L 214.37957,599.83915 z " />
+    <path
+       id="text1982"
+       style="font-size:103.73000336px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       d="M 13.96863,739.91795 L 13.96863,695.44776 L 8.65044,695.44776 L 8.65044,687.34385 L 13.96863,687.34385 L 13.96863,680.40488 C 13.96862,675.50884 15.31927,671.90429 18.02058,669.59123 C 20.72187,667.27832 24.13226,666.12182 28.25177,666.12175 L 35.08944,666.12175 L 35.08944,676.04903 L 29.11281,676.04903 C 26.04006,676.0491 24.50369,677.50105 24.50371,680.40488 L 24.50371,687.34385 L 35.08944,687.34385 L 35.08944,695.44776 L 24.50371,695.44776 L 24.50371,739.91795 L 13.96863,739.91795 z M 41.06607,739.91795 L 41.06607,687.34385 L 51.6518,687.34385 L 51.6518,692.96594 L 51.85439,692.96594 C 55.1297,688.81274 59.68814,686.73611 65.52974,686.73606 C 69.37906,686.73611 73.04269,688.08676 76.52066,690.78801 L 68.8726,699.90491 C 66.57646,698.18287 64.24659,697.32183 61.88298,697.32179 C 59.28295,697.32183 56.92775,698.19131 54.81738,699.93023 C 52.70697,701.66924 51.65178,704.46339 51.6518,708.31271 L 51.6518,739.91795 L 41.06607,739.91795 z M 122.10513,717.63221 L 89.38561,717.63221 C 89.38559,721.95431 90.55897,725.19587 92.90574,727.35689 C 95.25248,729.51795 98.24923,730.59846 101.89601,730.59846 C 106.25183,730.59846 110.10118,728.91015 113.44408,725.53351 L 121.09214,732.06729 C 118.4921,735.10626 115.56287,737.27574 112.30447,738.57574 C 109.04599,739.87574 105.64404,740.52574 102.09861,740.52574 C 96.69599,740.52574 91.46222,738.77834 86.39729,735.28353 C 81.33234,731.78872 78.79988,724.63872 78.79988,713.8335 C 78.79988,703.60235 81.13819,696.52833 85.81482,692.61139 C 90.49144,688.69456 95.3791,686.73611 100.47783,686.73606 C 106.25183,686.73611 111.29989,688.73676 115.62201,692.73802 C 119.94404,696.73936 122.10508,702.13352 122.10513,708.92051 L 122.10513,717.63221 z M 89.38561,708.92051 L 111.57005,708.92051 C 111.40118,704.96989 110.2869,701.94781 108.22719,699.85426 C 106.16742,697.76079 103.5843,696.71404 100.47783,696.714 C 97.33754,696.71404 94.7291,697.76079 92.6525,699.85426 C 90.57585,701.94781 89.48689,704.96989 89.38561,708.92051 L 89.38561,708.92051 z M 133.5519,739.91795 L 133.5519,687.34385 L 144.13763,687.34385 L 144.13763,739.91795 L 133.5519,739.91795 z M 133.5519,676.70748 L 133.5519,666.12175 L 144.13763,666.12175 L 144.13763,676.70748 L 133.5519,676.70748 z " />
+    <path
+       id="text2060"
+       style="font-size:103.73213959px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       d="M -86.588796,476.12162 C -84.583906,476.12169 -82.578994,476.57121 -80.574054,477.47019 C -78.56917,478.3693 -76.460319,479.92522 -74.247495,482.13795 C -72.034739,484.3508 -70.928345,487.77339 -70.928307,492.40574 L -70.928307,497.69555 C -70.928345,502.95269 -73.002901,506.6871 -77.151982,508.8988 C -73.002901,511.3195 -70.928345,515.15838 -70.928307,520.41545 L -70.928307,528.50686 C -70.928345,533.3461 -72.484262,537.35645 -75.596064,540.53792 C -78.707931,543.71941 -82.718282,545.31015 -87.62713,545.31015 L -102.87608,545.31015 L -102.87608,476.12162 L -86.588796,476.12162 z M -80.678521,496.66038 L -80.678521,492.40574 C -80.678548,490.26371 -81.300599,488.57008 -82.544673,487.32487 C -83.7888,486.07977 -85.448128,485.45719 -87.522664,485.45713 L -93.125871,485.45713 L -93.125871,504.54286 L -87.21243,504.54286 C -84.931072,504.5429 -83.271744,503.83432 -82.234439,502.41712 C -81.197187,501.00001 -80.678548,499.0811 -80.678521,496.66038 L -80.678521,496.66038 z M -80.678521,528.50686 L -80.678521,520.41545 C -80.678548,518.20163 -81.283715,516.45524 -82.494023,515.17629 C -83.704382,513.8974 -85.380594,513.25793 -87.522664,513.2579 L -93.125871,513.2579 L -93.125871,535.45547 L -87.421363,535.45547 C -85.414361,535.45548 -83.7888,534.7986 -82.544673,533.48485 C -81.300599,532.17111 -80.678548,530.51179 -80.678521,528.50686 L -80.678521,528.50686 z M -61.86504,540.12481 C -62.35045,539.2933 -62.66226,538.37632 -62.80049,537.37385 C -62.93873,536.37141 -63.00785,535.2476 -63.00784,534.00243 L -63.00784,528.40239 C -63.00785,524.73658 -62.09139,522.00463 -60.25847,520.20651 C -58.42557,518.40845 -56.76571,517.18123 -55.2789,516.52486 C -53.79211,515.86854 -52.01143,515.54037 -49.93686,515.54034 L -43.29848,515.54034 L -43.29848,511.2857 C -43.29851,510.31705 -43.35021,509.52194 -43.4536,508.90038 C -43.55703,508.27889 -43.98915,507.48379 -44.74994,506.51506 C -45.51077,505.54641 -46.54857,505.06207 -47.86336,505.06203 C -49.24571,505.06207 -50.42122,505.51159 -51.38989,506.41059 C -52.3586,507.30968 -52.94635,508.48519 -53.15316,509.93713 L -63.00784,509.93713 C -63.00785,505.92734 -61.57275,502.48734 -58.70255,499.6171 C -55.83237,496.74696 -52.35754,495.31186 -48.27806,495.31181 C -44.26614,495.31186 -40.77337,496.72955 -37.79974,499.56487 C -34.82617,502.40028 -33.33937,505.8577 -33.33934,509.93713 L -33.33934,545.31015 L -43.29848,545.31015 L -43.29848,540.33057 C -44.33473,542.05902 -45.63106,543.425 -47.18749,544.42851 C -48.74395,545.43202 -50.49086,545.93378 -52.42823,545.93378 C -56.78418,545.93378 -59.92978,543.99746 -61.86504,540.12481 L -61.86504,540.12481 z M -53.0487,528.29792 L -53.0487,530.78613 C -53.04871,532.10094 -52.58178,533.29439 -51.64789,534.36648 C -50.71404,535.43859 -49.48735,535.97464 -47.96782,535.97463 C -47.13633,535.97464 -46.35758,535.76729 -45.63157,535.35258 C -44.9056,534.93789 -44.35267,534.36755 -43.97277,533.64155 C -43.59291,532.91557 -43.38556,531.9817 -43.35072,530.83994 C -43.31592,529.69821 -43.29851,528.8857 -43.29848,528.40239 L -43.29848,523.62858 L -47.03395,523.62858 C -48.83206,523.62861 -50.28404,523.97472 -51.38989,524.66692 C -52.49578,525.35916 -53.04871,526.5695 -53.0487,528.29792 L -53.0487,528.29792 z M -4.88328,545.31015 L -4.88328,540.33057 C -6.05881,542.12867 -7.35567,543.51206 -8.77386,544.48075 C -10.1921,545.44944 -11.90366,545.93378 -13.90856,545.93378 C -15.91348,545.93378 -17.79757,545.38032 -19.56083,544.2734 C -21.32411,543.16647 -22.55185,541.90443 -23.24407,540.48727 C -23.9363,539.07012 -24.33411,537.91202 -24.43752,537.01297 C -24.54094,536.11393 -24.59264,534.79913 -24.59264,533.06856 L -24.59264,495.93228 L -14.63349,495.93228 L -14.63349,529.33626 C -14.6335,530.09603 -14.61609,530.87373 -14.58126,531.66935 C -14.54645,532.46499 -14.16604,533.38145 -13.44004,534.41872 C -12.71406,535.456 -11.45203,535.97464 -9.65392,535.97463 C -8.75489,535.97464 -7.92549,535.73247 -7.16571,535.24812 C -6.40598,534.76378 -5.87046,534.19344 -5.55914,533.53708 C -5.24788,532.88075 -5.05741,532.17217 -4.98774,531.41134 C -4.91812,530.65055 -4.8833,529.95885 -4.88328,529.33626 L -4.88328,495.93228 L 5.07587,495.93228 L 5.07587,545.31015 L -4.88328,545.31015 z M 26.45353,536.5951 C 27.97514,536.59511 29.28889,536.11129 30.39477,535.14365 C 31.50062,534.17603 32.05355,532.9314 32.05358,531.40976 C 32.05355,529.61169 31.58715,528.28053 30.65436,527.41629 C 29.72152,526.55208 28.25161,525.77386 26.2446,525.08162 L 24.27557,524.35668 C 22.20099,523.59484 20.47202,522.85091 19.08864,522.1249 C 17.70524,521.39893 16.21844,520.08519 14.62824,518.18366 C 13.03802,516.28219 12.24291,513.53335 12.24292,509.93713 C 12.24291,505.8577 13.6606,502.40028 16.49597,499.56487 C 19.33133,496.72955 22.82357,495.31186 26.9727,495.31181 C 30.77569,495.31186 33.99093,496.76384 36.61845,499.66775 C 39.24591,502.57176 40.55966,505.85664 40.55969,509.52243 L 31.43311,509.52243 C 31.43309,508.07049 30.96615,506.87757 30.03231,505.94366 C 29.09842,505.00983 27.87067,504.5429 26.34907,504.54286 C 24.96672,504.5429 23.82603,505.06154 22.927,506.09878 C 22.02794,507.1361 21.57842,508.38072 21.57843,509.83267 C 21.57842,511.35432 22.02794,512.53036 22.927,513.36079 C 23.82603,514.19128 25.13977,514.91779 26.86824,515.54034 L 30.08454,516.57551 C 31.95225,517.26776 33.42164,517.92516 34.49271,518.54771 C 35.56373,519.17031 36.6353,520.10366 37.70743,521.34773 C 38.77951,522.59186 39.66167,524.04383 40.35392,525.70367 C 41.04611,527.36355 41.39222,529.12734 41.39225,530.99506 C 41.39222,535.00701 39.95713,538.51666 37.08697,541.52403 C 34.21675,544.5314 30.77569,546.03508 26.76377,546.03508 C 24.34308,546.03508 21.90553,545.37821 19.45111,544.06446 C 16.99666,542.75072 15.09516,540.97004 13.7466,538.72242 C 12.39803,536.47482 11.72375,533.93385 11.72375,531.09953 L 20.95479,531.09953 C 20.95478,532.62116 21.49083,533.9175 22.56295,534.98853 C 23.63503,536.05959 24.9319,536.59511 26.45353,536.5951 L 26.45353,536.5951 z M 62.87122,535.87017 L 65.15366,535.87017 L 65.15366,545.31015 L 62.04182,545.31015 C 60.17407,545.31015 58.51421,545.12021 57.06225,544.74033 C 55.61025,544.36045 54.19257,543.58223 52.80919,542.40566 C 51.42579,541.2291 50.45763,539.93223 49.9047,538.51507 C 49.35176,537.09792 49.0753,535.35207 49.0753,533.2775 L 49.0753,503.71346 L 44.20019,503.71346 L 44.20019,495.93228 L 49.0753,495.93228 L 49.0753,480.99673 L 59.03445,480.99673 L 59.03445,495.93228 L 65.15366,495.93228 L 65.15366,503.71346 L 59.03445,503.71346 L 59.03445,531.51423 C 59.03443,533.17304 59.25919,534.31373 59.70873,534.9363 C 60.15824,535.55889 61.2124,535.87018 62.87122,535.87017 L 62.87122,535.87017 z M 86.3477,535.87017 C 87.80177,535.87018 88.97781,535.42065 89.87582,534.5216 C 90.77379,533.62257 91.32725,532.44705 91.53621,530.99506 L 101.39089,530.99506 L 101.39089,532.1347 C 101.39085,533.65633 101.06215,535.17795 100.40479,536.69957 C 99.74735,538.2212 98.38138,540.14064 96.30685,542.45789 C 94.23226,544.77515 90.9822,545.93378 86.55664,545.93378 C 83.72019,545.93378 81.10906,545.17297 78.72323,543.65134 C 76.33737,542.12972 74.69492,540.45246 73.79589,538.61954 C 72.89683,536.78663 72.32649,535.12678 72.08485,533.63996 C 71.8432,532.15318 71.72238,530.68379 71.72238,529.23179 L 71.72238,510.4563 C 71.72238,506.37687 73.19177,502.83292 76.13055,499.82445 C 79.06933,496.81607 82.5795,495.31186 86.6611,495.31181 C 90.87984,495.31186 94.38949,496.78125 97.19007,499.71999 C 99.99058,502.65881 101.39085,506.23758 101.39089,510.4563 L 101.39089,524.14775 L 81.68153,524.14775 L 81.68153,531.51423 C 81.68151,532.55046 82.18274,533.53551 83.18521,534.46937 C 84.18765,535.40324 85.24182,535.87018 86.3477,535.87017 L 86.3477,535.87017 z M 86.55664,505.06203 C 85.24182,505.06207 84.1006,505.51159 83.13298,506.41059 C 82.16533,507.30968 81.68151,508.89989 81.68153,511.18124 L 81.68153,516.05634 L 91.43174,516.05634 L 91.43174,511.18124 C 91.43172,509.38318 91.05131,507.91379 90.29052,506.77306 C 89.52969,505.63241 88.28506,505.06207 86.55664,505.06203 L 86.55664,505.06203 z M 119.18186,476.12162 L 119.18186,531.09953 C 119.18184,532.75834 119.45831,533.96815 120.01126,534.72895 C 120.56418,535.48977 121.6711,535.87018 123.33203,535.87017 L 124.05697,535.87017 L 124.05697,545.31015 L 121.879,545.31015 C 120.28771,545.31015 118.80091,545.13709 117.41859,544.79098 C 116.03624,544.44487 114.65338,543.73629 113.27,542.66524 C 111.8866,541.5942 110.86621,540.21134 110.20881,538.51665 C 109.55141,536.82198 109.22271,535.00595 109.22271,533.06856 L 109.22271,476.12162 L 119.18186,476.12162 z M 140.04985,476.12162 L 140.04985,531.09953 C 140.04984,532.75834 140.32631,533.96815 140.87926,534.72895 C 141.43217,535.48977 142.5391,535.87018 144.20003,535.87017 L 144.92496,535.87017 L 144.92496,545.31015 L 142.74699,545.31015 C 141.15571,545.31015 139.66891,545.13709 138.28659,544.79098 C 136.90424,544.44487 135.52138,543.73629 134.138,542.66524 C 132.7546,541.5942 131.7342,540.21134 131.07681,538.51665 C 130.4194,536.82198 130.0907,535.00595 130.09071,533.06856 L 130.09071,476.12162 L 140.04985,476.12162 z M 164.75461,535.87017 C 166.20868,535.87018 167.38472,535.42065 168.28273,534.5216 C 169.1807,533.62257 169.73416,532.44705 169.94311,530.99506 L 179.79779,530.99506 L 179.79779,532.1347 C 179.79776,533.65633 179.46906,535.17795 178.81169,536.69957 C 178.15426,538.2212 176.78828,540.14064 174.71375,542.45789 C 172.63917,544.77515 169.3891,545.93378 164.96354,545.93378 C 162.1271,545.93378 159.51597,545.17297 157.13013,543.65134 C 154.74428,542.12972 153.10183,540.45246 152.20279,538.61954 C 151.30374,536.78663 150.7334,535.12678 150.49176,533.63996 C 150.25011,532.15318 150.12928,530.68379 150.12929,529.23179 L 150.12929,510.4563 C 150.12928,506.37687 151.59867,502.83292 154.53746,499.82445 C 157.47623,496.81607 160.98641,495.31186 165.06801,495.31181 C 169.28675,495.31186 172.7964,496.78125 175.59697,499.71999 C 178.39749,502.65881 179.79776,506.23758 179.79779,510.4563 L 179.79779,524.14775 L 160.08843,524.14775 L 160.08843,531.51423 C 160.08842,532.55046 160.58965,533.53551 161.59212,534.46937 C 162.59456,535.40324 163.64872,535.87018 164.75461,535.87017 L 164.75461,535.87017 z M 164.96354,505.06203 C 163.64872,505.06207 162.50751,505.51159 161.53989,506.41059 C 160.57224,507.30968 160.08842,508.89989 160.08843,511.18124 L 160.08843,516.05634 L 169.83865,516.05634 L 169.83865,511.18124 C 169.83862,509.38318 169.45822,507.91379 168.69743,506.77306 C 167.9366,505.63241 166.69197,505.06207 164.96354,505.06203 L 164.96354,505.06203 z M 215.74062,500.39269 C 216.29563,501.22424 216.67657,502.22775 216.88342,503.40322 C 217.09021,504.57878 217.19362,505.75429 217.19366,506.92976 L 217.19366,545.31015 L 207.23451,545.31015 L 207.23451,510.56077 C 207.23449,506.89498 205.60945,505.06207 202.3594,505.06203 C 200.90741,505.06207 199.7319,505.61553 198.83287,506.72241 C 197.93381,507.82937 197.48428,509.10882 197.4843,510.56077 L 197.4843,545.31015 L 187.52515,545.31015 L 187.52515,495.93228 L 197.4843,495.93228 L 197.4843,500.70609 C 199.69813,497.10995 202.7762,495.31186 206.71851,495.31181 C 210.72831,495.31186 213.73568,497.00549 215.74062,500.39269 L 215.74062,500.39269 z M 226.85523,523.00812 L 226.85523,513.15344 L 256.41927,513.15344 L 256.41927,523.00812 L 226.85523,523.00812 z " />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1028-34.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1028-34.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1028-34.svg	(revision 36424)
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zusatzzeichen 1028-34.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="104.07398"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     id="g3877"
+     transform="translate(1.216565,-381.0272)">
+    <path
+       id="text1982"
+       d="M 180.03386,696.04556 L 180.03386,650.63207 L 174.60286,650.63207 L 174.60286,642.35627 L 180.03386,642.35627 L 180.03386,635.27011 C 180.03385,630.27021 181.41315,626.5892 184.17176,624.22708 C 186.93035,621.8651 190.41308,620.68407 194.61996,620.684 L 201.60268,620.684 L 201.60268,630.82186 L 195.49927,630.82186 C 192.36134,630.82193 190.79238,632.30467 190.7924,635.27011 L 190.7924,642.35627 L 201.60268,642.35627 L 201.60268,650.63207 L 190.7924,650.63207 L 190.7924,696.04556 L 180.03386,696.04556 z M 207.70608,696.04556 L 207.70608,642.35627 L 218.51635,642.35627 L 218.51635,648.09761 L 218.72325,648.09761 C 222.06803,643.85631 226.72317,641.73563 232.68867,641.73558 C 236.61965,641.73563 240.361,643.11493 243.91274,645.87348 L 236.10244,655.18377 C 233.7576,653.4252 231.37831,652.5459 228.96456,652.54585 C 226.30938,652.5459 223.90423,653.43382 221.74909,655.20963 C 219.59391,656.98552 218.51634,659.83894 218.51635,663.76991 L 218.51635,696.04556 L 207.70608,696.04556 z M 290.46415,673.28709 L 257.05058,673.28709 C 257.05057,677.70087 258.24883,681.01119 260.64539,683.21806 C 263.0419,685.42495 266.10222,686.52839 269.82636,686.52838 C 274.27457,686.52839 278.20558,684.80427 281.61938,681.356 L 289.42968,688.02837 C 286.77448,691.1318 283.78312,693.3473 280.4556,694.67488 C 277.128,696.00246 273.65389,696.66624 270.03325,696.66624 C 264.51603,696.66624 259.17124,694.88178 253.99888,691.31283 C 248.82649,687.7439 246.24031,680.44223 246.24031,669.40781 C 246.24031,658.95964 248.62822,651.73556 253.40406,647.73554 C 258.17987,643.73562 263.17121,641.73563 268.37809,641.73558 C 274.27457,641.73563 279.42971,643.77872 283.84351,647.86485 C 288.25722,651.95107 290.4641,657.45965 290.46415,664.3906 L 290.46415,673.28709 z M 257.05058,664.3906 L 279.7056,664.3906 C 279.53315,660.35618 278.39523,657.27 276.29183,655.13204 C 274.18837,652.99417 271.55046,651.92521 268.37809,651.92517 C 265.1712,651.92521 262.50742,652.99417 260.38677,655.13204 C 258.26608,657.27 257.15402,660.35618 257.05058,664.3906 L 257.05058,664.3906 z M 302.15372,696.04556 L 302.15372,642.35627 L 312.964,642.35627 L 312.964,696.04556 L 302.15372,696.04556 z M 302.15372,631.49427 L 302.15372,620.684 L 312.964,620.684 L 312.964,631.49427 L 302.15372,631.49427 z "
+       style="font-size:105.93032074px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1888"
+       d="M 125.02597,500.74942 L 125.02597,425.38808 L 173.2324,425.38808 L 173.2324,436.19832 L 136.45689,436.19832 L 136.45689,458.38776 L 167.80142,458.38776 L 167.80142,468.57732 L 136.45689,468.57732 L 136.45689,500.74942 L 125.02597,500.74942 z M 209.18032,500.74942 L 209.18032,495.99084 L 208.9217,495.99084 C 206.74928,499.57702 202.33553,501.3701 195.68045,501.3701 C 189.6805,501.3701 185.02537,499.80977 181.71507,496.68911 C 178.40476,493.56846 176.7496,489.66333 176.7496,484.97371 C 176.7496,480.73239 178.2151,477.02553 181.14611,473.85313 C 184.07711,470.68077 188.43913,469.09458 194.23219,469.09455 L 209.18032,469.09455 L 209.18032,463.5084 C 209.18029,458.92228 205.50791,456.6292 198.16319,456.62916 C 193.05977,456.6292 189.66325,457.99126 187.97363,460.71532 L 179.49096,454.30159 C 183.24953,449.06032 189.28395,446.43966 197.59423,446.4396 C 204.21482,446.43966 209.59407,447.73275 213.732,450.31887 C 217.86985,452.9051 219.93879,457.5085 219.93884,464.12908 L 219.93884,500.74942 L 209.18032,500.74942 z M 209.18032,481.92201 L 209.18032,477.99102 L 196.24941,477.99102 C 190.00808,477.99104 186.88742,480.14619 186.88744,484.45647 C 186.88742,486.28405 187.6719,487.87024 189.24086,489.21505 C 190.80979,490.55987 193.42184,491.23228 197.07699,491.23227 C 201.55968,491.23228 204.69758,490.73228 206.49069,489.73228 C 208.28374,488.7323 209.18029,486.12888 209.18032,481.92201 L 209.18032,481.92201 z M 204.05968,438.73278 L 204.05968,427.30186 L 215.4906,427.30186 L 215.4906,438.73278 L 204.05968,438.73278 z M 185.43917,438.73278 L 185.43917,427.30186 L 196.8701,427.30186 L 196.8701,438.73278 L 185.43917,438.73278 z M 233.95594,500.74942 L 233.95594,425.38808 L 244.76618,425.38808 L 244.76618,452.80161 L 244.97307,452.80161 C 248.31785,448.56032 252.97297,446.43966 258.93845,446.4396 C 263.11079,446.43966 267.13661,448.02585 271.01592,451.19818 C 274.89515,454.37061 276.83478,458.99125 276.83483,465.06011 L 276.83483,500.74942 L 266.02459,500.74942 L 266.02459,468.78421 C 266.02455,465.16359 265.01594,462.33604 262.99876,460.30154 C 260.9815,458.26712 258.47291,457.24988 255.47297,457.24984 C 252.36953,457.24988 249.80921,458.26712 247.79201,460.30154 C 245.77477,462.33604 244.76616,465.16359 244.76618,468.78421 L 244.76618,500.74942 L 233.95594,500.74942 z M 290.85193,500.74942 L 290.85193,447.06029 L 301.66217,447.06029 L 301.66217,452.80161 L 301.86907,452.80161 C 305.21384,448.56032 309.86896,446.43966 315.83445,446.4396 C 319.76541,446.43966 323.50675,447.81895 327.05848,450.57749 L 319.24821,459.88775 C 316.90337,458.12919 314.52409,457.24988 312.11035,457.24984 C 309.45517,457.24988 307.05003,458.13781 304.8949,459.91361 C 302.73973,461.68949 301.66216,464.54291 301.66217,468.47387 L 301.66217,500.74942 L 290.85193,500.74942 z M 330.62741,476.8531 L 330.62741,466.04286 L 362.54089,466.04286 L 362.54089,476.8531 L 330.62741,476.8531 z "
+       style="font-size:105.93000031px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+    <path
+       id="text1892"
+       d="M 50.13016,595.53512 L 50.13016,520.17379 L 60.940399,520.17379 L 60.940399,547.58731 C 62.94036,545.69083 65.052406,544.15636 67.276544,542.98391 C 69.500634,541.81156 72.009228,541.22536 74.802333,541.22531 C 78.078128,541.22536 80.905684,541.88915 83.285009,543.21667 C 85.664253,544.54429 87.629749,546.20807 89.181503,548.208 C 90.664199,550.13906 91.672809,552.38903 92.207335,554.95793 C 92.741763,557.52691 93.009002,562.08721 93.009052,568.63883 C 93.009002,575.25948 92.741763,579.8715 92.207335,582.4749 C 91.672809,585.07834 90.664199,587.32831 89.181503,589.22484 C 87.629749,591.25931 85.664253,592.92308 83.285009,594.21617 C 80.905684,595.50926 78.078128,596.1558 74.802333,596.15581 C 69.285119,596.1558 64.664479,594.08686 60.940399,589.94897 L 60.940399,595.53512 L 50.13016,595.53512 z M 71.543744,552.03555 C 66.474805,552.03559 63.440354,553.84592 62.440385,557.46653 C 61.440376,561.08722 60.940381,564.81131 60.940399,568.63883 C 60.940381,572.56985 61.440376,576.34567 62.440385,579.96631 C 63.440354,583.58697 66.474805,585.3973 71.543744,585.39729 C 76.612626,585.3973 79.655697,583.65594 80.672965,580.1732 C 81.690158,576.6905 82.198773,572.84571 82.198812,568.63883 C 82.198773,564.53546 81.690158,560.74239 80.672965,557.25963 C 79.655697,553.77695 76.612626,552.03559 71.543744,552.03555 L 71.543744,552.03555 z M 146.74991,572.77672 L 113.33644,572.77672 C 113.33643,577.19049 114.53469,580.5008 116.93123,582.70766 C 119.32774,584.91455 122.38805,586.01798 126.11218,586.01797 C 130.56038,586.01798 134.49137,584.29386 137.90517,580.84561 L 145.71544,587.51796 C 143.06024,590.62138 140.0689,592.83688 136.74138,594.16445 C 133.4138,595.49202 129.9397,596.1558 126.31907,596.15581 C 120.80186,596.1558 115.45709,594.37134 110.28475,590.80241 C 105.11238,587.23349 102.5262,579.93184 102.5262,568.89745 C 102.5262,558.44931 104.9141,551.22525 109.68992,547.22525 C 114.46572,543.22534 119.45705,541.22536 124.66392,541.22531 C 130.56038,541.22536 135.7155,543.26844 140.12928,547.35456 C 144.54299,551.44077 146.74986,556.94933 146.74991,563.88026 L 146.74991,572.77672 z M 113.33644,563.88026 L 135.99139,563.88026 C 135.81894,559.84585 134.68102,556.75968 132.57763,554.62173 C 130.47417,552.48386 127.83627,551.41491 124.66392,551.41486 C 121.45703,551.41491 118.79326,552.48386 116.67262,554.62173 C 114.55193,556.75968 113.43987,559.84585 113.33644,563.88026 L 113.33644,563.88026 z M 158.12911,595.53512 L 158.12911,541.84599 L 168.93935,541.84599 L 168.93935,547.58731 L 169.14624,547.58731 C 172.49101,543.34603 177.14614,541.22536 183.11162,541.22531 C 187.28396,541.22536 191.30978,542.81155 195.18909,545.98388 C 199.06831,549.15631 201.00795,553.77695 201.008,559.84582 L 201.008,595.53512 L 190.19776,595.53512 L 190.19776,563.56992 C 190.19772,559.9493 189.18911,557.12174 187.17193,555.08724 C 185.15467,553.05282 182.64608,552.03559 179.64614,552.03555 C 176.54269,552.03559 173.98238,553.05282 171.96518,555.08724 C 169.94794,557.12174 168.93933,559.9493 168.93935,563.56992 L 168.93935,595.53512 L 158.12911,595.53512 z M 215.0251,577.5353 L 215.0251,541.84599 L 225.83534,541.84599 L 225.83534,573.86292 C 225.83532,577.51807 226.84393,580.35425 228.86118,582.37146 C 230.87837,584.38869 233.43869,585.3973 236.54213,585.39729 C 239.54207,585.3973 242.05067,584.38869 244.06792,582.37146 C 246.08511,580.35425 247.09372,577.51807 247.09376,573.86292 L 247.09376,541.84599 L 257.90399,541.84599 L 257.90399,595.53512 L 247.09376,595.53512 L 247.09376,589.84552 L 246.88686,589.84552 C 243.54203,594.05238 238.92139,596.1558 233.02493,596.15581 C 228.78357,596.1558 224.72327,594.57824 220.84401,591.42309 C 216.96473,588.26796 215.0251,583.6387 215.0251,577.5353 L 215.0251,577.5353 z M 272.54178,541.84599 L 272.54178,525.55305 L 283.35202,525.55305 L 283.35202,541.84599 L 291.21401,541.84599 L 291.21401,550.12177 L 283.35202,550.12177 L 283.35202,581.36285 C 283.352,584.05249 284.62785,585.3973 287.17957,585.39729 L 291.21401,585.39729 L 291.21401,595.53512 L 285.57614,595.53512 C 281.81754,595.53512 278.7055,594.3972 276.24002,592.12136 C 273.77452,589.84553 272.54178,586.58694 272.54178,582.3456 L 272.54178,550.12177 L 267.16253,550.12177 L 267.16253,541.84599 L 272.54178,541.84599 z M 297.78292,595.53512 L 297.78292,587.00072 L 324.67921,551.41486 L 299.28291,551.41486 L 299.28291,541.84599 L 337.81701,541.84599 L 337.81701,550.43211 L 310.92072,585.39729 L 337.81701,585.39729 L 337.81701,595.53512 L 297.78292,595.53512 z M 389.85097,572.77672 L 356.4375,572.77672 C 356.43749,577.19049 357.63575,580.5008 360.0323,582.70766 C 362.4288,584.91455 365.48912,586.01798 369.21324,586.01797 C 373.66144,586.01798 377.59243,584.29386 381.00623,580.84561 L 388.8165,587.51796 C 386.16131,590.62138 383.16996,592.83688 379.84245,594.16445 C 376.51486,595.49202 373.04076,596.1558 369.42014,596.15581 C 363.90293,596.1558 358.55816,594.37134 353.38581,590.80241 C 348.21344,587.23349 345.62726,579.93184 345.62726,568.89745 C 345.62726,558.44931 348.01517,551.22525 352.79099,547.22525 C 357.56679,543.22534 362.55811,541.22536 367.76498,541.22531 C 373.66144,541.22536 378.81656,543.26844 383.23035,547.35456 C 387.64405,551.44077 389.85092,556.94933 389.85097,563.88026 L 389.85097,572.77672 z M 356.4375,563.88026 L 379.09245,563.88026 C 378.92001,559.84585 377.78209,556.75968 375.6787,554.62173 C 373.57524,552.48386 370.93733,551.41491 367.76498,551.41486 C 364.55809,551.41491 361.89433,552.48386 359.77368,554.62173 C 357.65299,556.75968 356.54094,559.84585 356.4375,563.88026 L 356.4375,563.88026 z M 401.23017,595.53512 L 401.23017,541.84599 L 412.04041,541.84599 L 412.04041,547.58731 L 412.2473,547.58731 C 415.59207,543.34603 420.2472,541.22536 426.21268,541.22531 C 430.14364,541.22536 433.88498,542.60466 437.43671,545.3632 L 429.62644,554.67345 C 427.2816,552.91489 424.90232,552.03559 422.48858,552.03555 C 419.83341,552.03559 417.42826,552.92351 415.27313,554.69931 C 413.11796,556.4752 412.04039,559.32862 412.04041,563.25958 L 412.04041,595.53512 L 401.23017,595.53512 z "
+       style="font-size:105.93000031px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1040-30.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1040-30.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1040-30.svg	(revision 36424)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 80.239381,108.66835 L 80.239381,158.97358 L 204.11877,158.97358 L 204.11877,108.66835 L 80.239381,108.66835 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path20922" />
+  <g
+     transform="translate(-192.5815,-288.6836)"
+     id="g1902">
+    <path
+       d="M 290.54615,464.36091 L 290.54615,395.39369 L 278.99581,403.8193 L 278.99581,391.48778 L 290.54615,383.06218 L 302.20808,383.06218 L 302.20808,464.36091 L 290.54615,464.36091 z M 330.49803,426.69678 L 352.31533,383.06218 L 365.31644,383.06218 L 348.18623,417.43419 L 348.40942,417.43419 C 350.23215,416.72745 352.2967,416.37406 354.60308,416.37401 C 359.73653,416.37406 364.25622,418.17822 368.16217,421.78649 C 372.06803,425.39485 374.02098,431.14211 374.02104,439.02829 C 374.02098,448.3653 371.52864,455.03324 366.54401,459.03214 C 361.55928,463.03105 356.05381,465.0305 350.02759,465.0305 C 344.3361,465.0305 339.13752,462.82645 334.43184,458.41835 C 329.72614,454.01026 327.3733,447.97471 327.37331,440.31166 C 327.3733,435.40141 328.41488,430.86311 330.49803,426.69678 L 330.49803,426.69678 z M 350.69717,426.69678 C 347.46082,426.69681 344.70809,427.78489 342.43896,429.961 C 340.16979,432.13718 339.03522,435.4944 339.03524,440.03267 C 339.03522,448.96048 342.92253,453.42438 350.69717,453.42436 C 353.37548,453.42438 355.98872,452.4107 358.53689,450.38333 C 361.08499,448.356 362.35906,444.90578 362.3591,440.03267 C 362.35906,435.4944 361.21519,432.13718 358.92748,429.961 C 356.6397,427.78489 353.89627,426.69681 350.69717,426.69678 L 350.69717,426.69678 z M 384.2322,438.5819 L 384.2322,426.91997 L 418.66001,426.91997 L 418.66001,438.5819 L 384.2322,438.5819 z M 446.78257,464.36091 L 446.78257,395.39369 L 435.23223,403.8193 L 435.23223,391.48778 L 446.78257,383.06218 L 458.4445,383.06218 L 458.4445,464.36091 L 446.78257,464.36091 z M 495.27166,405.66066 C 495.27165,409.49223 496.47132,412.39376 498.87068,414.36526 C 501.27,416.33686 503.95764,417.32264 506.93359,417.32259 C 509.9095,417.32264 512.59713,416.33686 514.99651,414.36526 C 517.39582,412.39376 518.59549,409.49223 518.59553,405.66066 C 518.59549,401.86641 517.39582,398.97418 514.99651,396.98396 C 512.59713,394.99387 509.9095,393.9988 506.93359,393.99873 C 503.95764,393.9988 501.27,394.99387 498.87068,396.98396 C 496.47132,398.97418 495.27165,401.86641 495.27166,405.66066 L 495.27166,405.66066 z M 482.15896,440.64646 C 482.15896,432.72307 485.35808,426.62242 491.75634,422.34448 C 489.33839,420.18697 487.37613,417.79693 485.86958,415.17434 C 484.36301,412.55185 483.60972,409.45503 483.60973,405.88385 C 483.60972,399.33687 485.85097,393.7756 490.33347,389.20004 C 494.81596,384.62462 500.34932,382.33688 506.93359,382.33679 C 513.51781,382.33688 519.05118,384.62462 523.53371,389.20004 C 528.01616,393.7756 530.25741,399.33687 530.25746,405.88385 C 530.25741,409.45503 529.49483,412.55185 527.96971,415.17434 C 526.4445,417.79693 524.51015,420.18697 522.16664,422.34448 C 528.52765,426.65962 531.70817,432.76027 531.70823,440.64646 C 531.70817,447.86311 529.26233,453.73127 524.37069,458.25095 C 519.47897,462.77065 513.66661,465.0305 506.93359,465.0305 C 500.16333,465.0305 494.34167,462.77065 489.46859,458.25095 C 484.5955,453.73127 482.15896,447.86311 482.15896,440.64646 L 482.15896,440.64646 z M 493.82089,440.53486 C 493.82088,444.25479 495.13215,447.33302 497.7547,449.76955 C 500.37722,452.2061 503.43685,453.42438 506.93359,453.42436 C 510.39308,453.42438 513.45271,452.2061 516.11248,449.76955 C 518.77218,447.33302 520.10205,444.25479 520.10209,440.53486 C 520.10205,436.81497 518.77218,433.72745 516.11248,431.27227 C 513.45271,428.81716 510.39308,427.58959 506.93359,427.58956 C 503.43685,427.58959 500.37722,428.81716 497.7547,431.27227 C 495.13215,433.72745 493.82088,436.81497 493.82089,440.53486 L 493.82089,440.53486 z "
+       style="font-size:114.27577972px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       id="text1889" />
+    <path
+       d="M 585.21777,408.72413 C 587.1741,408.72419 589.01793,409.25059 590.74929,410.30334 C 592.48058,411.35619 593.72225,412.57891 594.47428,413.9715 C 595.22625,415.36418 595.69639,416.54959 595.88472,417.52772 C 596.07297,418.50594 596.16711,419.78492 596.16715,421.36465 L 596.16715,463.12314 L 585.33143,463.12314 L 585.33143,425.42546 C 585.33141,423.6207 584.91752,422.15401 584.08977,421.02539 C 583.26197,419.89686 581.94568,419.33257 580.1409,419.33252 C 578.5611,419.33257 577.26318,419.95311 576.24714,421.19416 C 575.23106,422.43529 574.72302,423.84572 574.72304,425.42546 L 574.72304,463.12314 L 563.88733,463.12314 L 563.88733,387.84489 L 574.72304,387.84489 L 574.72304,414.59319 C 577.2052,410.68054 580.70344,408.72419 585.21777,408.72413 L 585.21777,408.72413 z "
+       style="font-size:112.86226654px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       id="text1965" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1042-33.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1042-33.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1042-33.svg	(revision 36424)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 80.239381,108.66835 L 80.239381,158.97358 L 204.11877,158.97358 L 204.11877,108.66835 L 80.239381,108.66835 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path20922" />
+  <g
+     transform="translate(225.6776,-380.788)"
+     id="g2856">
+    <path
+       d="M -89.590927,597.38794 L -89.590927,537.1046 L -99.691687,544.65178 L -99.691687,533.91506 L -89.590927,526.47171 L -79.493412,526.47171 L -79.493412,597.38794 L -89.590927,597.38794 z M -36.264233,561.13163 C -35.697525,562.05316 -35.325466,563.0455 -35.148056,564.10864 C -34.970712,565.17186 -34.882024,566.48326 -34.88199,568.04285 L -34.88199,581.65113 C -34.882024,583.42492 -35.041555,585.03807 -35.360584,586.4906 C -35.679679,587.94316 -36.742859,590.12252 -38.550127,593.02868 C -40.357454,595.93485 -43.84821,597.60101 -49.022405,598.02715 C -52.213046,598.02715 -55.084065,597.33602 -57.635469,595.95378 C -60.186896,594.57154 -61.976888,592.90539 -63.005453,590.95532 C -64.034028,589.00526 -64.672152,587.3748 -64.919827,586.06393 C -65.16751,584.75308 -65.291349,583.28215 -65.291346,581.65113 L -65.291346,570.48935 C -65.291349,568.92976 -65.255657,567.81304 -65.184271,567.1392 C -65.112891,566.46541 -64.865212,565.56176 -64.441234,564.42825 L -50.404649,526.47171 L -38.921645,526.47171 L -50.404649,556.24186 C -48.987815,555.74438 -47.463887,555.49562 -45.832862,555.49558 L -44.87892,555.49558 C -41.050198,555.99314 -38.178638,557.87182 -36.264233,561.13163 L -36.264233,561.13163 z M -45.939938,566.4497 C -47.004222,565.03071 -48.422155,564.3212 -50.193743,564.32117 C -51.115256,564.3212 -51.983754,564.60458 -52.79924,565.17128 C -53.614756,565.73806 -54.199343,566.41133 -54.553002,567.19111 C -54.906688,567.97095 -55.083524,569.07036 -55.08351,570.48935 L -55.08351,581.65113 C -55.083524,583.21076 -54.658468,584.66385 -53.808342,586.01039 C -52.958246,587.35695 -51.505702,587.92423 -49.450706,587.71224 C -47.607736,587.71224 -46.40233,587.09197 -45.834485,585.8514 C -45.266685,584.61085 -44.982774,583.21076 -44.98275,581.65113 L -44.98275,570.48935 C -44.982774,569.56788 -45.036311,568.80592 -45.143363,568.20346 C -45.250461,567.60106 -45.515986,567.01647 -45.939938,566.4497 L -45.939938,566.4497 z M -25.680012,574.52901 L -25.680012,564.42825 L 4.6222692,564.42825 L 4.6222692,574.52901 L -25.680012,574.52901 z M 26.283905,597.38794 L 26.283905,537.1046 L 16.183145,544.65178 L 16.183145,533.91506 L 26.283905,526.47171 L 36.381421,526.47171 L 36.381421,597.38794 L 26.283905,597.38794 z M 80.992846,582.82247 C 80.992812,584.94884 80.461222,587.18174 79.398074,589.52116 C 78.334863,591.86059 76.597867,593.86311 74.187082,595.52872 C 71.776243,597.19434 69.153985,598.02715 66.320299,598.02715 C 63.272426,598.02715 60.47225,597.24734 57.919763,595.68772 C 55.367256,594.1281 53.63026,592.3738 52.70877,590.42481 C 51.78727,588.47583 51.22053,586.86322 51.008546,585.58695 C 50.796555,584.31072 50.690562,582.99878 50.690565,581.65113 L 50.690565,569.21094 C 50.690562,567.29876 51.133463,565.58069 52.019271,564.05673 C 52.90507,562.53283 54.163472,561.16844 55.794483,559.96354 C 52.391866,557.41108 50.690562,553.90247 50.690565,549.43772 L 50.690565,539.86909 C 50.690562,538.52152 50.956087,537.15658 51.48714,535.77428 C 52.018185,534.39209 53.293893,532.38957 55.314267,529.76671 C 57.334625,527.14398 60.931916,525.83258 66.106149,525.83251 C 68.091886,525.83258 69.970568,526.24033 71.742198,527.05576 C 73.51378,527.87133 75.498454,529.43095 77.696228,531.73462 C 79.893941,534.03842 80.992812,537.13927 80.992846,541.03718 L 80.992846,550.18076 C 80.992812,554.29292 79.291508,557.55384 75.888928,559.96354 C 79.291508,562.30192 80.992812,565.63315 80.992846,569.95722 L 80.992846,582.82247 z M 65.895243,535.93327 C 64.406989,535.93333 63.166432,536.42977 62.173569,537.42258 C 61.180676,538.41552 60.684237,539.62039 60.68425,541.03718 L 60.68425,550.18076 C 60.684237,551.81181 61.127139,553.21189 62.012956,554.38102 C 62.898745,555.55024 64.157147,556.13483 65.788168,556.13479 C 67.559756,556.13483 68.853309,555.58539 69.668833,554.48648 C 70.484312,553.38765 70.892062,551.95241 70.892086,550.18076 L 70.892086,541.03718 C 70.892062,539.68961 70.413469,538.50205 69.456305,537.4745 C 68.499096,536.44707 67.312077,535.93333 65.895243,535.93327 L 65.895243,535.93327 z M 65.895243,563.78904 C 64.335606,563.78907 63.077203,564.30336 62.120031,565.3319 C 61.16283,566.3605 60.684237,567.65351 60.68425,569.21094 L 60.68425,581.65113 C 60.684237,583.49414 61.109293,584.98291 61.959419,586.11746 C 62.809515,587.25204 64.191757,587.81932 66.106149,587.81931 C 67.94912,587.81932 69.207522,587.21689 69.881361,586.01201 C 70.555154,584.80716 70.892062,583.35353 70.892086,581.65113 L 70.892086,569.21094 C 70.892062,567.65351 70.449161,566.3605 69.56338,565.3319 C 68.677555,564.30336 67.454844,563.78907 65.895243,563.78904 L 65.895243,563.78904 z M 128.02157,546.1411 C 129.86453,546.14115 131.60153,546.63705 133.23256,547.6288 C 134.86354,548.62064 136.03325,549.77251 136.74171,551.08441 C 137.4501,552.39639 137.893,553.51311 138.07041,554.43456 C 138.24776,555.3561 138.33645,556.56096 138.33648,558.04916 L 138.33648,597.38794 L 128.12864,597.38794 L 128.12864,561.87467 C 128.12862,560.17448 127.73872,558.79278 126.95893,557.72956 C 126.1791,556.66642 124.93908,556.13483 123.23888,556.13479 C 121.75062,556.13483 120.52791,556.71941 119.57074,557.88855 C 118.61354,559.05776 118.13495,560.38647 118.13496,561.87467 L 118.13496,597.38794 L 107.92712,597.38794 L 107.92712,526.47171 L 118.13496,526.47171 L 118.13496,551.67008 C 120.47329,547.98414 123.76883,546.14115 128.02157,546.1411 L 128.02157,546.1411 z "
+       style="font-size:106.32242584px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Engschrift"
+       id="text2844" />
+    <path
+       d="M -102.81994,502.12739 L -102.81994,433.54882 L -92.982661,433.54882 L -73.308095,478.26374 L -54.057144,433.54882 L -44.219862,433.54882 L -44.219862,502.12739 L -54.621964,502.12739 L -54.621964,459.34227 L -54.810238,459.34227 L -69.166081,492.33718 L -77.826655,492.33718 L -92.182499,459.34227 L -92.417841,459.34227 L -92.417841,502.12739 L -102.81994,502.12739 z M -33.017595,477.65185 C -33.017599,472.41161 -32.609674,468.50494 -31.793818,465.93184 C -30.977973,463.35881 -29.628682,461.03677 -27.745941,458.96572 C -26.396659,457.49096 -24.537462,456.07891 -22.168343,454.72957 C -19.799253,453.38033 -16.700591,452.70568 -12.872346,452.70563 C -9.1069065,452.70568 -6.0317781,453.38033 -3.6469513,454.72957 C -1.2621912,456.07891 0.60485101,457.49096 1.9541811,458.96572 C 3.8368737,461.03677 5.1861647,463.35881 6.0020582,465.93184 C 6.8178655,468.50494 7.2257907,472.41161 7.225835,477.65185 C 7.2257907,482.98629 6.8178655,486.94002 6.0020582,489.51308 C 5.1861647,492.08615 3.8368737,494.40819 1.9541811,496.47919 C 0.60485101,497.98538 -1.2621912,499.39743 -3.6469513,500.71534 C -6.0317781,502.03325 -9.1069065,502.69221 -12.872346,502.69221 C -16.700591,502.69221 -19.799253,502.03325 -22.168343,500.71534 C -24.537462,499.39743 -26.396659,497.98538 -27.745941,496.47919 C -29.628682,494.40819 -30.977973,492.08615 -31.793818,489.51308 C -32.609674,486.94002 -33.017599,482.98629 -33.017595,477.65185 L -33.017595,477.65185 z M -2.5643795,477.74599 C -2.564414,474.2002 -2.7448424,471.70558 -3.1056654,470.26213 C -3.4665562,468.81873 -4.0862887,467.43806 -4.9648648,466.12011 C -6.6907342,463.73535 -9.3265586,462.54296 -12.872346,462.54292 C -16.480939,462.54296 -19.116763,463.73535 -20.779827,466.12011 C -21.721209,467.43806 -22.356631,468.81873 -22.686094,470.26213 C -23.015587,471.70558 -23.180326,474.16883 -23.180312,477.65185 C -23.180326,481.22907 -23.015587,483.74722 -22.686094,485.20632 C -22.356631,486.66546 -21.721209,488.03828 -20.779827,489.3248 C -19.116763,491.70961 -16.480939,492.90201 -12.872346,492.902 C -9.3265586,492.90201 -6.6907342,491.70961 -4.9648648,489.3248 C -4.0862887,488.03828 -3.4665562,486.6733 -3.1056654,485.22986 C -2.7448424,483.78645 -2.564414,481.29183 -2.5643795,477.74599 L -2.5643795,477.74599 z M 16.310028,480.38182 L 16.310028,470.54454 L 45.351193,470.54454 L 45.351193,480.38182 L 16.310028,480.38182 z M 57.588962,502.12739 L 57.588962,433.54882 L 101.45665,433.54882 L 101.45665,443.3861 L 67.991065,443.3861 L 67.991065,463.57842 L 96.514478,463.57842 L 96.514478,472.85088 L 67.991065,472.85088 L 67.991065,502.12739 L 57.588962,502.12739 z M 108.51691,502.12739 L 108.51691,453.27045 L 118.35419,453.27045 L 118.35419,458.49504 L 118.54246,458.49504 C 121.5862,454.63548 125.82234,452.70568 131.25092,452.70563 C 134.82808,452.70568 138.23268,453.96084 141.46475,456.4711 L 134.35743,464.9434 C 132.22363,463.34312 130.05849,462.54296 127.862,462.54292 C 125.4458,462.54296 123.25712,463.35096 121.29596,464.96694 C 119.33476,466.58299 118.35418,469.17959 118.35419,472.75675 L 118.35419,502.12739 L 108.51691,502.12739 z "
+       style="font-size:96.39595795px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       id="text4001" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1044-10.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1044-10.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1044-10.svg	(revision 36424)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 80.239381,108.66835 L 80.239381,158.97358 L 204.11877,158.97358 L 204.11877,108.66835 L 80.239381,108.66835 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path20922" />
+  <g
+     transform="matrix(5.109517,0,0,5.109517,461.8514,-1459.973)"
+     id="g8408">
+    <path
+       d="M -35.212572,318.50098 C -35.211894,322.66083 -38.583928,326.03341 -42.743778,326.03341 C -46.903628,326.03341 -50.275662,322.66083 -50.274984,318.50098 C -50.275662,314.34113 -46.903628,310.96855 -42.743778,310.96855 C -38.583928,310.96855 -35.211894,314.34113 -35.212572,318.50098 L -35.212572,318.50098 z "
+       transform="matrix(1.103775,0,0,1.103775,8.653227,-30.10701)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:1.81196344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3069" />
+    <path
+       d="M -36.78532,312.21483 C -36.78532,316.98239 -36.78532,314.68153 -36.78532,314.68153"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.76695538px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path6617" />
+    <path
+       d="M -47.292192,317.15326 C -41.96024,317.15326 -44.051937,317.15326 -44.051937,317.15326"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.976125px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5730" />
+    <path
+       d="M -44.56103,313.67108 C -39.229078,313.67108 -41.320775,313.67108 -41.320775,313.67108"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.976125px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path8406" />
+    <path
+       d="M -55.667836,330.11748 C -54.347105,325.16278 -51.67252,315.22275 -51.515523,314.89338 C -51.186883,314.20393 -51.121917,313.65381 -50.034883,313.60631 L -42.886955,313.69168 L -42.886955,310.66214 L -50.333498,310.66214 C -50.178853,309.98746 -50.383012,309.31278 -49.164921,308.6381 L -42.934292,308.6381 L -42.934292,302.66225 C -42.934292,301.09614 -37.064554,301.09983 -37.064554,302.66225 L -37.064554,314.73308 C -37.064554,315.9654 -38.193966,316.81589 -39.857413,316.81589 L -49.324732,316.81589 L -53.490353,330.16481 C -53.745584,331.11734 -55.667836,330.83456 -55.667836,330.11748 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path6630" />
+    <path
+       d="M -53.443015,298.59131 C -53.442426,300.16032 -54.714197,301.43257 -56.283211,301.43257 C -57.852224,301.43257 -59.123995,300.16032 -59.123406,298.59131 C -59.123995,297.0223 -57.852224,295.75005 -56.283211,295.75005 C -54.714197,295.75005 -53.442426,297.0223 -53.443015,298.59131 z "
+       transform="matrix(1.083333,0,0,1.083333,20.67569,-26.8545)"
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path6632" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1046-11.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1046-11.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1046-11.svg	(revision 36424)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="matrix(0.424242,0,0,0.424242,100.7972,52.63578)"
+     id="layer1">
+    <path
+       d="M 136.75462,282.03583 C 136.75462,357.06643 75.930301,417.89075 0.8997,417.89075 C -74.130901,417.89075 -134.95522,357.06643 -134.95522,282.03583 C -134.95522,207.00523 -74.130901,146.18091 0.8997,146.18091 C 75.930301,146.18091 136.75462,207.00523 136.75462,282.03583 z "
+       transform="matrix(0.74724,0,0,0.74724,122.5869,48.79482)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:39.38558578;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path15475" />
+    <path
+       d="M 648.90867,96.718727 L 435.78671,96.718727 C 427.74779,99.838733 421.99999,104.94437 426.56202,118.9852 L 481.59203,154.61156 C 505.09805,136.98259 529.46933,134.06306 553.79902,130.43653 L 649.54486,130.11844 L 648.90867,96.718727 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12814" />
+    <path
+       d="M 582.93177,285.852 L 361.08955,285.58848 C 314.75731,284.17925 288.28246,245.79634 259.51124,204.2434 C 209.17953,131.55162 201.92686,130.76936 191.60083,97.014213 L 265.47547,97.091396 C 270.39789,98.590741 275.32031,99.325646 280.24273,105.42207 L 324.71097,168.71896 C 328.41656,184.39886 325.34225,197.06215 321.45561,210.49425 C 316.96787,226.00375 334.80258,253.63393 362.62544,252.50687 L 583.4588,239.59683 L 582.93177,285.852 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path13701" />
+    <path
+       d="M 108.60035,251.76407 C 110.39975,246.36586 194.33551,41.815551 194.33551,41.815551 C 204.53449,23.526361 218.83992,13.450051 237.52117,12.125404 L 295.10207,12.125404 L 294.78398,45.941389 L 239.266,45.941389 C 232.48018,45.301217 227.37783,49.579445 223.12595,61.608982 L 139.45372,265.8412 C 131.31921,284.84108 100.39972,278.15819 108.60035,251.76407 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path14588" />
+    <path
+       d="M 136.75462,282.03583 C 136.75462,357.06643 75.930301,417.89075 0.8997,417.89075 C -74.130901,417.89075 -134.95522,357.06643 -134.95522,282.03583 C -134.95522,207.00523 -74.130901,146.18091 0.8997,146.18091 C 75.930301,146.18091 136.75462,207.00523 136.75462,282.03583 z "
+       transform="matrix(0.74724,0,0,0.74724,555.8824,49.18351)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:39.38558578;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path17247" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1046-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1046-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1046-12.svg	(revision 36424)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="matrix(0.368807,0,0,0.368807,119.3566,43.07082)"
+     id="g3132">
+    <path
+       d="M 438.12826,429.16927 C 375.32987,426.00501 282.92602,437.06422 251.92375,397.77007 C 237.71768,323.00073 197.12299,285.36345 127.4223,284.58694 C 84.626532,201.93866 162.31092,188.98722 215.41306,167.75274 C 218.78636,206.16837 216.71935,246.10015 277.48123,268.52224 C 279.92034,256.63453 284.90432,246.92813 300.84807,246.61583 L 390.66436,246.98094 L 454.19295,197.3264 C 464.45935,213.65423 484.83147,234.57558 484.86193,246.25072 L 581.25015,246.61583 C 588.2694,252.59444 594.22298,268.45864 580.15483,284.22184 C 522.41354,282.46908 417.46802,288.77717 438.12826,429.16927 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path4749" />
+    <path
+       d="M 281.45311,113.13794 L 281.71128,79.094411 L 319.83363,73.920272 L 319.83363,46.902363 L 280.93677,53.36735 C 283.79727,29.02724 299.44705,11.428004 333.92156,6.3312047 C 355.56786,7.8567994 378.26787,9.030436 391.1807,49.520754 C 394.96498,65.581097 392.60623,81.830116 382.63201,95.826685 C 350.34442,78.127222 326.17913,90.209532 304.13403,110.06585 L 281.45311,113.13794 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5636" />
+    <path
+       d="M 215.04795,186.7383 L 328.59619,100.93818 C 343.85852,92.79748 360.69029,91.248459 380.80647,103.49393 C 398.00264,119.11558 427.05087,162.39207 450.17678,191.84979 L 385.55287,240.22646 L 323.48469,153.87868 L 225.27094,229.0907 C 217.71099,215.89572 215.94199,200.40941 215.04795,186.7383 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path6523" />
+    <path
+       d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z "
+       transform="matrix(0.974466,0,0,0.974466,-15.37667,-10.08382)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7410" />
+    <path
+       d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z "
+       transform="matrix(0.974466,0,0,0.974466,388.6178,-9.97323)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path8297" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-10.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-10.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-10.svg	(revision 36424)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="matrix(0.553662,0,0,0.553662,346.6055,-57.98703)"
+     id="g1919">
+    <path
+       d="M -349.51018,422.04401 C -349.51018,449.77051 -371.98694,472.24727 -399.71344,472.24727 C -427.43994,472.24727 -449.9167,449.77051 -449.9167,422.04401 C -449.9167,394.31752 -427.43994,371.84075 -399.71344,371.84075 C -371.98694,371.84075 -349.51018,394.31752 -349.51018,422.04401 L -349.51018,422.04401 z "
+       style="fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path25345" />
+    <path
+       d="M -239.55303,230.32142 C -236.87961,227.22635 -233.83316,224.5665 -228.21024,224.91253 L 14.65733,224.91253 L 135.36151,320.7517 C 136.69344,323.56683 137.36741,325.72399 137.70533,327.54511 L 138.16406,412.47209 C 135.92053,417.34013 133.28109,421.49554 128.57377,421.92876 L 100.55863,421.92876 C 100.55863,338.89679 -22.19346,338.72721 -22.19346,421.92876 L -337.57475,421.92876 C -337.57475,339.21885 -461.26101,338.9015 -461.26101,421.92876 L -495.43553,421.92876 C -498.34948,420.56574 -500.97116,421.83325 -504.82123,412.04517 L -505.19491,350.97236 C -503.20757,345.41573 -500.72891,343.29839 -498.25583,341.14201 L -320.73121,311.65094 L -239.55303,230.32142 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path24454" />
+    <path
+       d="M 88.86912,422.0229 C 88.86912,449.7494 66.39236,472.22616 38.66586,472.22616 C 10.93936,472.22616 -11.5374,449.7494 -11.5374,422.0229 C -11.5374,394.29641 10.93936,371.81964 38.66586,371.81964 C 66.39236,371.81964 88.86912,394.29641 88.86912,422.0229 L 88.86912,422.0229 z "
+       style="fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path25343" />
+    <path
+       d="M 44.15052,305.12148 L -7.6922,252.9107 C -9.05617,251.75157 -10.12893,250.15564 -12.49981,250.50689 L -102.99788,250.50689 L -102.99788,323.62262 L 51.23653,323.62262 C 58.53486,322.16724 48.93086,312.32067 44.15052,305.12148 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path26236" />
+    <path
+       d="M -295.85961,312.59455 L -235.36384,252.90005 C -233.99987,251.74093 -232.92711,250.145 -230.55623,250.49625 L -122.98595,250.49625 L -122.98595,323.61199 L -291.25231,323.61199 C -297.65794,321.08536 -298.52471,317.25547 -295.85961,312.59455 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path25349" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-11.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-11.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-11.svg	(revision 36424)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="matrix(0.416497,0,0,0.416497,40.28258,82.68274)"
+     id="layer1">
+    <path
+       d="M 160.58312,199.08511 C 160.58312,226.81161 138.10636,249.28837 110.37986,249.28837 C 82.653362,249.28837 60.176601,226.81161 60.176601,199.08511 C 60.176601,171.35862 82.653362,148.88185 110.37986,148.88185 C 138.10636,148.88185 160.58312,171.35862 160.58312,199.08511 L 160.58312,199.08511 z "
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3194" />
+    <path
+       d="M 270.54027,7.362515 C 273.21369,4.2674527 276.26014,1.6076003 281.88306,1.9536287 L 524.75063,1.9536287 L 645.45481,97.7928 C 646.78674,100.60793 647.46071,102.76509 647.79863,104.58621 L 648.25736,189.51319 C 646.01383,194.38123 643.37439,198.53664 638.66707,198.96986 L 610.65193,198.96986 C 610.65193,115.93789 487.89984,115.76831 487.89984,198.96986 L 172.51855,198.96986 C 172.51855,116.25995 48.832289,115.9426 48.832289,198.96986 L 14.657772,198.96986 C 11.743816,197.60684 9.1221418,198.87435 5.2720693,189.08627 L 4.8983948,128.01346 C 6.8857269,122.45683 9.3643852,120.33949 11.837468,118.18311 L 189.36209,88.692043 L 270.54027,7.362515 z "
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3196" />
+    <path
+       d="M 598.96242,199.064 C 598.96242,226.7905 576.48566,249.26726 548.75916,249.26726 C 521.03266,249.26726 498.5559,226.7905 498.5559,199.064 C 498.5559,171.33751 521.03266,148.86074 548.75916,148.86074 C 576.48566,148.86074 598.96242,171.33751 598.96242,199.064 L 598.96242,199.064 z "
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3198" />
+    <path
+       d="M 554.24382,82.162579 L 502.4011,29.951795 C 501.03713,28.792673 499.96437,27.196736 497.59349,27.54799 L 407.09542,27.54799 L 407.09542,100.66372 L 561.32983,100.66372 C 568.62816,99.208338 559.02416,89.361769 554.24382,82.162579 z "
+       style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3200" />
+    <path
+       d="M 787.13419,173.56057 L 707.90245,173.56057 L 707.90245,186.47499 L 658.86255,186.47499 L 658.86255,199.56394 L 782.94573,199.56394 C 783.89147,190.82108 783.62571,181.87631 787.13419,173.56057 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path28093" />
+    <path
+       d="M 214.23369,89.635648 L 274.72946,29.941154 C 276.09343,28.782032 277.16619,27.186096 279.53707,27.537349 L 387.10735,27.537349 L 387.10735,100.65309 L 218.84099,100.65309 C 212.43536,98.126456 211.56859,94.296573 214.23369,89.635648 z "
+       style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3203" />
+    <path
+       d="M 893.91893,199.09866 C 893.91893,226.82516 871.44217,249.30192 843.71567,249.30192 C 815.98917,249.30192 793.51241,226.82516 793.51241,199.09866 C 793.51241,171.37217 815.98917,148.8954 843.71567,148.8954 C 871.44217,148.8954 893.91893,171.37217 893.91893,199.09866 L 893.91893,199.09866 z "
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path26315" />
+    <path
+       d="M 708.07697,162.39134 L 708.07697,48.604793 C 710.54619,30.868706 719.63699,29.163014 727.97217,26.615369 L 960.08276,26.615369 C 966.40555,28.250356 974.14601,29.599665 978.05824,47.208639 L 978.05824,162.39134 L 892.19479,162.39134 C 874.56835,126.20501 813.66112,126.0422 794.98756,162.39134 L 708.07697,162.39134 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path26317" />
+    <path
+       d="M 978.1455,173.56057 L 965.66738,199.56394 L 904.2366,199.56394 C 902.40617,190.85015 902.52331,181.85814 897.77939,173.56057 L 978.1455,173.56057 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path27206" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-12.svg	(revision 36424)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 37.10863,487.51009 L 37.10863,541.80186 L 50.66977,541.80186 L 50.66977,488.38108 L 37.10863,487.51009 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5404" />
+  <path
+     d="M 91.06256,486.09351 L 91.06256,540.38528 L 104.6237,540.38528 L 104.6237,486.9645 L 91.06256,486.09351 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5425" />
+  <g
+     transform="matrix(0.342814,0,0,0.342814,73.43973,49.09789)"
+     id="g5452">
+    <path
+       d="M 295.78419,86.816926 L 295.78419,335.08252 L 687.71625,335.4031 C 664.71649,354.19396 650.35734,380.09418 650.54503,414.08813 L 261.47933,413.85667 C 257.75238,281.97351 70.642616,282.42223 66.576854,413.09434 C 38.473995,412.88466 34.575813,406.50199 34.30487,380.61469 L 34.304868,281.61469 C 33.952015,237.37253 28.42681,266.57731 61.177014,182.67997 C 94.875059,93.246445 85.585107,101.51291 116.0648,99.204795 L 295.78419,86.816926 z M 217.93865,233.19966 L 219.48981,127.72046 L 119.43969,133.92512 C 101.20003,135.14704 101.04823,135.26154 94.62105,156.41701 L 69.026832,224.66825 C 60.428592,245.6025 61.79713,251.77115 85.314062,248.71131 L 217.93865,233.19966 z M 966.63494,335.59074 L 966.82552,391.36792 L 902.21802,414.23783 L 845.4914,414.20156 C 845.7223,381.85903 832.28136,354.65711 808.44981,335.54893 L 966.63494,335.59074 z "
+       style="fill:black;fill-rule:evenodd;stroke:none"
+       id="path5439" />
+    <rect
+       width="631.32404"
+       height="301.70154"
+       x="335.82718"
+       y="12.158683"
+       style="fill:black;stroke:none"
+       id="rect5441" />
+    <circle
+       cx="164"
+       cy="412"
+       r="77"
+       style="fill:black;stroke:none"
+       id="circle5443" />
+    <circle
+       cx="748"
+       cy="412"
+       r="77"
+       style="fill:black;stroke:none"
+       id="circle5445" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-13.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-13.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-13.svg	(revision 36424)
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 37.10863,487.51009 L 37.10863,541.80186 L 50.66977,541.80186 L 50.66977,488.38108 L 37.10863,487.51009 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5404" />
+  <path
+     d="M 91.06256,486.09351 L 91.06256,540.38528 L 104.6237,540.38528 L 104.6237,486.9645 L 91.06256,486.09351 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5425" />
+  <g
+     transform="matrix(0.414816,0,0,0.414816,43.76114,79.19138)"
+     id="layer1">
+    <path
+       d="M 948.58272,181.11452 L 948.58272,212.00923 L 904.55776,212.00923 C 901.60557,200.82583 896.46811,190.20899 885.45863,181.11452 L 948.58272,181.11452 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path11867" />
+    <path
+       d="M 187.42838,5.0734714 L 532.683,5.0734714 L 532.683,169.79304 L 187.42838,169.79304 L 187.42838,5.0734714 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path10081" />
+    <path
+       d="M 579.57758,4.9475632 L 948.64201,4.9475632 L 948.64201,169.66713 L 579.57758,169.66713 L 579.57758,4.9475632 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path10968" />
+    <path
+       d="M 900.1042,233.89624 C 900.1042,254.86716 883.10391,271.86745 862.13299,271.86745 C 841.16208,271.86745 824.16179,254.86716 824.16179,233.89624 C 824.16179,212.92532 841.16208,195.92504 862.13299,195.92504 C 883.10391,195.92504 900.1042,212.92532 900.1042,233.89624 z "
+       transform="matrix(1.090164,0,0,1.090164,-86.75925,-32.25117)"
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.10599899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path10970" />
+    <path
+       d="M 900.1042,233.89624 C 900.1042,254.86716 883.10391,271.86745 862.13299,271.86745 C 841.16208,271.86745 824.16179,254.86716 824.16179,233.89624 C 824.16179,212.92532 841.16208,195.92504 862.13299,195.92504 C 883.10391,195.92504 900.1042,212.92532 900.1042,233.89624 z "
+       transform="matrix(1.090164,0,0,1.090164,-288.7536,-32.29364)"
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.10599899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path10972" />
+    <path
+       d="M 900.1042,233.89624 C 900.1042,254.86716 883.10391,271.86745 862.13299,271.86745 C 841.16208,271.86745 824.16179,254.86716 824.16179,233.89624 C 824.16179,212.92532 841.16208,195.92504 862.13299,195.92504 C 883.10391,195.92504 900.1042,212.92532 900.1042,233.89624 z "
+       transform="matrix(1.090164,0,0,1.090164,-525.918,-32.41613)"
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.10599899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path10974" />
+    <path
+       d="M 900.1042,233.89624 C 900.1042,254.86716 883.10391,271.86745 862.13299,271.86745 C 841.16208,271.86745 824.16179,254.86716 824.16179,233.89624 C 824.16179,212.92532 841.16208,195.92504 862.13299,195.92504 C 883.10391,195.92504 900.1042,212.92532 900.1042,233.89624 z "
+       transform="matrix(1.090164,0,0,1.090164,-846.4946,-32.29364)"
+       style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:34.10599899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path10976" />
+    <path
+       d="M 555.58979,180.92026 L 555.58979,211.81497 L 599.61475,211.81497 C 602.56694,200.63157 607.7044,190.01473 618.71388,180.92026 L 555.58979,180.92026 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path10980" />
+    <path
+       d="M 684.37536,181.11451 C 695.46489,190.5657 698.81792,200.8602 702.48185,212.00922 L 801.50106,212.00922 C 804.45325,200.82582 809.59071,190.20898 820.60019,181.11451 L 684.37536,181.11451 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path11871" />
+    <path
+       d="M 532.6833,180.77713 L 532.84234,212.30802 L 498.57982,222.89377 L 466.55091,222.96412 C 468.00842,210.31082 458.55157,189.47039 445.86132,180.93618 L 532.6833,180.77713 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path11875" />
+    <path
+       d="M 164.38292,46.440644 L 60.571013,51.8735 C 56.231301,53.218337 52.575838,55.171397 50.919898,58.901809 L 22.700623,132.93384 L 21.613992,140.70413 L 21.621535,212.97526 C 22.503535,219.59402 26.862349,221.74259 31.897406,223.02171 L 40.397747,223.02171 C 40.397747,154.18672 147.11778,154.36604 147.11778,223.02171 L 361.41037,223.02171 C 359.95286,210.36841 369.40971,189.52798 382.09996,180.99377 L 164.61964,180.96791 L 164.38292,46.440644 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path11879" />
+    <path
+       d="M 122.58432,126.2727 L 122.58432,67.11733 L 62.754174,71.165986 C 60.574695,71.531761 59.010637,72.974522 58.030742,75.439568 L 38.912086,126.2727 C 38.590374,128.0721 37.82559,129.87151 38.912086,131.67091 C 39.608067,133.31708 40.918089,134.14453 42.510892,134.59494 L 122.58432,126.2727 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path11883" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-14.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-14.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-14.svg	(revision 36424)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 37.10863,487.51009 L 37.10863,541.80186 L 50.66977,541.80186 L 50.66977,488.38108 L 37.10863,487.51009 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5404" />
+  <path
+     d="M 91.06256,486.09351 L 91.06256,540.38528 L 104.6237,540.38528 L 104.6237,486.9645 L 91.06256,486.09351 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5425" />
+  <g
+     transform="translate(215.5998,-306.0631)"
+     id="g3344">
+    <path
+       d="M -77.33636,388.30102 L -130.09554,388.1241 L -149.12126,439.09869 L -149.12126,487.56045 C -149.12126,490.93751 -146.93069,494.02202 -143.01867,494.02202 L -132.24939,494.02202 C -124.07871,461.47157 -92.70245,456.63449 -78.76197,483.97069 L -44.30027,483.97069 C -28.93601,457.99027 6.33961,462.79659 8.11022,493.70411 L 17.80258,493.70411 C 17.80258,480.63082 4.54,457.04749 -10.19755,457.04749 L -77.68504,457.04749 L -77.33636,388.30102 z "
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path1999" />
+    <path
+       d="M 116.1717,457.1746 C 101.43415,457.1746 88.17171,480.75756 88.1717,493.83085 L 97.89045,493.83085 C 99.611,463.79714 132.96106,460.39473 143.2342,473.76835 L 143.20295,474.9871 L 152.9217,474.9871 L 152.89045,473.76835 C 163.16359,460.39473 196.51365,463.79714 198.2342,493.83085 L 207.9217,493.83085 C 207.92169,480.75756 194.65925,457.1746 179.9217,457.1746 L 116.1717,457.1746 z "
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path2003" />
+    <path
+       d="M 145.22134,493.03462 C 145.22137,504.9363 135.58902,514.5929 123.68738,514.62282 C 111.78574,514.65274 102.10497,505.04469 102.04516,493.14316 C 101.98535,481.24163 111.56906,471.53676 123.4704,471.44705 C 135.37174,471.35735 145.10065,480.91665 145.22025,492.81773"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path2010" />
+    <path
+       d="M 192.85814,493.03462 C 192.85817,504.9363 183.22582,514.5929 171.32418,514.62282 C 159.42254,514.65274 149.74177,505.04469 149.68196,493.14316 C 149.62215,481.24163 159.20586,471.53676 171.1072,471.44705 C 183.00854,471.35735 192.73745,480.91665 192.85705,492.81773"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path2012" />
+    <path
+       d="M -82.52546,493.03462 C -82.52543,504.9363 -92.15778,514.5929 -104.05942,514.62282 C -115.96106,514.65274 -125.64183,505.04469 -125.70164,493.14316 C -125.76145,481.24163 -116.17774,471.53676 -104.2764,471.44705 C -92.37506,471.35735 -82.64615,480.91665 -82.52655,492.81773"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path2014" />
+    <path
+       d="M 2.57844,493.03462 C 2.57847,504.9363 -7.05388,514.5929 -18.95552,514.62282 C -30.85716,514.65274 -40.53793,505.04469 -40.59774,493.14316 C -40.65755,481.24163 -31.07384,471.53676 -19.1725,471.44705 C -7.27116,471.35735 2.45775,480.91665 2.57735,492.81773"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path2016" />
+    <path
+       d="M -54.02803,367.50327 L -54.08942,450.63319 L 207.30979,450.5718 L 207.30979,367.7872 L -54.02803,367.50327 z "
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path2018" />
+    <path
+       d="M -97.545,400.0024 L -97.44386,431.30104 L -142.75144,436.09069 L -129.93587,400.10354 L -97.545,400.0024 z "
+       style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path2020" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-17.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-17.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-17.svg	(revision 36424)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 37.10863,487.51009 L 37.10863,541.80186 L 50.66977,541.80186 L 50.66977,488.38108 L 37.10863,487.51009 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5404" />
+  <path
+     d="M 91.06256,486.09351 L 91.06256,540.38528 L 104.6237,540.38528 L 104.6237,486.9645 L 91.06256,486.09351 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5425" />
+  <g
+     transform="translate(464.4842,93.08128)"
+     id="g3385">
+    <path
+       d="M -350.4152,99.11503 L -328.91882,99.11503 C -328.91882,64.22852 -274.90618,64.33667 -274.90618,99.11503 L -178.06468,99.11503 C -178.06468,64.46823 -124.17913,64.57405 -124.17913,99.11503 L -112.61927,99.11503 L -83.62933,89.32113 L -83.62933,-22.200388 C -83.62933,-24.217088 -85.25544,-25.855147 -87.45053,-25.855147 L -158.45473,-25.855147 L -176.86727,-36.040804 L -322.99228,-36.040804 L -353.54925,-15.277733 C -356.04851,-13.269998 -355.8201,-6.687074 -353.54925,-3.916808 L -342.97183,5.877094 L -270.13668,5.877094 L -270.10521,10.96992 L -299.48691,16.06275 L -322.60052,50.53728 L -354.33276,61.50645 L -354.33276,96.37274 C -354.33276,98.04948 -352.97545,99.11503 -350.4152,99.11503 z "
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path2091" />
+    <path
+       d="M -281.07435,99.506798 C -281.07428,110.73759 -290.16361,119.8499 -301.39436,119.87818 C -312.62511,119.90646 -321.76023,110.84004 -321.81672,99.6094 C -321.87321,88.378746 -312.82977,79.220895 -301.59929,79.136193 C -290.36883,79.05149 -281.18829,88.071904 -281.07538,99.302128"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path2085" />
+    <path
+       d="M -131.03175,99.506798 C -131.03168,110.73759 -140.12101,119.8499 -151.35176,119.87818 C -162.58251,119.90646 -171.71763,110.84004 -171.77412,99.6094 C -171.83061,88.378746 -162.78717,79.220895 -151.55669,79.136193 C -140.32623,79.05149 -131.14569,88.071904 -131.03278,99.302128"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path2089" />
+    <path
+       d="M -315.70161,51.76516 L -272.23732,50.2401 C -271.22002,50.2401 -270.2039,49.04746 -270.2039,47.9525 L -270.2039,21.51808 C -270.2039,20.58229 -271.73916,19.73884 -272.74567,19.73884 L -295.62161,19.73884 L -315.44743,47.9525 L -315.70161,51.76516 z "
+       style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path2095" />
+    <path
+       d="M -234.85141,7.021787 L -234.85141,87.12311 C -234.85141,88.28848 -234.06211,89.53916 -232.99291,89.53916 L -188.38893,89.53916 C -187.24879,89.53916 -186.34458,88.5308 -186.34458,86.75141 L -186.34458,7.57934 C -186.34458,6.457247 -187.28046,5.163288 -188.76063,5.163288 L -232.62121,5.163288 C -234.18998,5.187979 -234.85141,6.141607 -234.85141,7.021787 z "
+       style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path2097" />
+    <path
+       d="M -166.66121,6.610992 L -166.66121,35.6558 C -166.66574,36.61701 -166.18837,37.36432 -165.10801,37.36432 L -126.27806,37.36432 C -125.33455,37.36432 -124.56954,36.53925 -124.56954,35.50048 L -124.56954,6.688652 C -124.56954,5.839157 -125.37095,4.980134 -126.35572,4.980134 L -165.10801,4.980134 C -166.0877,4.980134 -166.66121,5.769524 -166.66121,6.610992 z "
+       style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path2099" />
+    <path
+       d="M -313.39076,-24.80339 L -313.39076,-6.969289 C -313.39076,-6.090269 -312.99649,-5.102929 -311.73178,-5.102929 L -272.53823,-5.102929 C -271.5831,-5.102929 -270.98293,-5.986124 -270.98293,-6.969289 L -270.98293,-25.010763 C -270.98293,-25.969075 -272.04234,-26.566063 -272.84929,-26.566063 L -311.52441,-26.566063 C -312.6129,-26.566063 -313.39076,-25.734258 -313.39076,-24.80339 z "
+       style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path1886" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-19.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-19.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1048-19.svg	(revision 36424)
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 37.10863,487.51009 L 37.10863,541.80186 L 50.66977,541.80186 L 50.66977,488.38108 L 37.10863,487.51009 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5404" />
+  <path
+     d="M 91.06256,486.09351 L 91.06256,540.38528 L 104.6237,540.38528 L 104.6237,486.9645 L 91.06256,486.09351 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5425" />
+  <g
+     transform="matrix(0.497949,0,0,0.497949,60.70423,45.09004)"
+     id="layer1">
+    <path
+       d="M 141.29386,64.772007 L 226.621,8.5678385 L 310.09117,64.726728 L 226.67891,120.91089 L 141.29386,64.772007 z "
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path30859" />
+    <path
+       d="M 545.76835,224.85743 C 544.55054,231.75847 539.49988,232.6089 535.6799,236.42888 C 543.52397,236.41433 556.28207,236.32762 556.3103,235.60249 L 556.72355,224.98944 L 545.76835,224.85743 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30855" />
+    <path
+       d="M 68.158738,321.23081 C 68.455695,367.59067 134.85842,367.59152 134.85842,321.64768"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path29926" />
+    <path
+       d="M 205.72683,321.21721 C 206.02379,367.57707 272.42651,367.57792 272.42651,321.63408"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30815" />
+    <path
+       d="M 467.10621,321.21721 C 467.40316,367.57707 533.80589,367.57792 533.80589,321.63408"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30817" />
+    <path
+       d="M 605.09118,321.21721 C 605.38814,367.57707 671.79086,367.57792 671.79086,321.63408"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30819" />
+    <path
+       d="M 142.04948,342.38712 L 197.91046,342.38712 C 195.06734,337.46269 193.77027,332.24227 193.95017,321.54346 L 146.94774,321.54346 C 146.615,332.3914 144.91424,337.4252 142.04948,342.38712 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30821" />
+    <path
+       d="M 541.10118,342.49133 L 596.96216,342.49133 C 594.11904,337.5669 592.82197,332.34648 593.00187,321.64767 L 545.99944,321.64767 C 545.6667,332.49561 543.96594,337.52941 541.10118,342.49133 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30825" />
+    <path
+       d="M 570.24997,144.88875 C 565.04731,148.56178 560.2466,151.66884 560.2466,154.82898 L 560.30736,283.93097 C 561.52517,290.83201 566.42999,291.97412 570.24997,295.7941 L 546.51516,295.61257 L 546.2191,154.56075 C 546.2191,151.76942 541.27657,148.50142 536.1756,144.89967 L 570.24997,144.88875 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30841" />
+    <path
+       d="M 34.77654,124.52695 L 704.03682,124.52695 L 704.03682,145.63848 L 34.954125,145.63848 L 34.77654,124.52695 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30827" />
+    <path
+       d="M 405.02462,144.77233 C 410.22728,148.44536 415.02799,151.55242 415.02799,154.71256 L 414.96723,224.96752 C 413.74942,231.86856 408.8446,233.01067 405.02462,236.83065 L 439.09899,236.83065 C 435.27035,233.00201 430.20446,232.09446 429.0714,225.13748 L 429.05549,154.44433 C 429.05549,151.653 433.99802,148.385 439.09899,144.78325 L 405.02462,144.77233 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30829" />
+    <path
+       d="M 273.9892,144.66674 C 279.19186,148.33977 283.99257,151.44683 283.99257,154.60697 L 283.93181,224.86193 C 282.714,231.76297 277.80918,232.90508 273.9892,236.72506 L 308.06357,236.72506 C 304.23493,232.89642 299.16904,231.98887 298.03598,225.03189 L 298.02007,154.33874 C 298.02007,151.54741 302.9626,148.27941 308.06357,144.67766 L 273.9892,144.66674 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30833" />
+    <path
+       d="M 143.85545,144.88875 C 149.05811,148.56178 153.85882,151.66884 153.85882,154.82898 L 153.79806,283.93097 C 152.58025,290.83201 147.67543,291.97412 143.85545,295.7941 L 167.59026,295.61257 L 167.88632,154.56075 C 167.88632,151.76942 172.82885,148.50142 177.92982,144.89967 L 143.85545,144.88875 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30839" />
+    <path
+       d="M 628.05988,144.88875 C 633.26254,148.56178 638.06325,151.66884 638.06325,154.82898 L 638.00249,283.93097 C 636.78468,290.83201 631.87986,291.97412 628.05988,295.7941 L 651.79469,295.61257 L 651.64888,144.96967 L 628.05988,144.88875 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30845" />
+    <path
+       d="M 112.14105,144.77017 C 106.93839,148.4432 102.13768,151.55026 102.13768,154.7104 L 102.19844,283.81239 C 103.41625,290.71343 108.32107,291.85554 112.14105,295.67552 L 88.406239,295.67178 L 88.552049,144.85109 L 112.14105,144.77017 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30849" />
+    <path
+       d="M 48.471006,144.5257 L 3.2183455,234.56804 L 3.2183455,289.1964 C 3.2183455,299.06206 14.853723,309.33876 23.735298,309.31106 L 716.48416,309.31106 C 725.18984,309.31106 737.00111,297.13026 737.00111,289.1964 L 737.00111,233.67994 L 691.06759,144.17503 L 677.91563,144.17503 L 708.84059,205.11712 C 714.11626,225.00611 697.80765,233.59281 689.53052,236.50035 L 650.58941,236.33987 L 650.91037,295.63527 L 547.11655,295.63527 L 547.11655,236.33769 L 166.95167,236.33769 L 166.95167,295.55394 L 89.065096,295.55394 L 89.065096,236.41685 L 49.884355,236.41685 C 40.999758,236.41685 25.997947,225.75364 31.37669,205.6799 L 61.478753,144.5257 L 48.471006,144.5257 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30853" />
+    <path
+       d="M 168.36959,224.926 C 169.5874,231.82704 174.63806,232.67747 178.45804,236.49745 C 170.61397,236.4829 157.85587,236.39619 157.82764,235.67106 L 157.41439,225.05801 L 168.36959,224.926 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30857" />
+    <path
+       d="M 298.81034,124.9591 L 291.66677,117.46706 L 159.42359,117.46706 L 153.32543,124.78486 L 298.81034,124.9591 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path31750" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1049-10.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1049-10.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1049-10.svg	(revision 36424)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     d="M 37.10863,487.51009 L 37.10863,541.80186 L 50.66977,541.80186 L 50.66977,488.38108 L 37.10863,487.51009 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5404" />
+  <path
+     d="M 91.06256,486.09351 L 91.06256,540.38528 L 104.6237,540.38528 L 104.6237,486.9645 L 91.06256,486.09351 z "
+     style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+     id="path5425" />
+  <g
+     transform="matrix(0.472523,0,0,0.472523,126.8692,40.4954)"
+     id="g3475">
+    <g
+       transform="translate(10.1636,8.029761)"
+       id="g4548">
+      <path
+         d="M 295.23238,14.905561 C 279.95549,17.514001 272.29797,24.966621 266.23238,33.436811 L 248.45113,141.12431 L 37.388633,141.12431 C 14.754659,144.54201 19.232383,154.82662 19.232383,163.09306 L 36.388633,268.15556 L 51.513633,268.15556 C 63.437389,228.50231 144.25279,229.9376 156.82613,268.15556 L 247.51363,268.15556 C 243.13571,198.86951 342.7846,101.24363 443.48238,196.40556 L 443.48238,139.49931 L 443.73238,139.49931 L 443.73238,14.905561 L 295.23238,14.905561 z M 289.23238,42.499311 L 399.60738,42.499311 L 399.91988,139.87431 L 270.07613,140.93681 L 286.01363,47.999311 C 286.56907,46.102541 286.84967,44.193071 289.23238,42.499311 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1882" />
+      <path
+         d="M 665.82779,917.76086 C 665.82779,960.38146 631.27697,994.93228 588.65637,994.93228 C 546.03577,994.93228 511.48495,960.38146 511.48495,917.76086 C 511.48495,875.14026 546.03577,840.58944 588.65637,840.58944 C 631.27697,840.58944 665.82779,875.14026 665.82779,917.76086 z "
+         transform="translate(-230.0275,-650.8975)"
+         style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:50;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1887" />
+      <path
+         d="M 665.82779,917.76086 C 665.82779,960.38146 631.27697,994.93228 588.65637,994.93228 C 546.03577,994.93228 511.48495,960.38146 511.48495,917.76086 C 511.48495,875.14026 546.03577,840.58944 588.65637,840.58944 C 631.27697,840.58944 665.82779,875.14026 665.82779,917.76086 z "
+         transform="matrix(0.591604,0,0,0.591604,-244.0191,-234.3611)"
+         style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:50;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path2776" />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1049-12.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1049-12.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1049-12.svg	(revision 36424)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="translate(23.01927,-484.4661)"
+     id="g3554">
+    <path
+       d="M 290.61109,594.7957 L 219.98933,594.7957 L 198.31334,583.14195 L 198.31334,550.27835 L 337.22612,537.45922 L 337.22612,580.34505 L 290.61109,589.43497 L 290.61109,594.7957 z "
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path5534" />
+    <path
+       d="M 65.22745,640.14176 L 383.60806,640.7115 L 383.55474,581.51042 L 292.24262,601.55488 L 159.3898,601.55488 L 65.22745,626.72699 C 59.68041,628.97045 57.84175,640.14176 65.22745,640.14176 z "
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path5536" />
+    <path
+       d="M 155.81493,666.86299 C 155.8149,678.17004 146.66376,687.34414 135.35675,687.37251 C 124.04974,687.40088 114.85268,678.27282 114.79591,666.96591 C 114.73914,655.65901 123.84407,646.43905 135.1508,646.35388 C 146.45752,646.26871 155.70032,655.35046 155.81389,666.65693"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1874" />
+    <path
+       d="M 201.97733,666.86299 C 201.9773,678.17004 192.82616,687.34414 181.51915,687.37251 C 170.21214,687.40088 161.01508,678.27282 160.95831,666.96591 C 160.90154,655.65901 170.00647,646.43905 181.3132,646.35388 C 192.61992,646.26871 201.86272,655.35046 201.97629,666.65693"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1876" />
+    <path
+       d="M 247.33033,666.86299 C 247.3303,678.17004 238.17916,687.34414 226.87215,687.37251 C 215.56514,687.40088 206.36808,678.27282 206.31131,666.96591 C 206.25454,655.65901 215.35947,646.43905 226.6662,646.35388 C 237.97292,646.26871 247.21572,655.35046 247.32929,666.65693"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1880" />
+    <path
+       d="M 293.76333,666.86299 C 293.7633,678.17004 284.61216,687.34414 273.30515,687.37251 C 261.99814,687.40088 252.80108,678.27282 252.74431,666.96591 C 252.68754,655.65901 261.79247,646.43905 273.0992,646.35388 C 284.40592,646.26871 293.64872,655.35046 293.76229,666.65693"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3511" />
+    <path
+       d="M 83.75265,646.62921 L 74.19015,647.06671 C 68.86449,660.31481 73.30023,672.43708 87.94015,681.41046 C 104.43763,691.5224 124.26113,701.25982 130.00265,701.41046 L 325.06515,701.47296 C 330.80667,701.32232 350.63018,691.58492 367.12765,681.47296 C 381.76757,672.49958 386.20331,660.34606 380.87765,647.09796 L 371.31515,646.69171 C 374.19279,659.08716 376.6764,667.4533 358.75265,675.94171 C 344.08271,682.88915 328.57628,691.15987 326.1589,691.66046 L 128.9089,691.62921 C 126.49153,691.1286 111.01634,682.82665 96.3464,675.87921 C 78.42265,667.39081 80.87501,659.02466 83.75265,646.62921 z M 60.44859,556.58616 L 60.44859,570.17368 L 193.64743,574.70285 L 193.64743,556.38029 L 60.44859,556.58616 z "
+       style="color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path1890" />
+    <path
+       d="M 339.83623,667.93559 C 339.8362,679.24264 330.68506,688.41674 319.37805,688.44511 C 308.07104,688.47348 298.87398,679.34542 298.81721,668.03851 C 298.76044,656.73161 307.86537,647.51165 319.1721,647.42648 C 330.47882,647.34131 339.72162,656.42306 339.83519,667.72953"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1884" />
+    <path
+       d="M 368.27196,658.40424 C 368.27194,664.84952 363.05558,670.07898 356.61031,670.09515 C 350.16504,670.11133 344.9225,664.90811 344.89014,658.4629 C 344.85778,652.0177 350.04781,646.7621 356.49291,646.71355 C 362.93802,646.665 368.20663,651.84182 368.27137,658.28678"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1886" />
+    <path
+       d="M 110.01126,658.40424 C 110.01124,664.84952 104.79488,670.07898 98.34961,670.09515 C 91.90434,670.11133 86.6618,664.90811 86.62944,658.4629 C 86.59708,652.0177 91.78711,646.7621 98.23221,646.71355 C 104.67732,646.665 109.94593,651.84182 110.01067,658.28678"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1888" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1052-35.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1052-35.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1052-35.svg	(revision 36424)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="270"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.984375 C 20.356889,4.9843748 9.96875,12.12016 9.96875,33.203125 L 9.65625,236.79688 C 9.65625,257.87984 20.044391,265.01563 38.46875,265.01563 L 451.21875,264.98438 C 469.64311,264.98438 480.03124,257.84859 480.03125,236.76563 L 480.34375,33.234375 C 480.34375,12.15141 469.95561,5.0156248 451.53125,5.015625 L 38.78125,4.984375 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.3125,17.796875 L 36.78125,17.828125 C 28.356999,17.828125 23.40625,23.829135 23.40625,32.703125 L 23.40625,237.35938 C 23.406249,246.23335 28.35701,252.23438 36.78125,252.23438 L 453.28125,252.20313 C 461.70549,252.20312 466.65625,246.20211 466.65625,237.32813 L 466.65625,32.671875 C 466.65625,23.797885 461.73674,17.796875 453.3125,17.796875 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="translate(143.5177,-373.1291)"
+     id="g3679">
+    <path
+       d="M -29.96237,471.44013 L -29.96237,431.47131 L 49.11674,431.47131 L 49.11674,451.40802 L 2.08899,570.45595 L -20.23249,570.45595 L 26.89064,451.40802 L -10.02566,451.40802 L -10.02566,471.44013 L -29.96237,471.44013 z "
+       style="font-size:195.36070251px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:DIN 1451 Mittelschrift"
+       id="text3358" />
+    <path
+       d="M 48.69418,584.78687 L 48.69418,550.54151 L 68.63089,550.54151 L 68.63089,570.38283 L 48.69418,584.78687 z "
+       style="font-size:195.36070251px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:DIN 1451 Mittelschrift"
+       id="text3362" />
+    <path
+       d="M 92.05704,519.5662 L 92.05704,459.17295 L 151.53059,459.17295 L 151.53059,475.19096 L 107.15535,475.19096 L 107.15535,500.4059 C 112.26473,496.31845 118.21719,494.27469 125.01274,494.27461 C 129.25351,494.27469 133.12389,495.09219 136.62388,496.72713 C 140.12377,498.36221 142.89563,500.27824 144.93945,502.47522 C 148.00503,505.7964 150.2404,509.4113 151.64555,513.31994 C 153.05057,517.2287 153.75312,523.80706 153.75319,533.05505 C 153.75312,540.56591 153.20385,546.14794 152.1054,549.80114 C 151.00681,553.45439 149.25684,556.81383 146.85548,559.87946 C 144.55618,562.79183 141.33726,565.49982 137.19869,568.00342 C 133.06002,570.50704 128.20608,571.75884 122.63687,571.75884 C 115.43256,571.75884 108.48377,569.53625 101.79047,565.09106 C 95.09713,560.64588 91.16288,553.21169 89.98772,542.78848 L 106.00573,542.78848 C 107.89619,551.4745 113.23552,555.81749 122.02374,555.81748 C 129.84109,555.81749 134.41401,553.13505 135.74251,547.77015 C 137.0709,542.4053 137.73513,537.09151 137.73518,531.82879 C 137.73513,525.64644 136.6877,520.51149 134.59289,516.42391 C 132.49798,512.33644 128.15499,510.29268 121.56389,510.29262 C 115.38147,510.29268 110.57863,513.38387 107.15535,519.5662 L 92.05704,519.5662 z "
+       style="font-size:156.96113586px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:DIN 1451 Mittelschrift"
+       id="text3366" />
+    <path
+       d="M 198.49086,471.73665 L 198.49086,441.68849 L 218.42757,441.68849 L 218.42757,471.73665 L 232.927,471.73665 L 232.927,486.9992 L 218.42757,486.9992 L 218.42757,544.61535 C 218.42754,549.5757 220.78052,552.05586 225.48651,552.05584 L 232.927,552.05584 L 232.927,570.75247 L 222.52939,570.75247 C 215.59761,570.75247 209.85826,568.65387 205.31132,564.45667 C 200.76433,560.25948 198.49085,554.24985 198.49086,546.42778 L 198.49086,486.9992 L 188.5702,486.9992 L 188.5702,471.73665 L 198.49086,471.73665 z "
+       style="font-size:195.36070251px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:DIN 1451 Mittelschrift"
+       id="text3370" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1052-36.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1052-36.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1052-36.svg	(revision 36424)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="490"
+   height="490"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.781255,9.665355 C 20.356895,9.665345 9.968755,19.290965 9.968755,47.730255 L 9.656255,442.26975 C 9.656255,470.70902 20.044395,480.33465 38.468755,480.33465 L 451.21875,480.29249 C 469.6431,480.29249 480.03124,470.66687 480.03125,442.2276 L 480.34375,47.772405 C 480.34375,19.333125 469.9556,9.707495 451.53125,9.707515 L 38.781255,9.665355 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,24.769243 L 36.797822,24.812153 C 28.375507,24.812153 23.425893,33.050693 23.425893,45.233473 L 23.425893,444.80943 C 23.425893,456.99217 28.375517,465.23076 36.797822,465.23076 L 453.20218,465.18785 C 461.62449,465.18784 466.57411,456.94929 466.57411,444.76653 L 466.57411,45.190573 C 466.57411,33.007793 461.65573,24.769243 453.23342,24.769243 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="translate(-82.2419,-339.9924)"
+     id="g1905">
+    <path
+       d="M 202.8033,651.98188 C 202.1743,605.61348 199.65815,645.51187 227.60501,576.76802 C 247.82379,530.04018 227.33543,542.62074 331.93391,540.91338 C 425.03014,542.80047 406.24915,529.32129 427.63612,578.92469 C 454.41477,642.45659 452.34797,609.20792 452.16825,650.63396 C 451.17977,696.10375 467.98383,684.42178 327.0814,685.94942 C 187.25731,684.06234 203.79175,695.92402 202.8033,651.98188 z M 231.10959,607.23098 L 250.25004,563.01925 C 253.82119,555.16582 252.68184,556.32514 261.03339,556.27966 L 394.85342,556.26524 C 402.09778,556.29186 401.03498,555.82147 404.01925,562.73525 L 423.0532,606.69181 L 231.10959,607.23098 z M 217.42074,691.02159 L 253.21546,690.94171 C 253.10563,735.88232 256.82988,733.37619 237.31002,733.66574 C 214.06591,733.57588 217.74025,735.92226 217.42074,691.02159 z M 401.75609,691.3411 L 437.61072,691.3411 C 437.37109,736.35159 440.64603,733.27634 420.35736,733.39616 C 399.37975,733.11659 402.04563,736.43147 401.75609,691.3411 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="Car" />
+    <path
+       d="M 190.30768,729.18441 C 181.02903,729.20372 174.18448,731.74585 167.45411,734.71566 L 167.14735,750.02816 C 180.39679,745.51715 193.72552,741.07975 215.46195,750.02816 C 228.48004,753.77242 241.35742,757.83586 259.40523,750.02816 C 275.17283,743.76846 291.42359,740.36591 309.98218,750.02816 C 322.3961,754.44907 335.2037,757.84334 352.46835,750.02816 C 360.27048,747.15739 368.09496,745.26554 375.89709,744.87191 C 382.75832,744.84573 390.4969,746.20406 399.78598,750.02816 C 412.80408,753.77242 425.68143,757.83586 443.72925,750.02816 C 457.66069,744.49741 471.99924,741.19712 487.95059,747.168 C 487.95059,747.168 488.76412,732.93914 488.76412,732.93914 C 473.4098,727.43504 459.0164,729.05589 445.18636,734.71566 C 430.13888,739.92898 415.86454,739.59517 402.20171,734.84066 L 402.20171,734.71566 C 401.0585,734.36455 399.95131,734.04771 398.82735,733.71566 C 375.13299,725.8483 363.30339,729.64699 351.81648,734.71566 L 351.81648,734.93441 C 336.99331,738.80693 321.8779,740.1195 308.83183,734.71566 C 291.80446,727.16206 275.97612,728.51484 260.82399,734.71566 C 245.63751,739.97714 231.23349,739.59657 217.45589,734.71566 C 206.19816,730.67782 197.52441,729.16939 190.30768,729.18441 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5597" />
+    <path
+       d="M 188.9727,753.30988 C 179.65692,753.32919 172.78498,755.87132 166.02767,758.84113 L 165.71968,774.15363 C 179.02214,769.64262 192.40422,765.20522 214.22763,774.15363 C 227.29782,777.89789 240.22674,781.96133 258.34677,774.15363 C 274.17747,767.89393 290.49327,764.49138 309.12613,774.15363 C 321.58973,778.57454 334.44858,781.96881 351.78233,774.15363 C 359.61568,771.28286 367.47148,769.39101 375.30483,768.99738 C 382.19352,768.9712 389.96307,770.32953 399.28932,774.15363 C 412.35951,777.89789 425.2884,781.96133 443.40846,774.15363 C 457.33588,768.64652 471.66854,765.35084 487.60152,771.21743 C 487.60152,771.21743 488.26199,756.93676 488.26199,756.93676 C 472.98175,751.58611 458.64816,753.22563 444.87139,758.84113 C 429.7637,764.05445 415.43222,763.72064 401.71472,758.96613 L 401.71472,758.84113 C 400.56694,758.49002 399.45531,758.17318 398.32686,757.84113 C 374.53767,749.97377 362.66073,753.77246 351.12785,758.84113 L 351.12785,759.05988 C 336.24535,762.9324 321.06946,764.24497 307.97117,758.84113 C 290.87565,751.28753 274.98398,752.64031 259.77121,758.84113 C 244.52396,764.10261 230.06229,763.72204 216.22955,758.84113 C 204.92677,754.80329 196.2183,753.29486 188.9727,753.30988 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5633" />
+    <path
+       d="M 289.74471,438.80382 L 289.74471,391.15741 L 296.57937,391.15741 L 296.57937,408.48932 C 297.84383,407.29029 299.17914,406.32014 300.58533,405.57887 C 301.99149,404.83766 303.57752,404.46704 305.34343,404.46701 C 307.41452,404.46704 309.20221,404.88672 310.70652,405.72603 C 312.21077,406.5654 313.45343,407.61731 314.43451,408.88174 C 315.37193,410.10264 316.00961,411.52516 316.34756,413.14932 C 316.68545,414.77353 316.85441,417.65673 316.85444,421.79892 C 316.85441,425.98476 316.68545,428.90066 316.34756,430.54663 C 316.00961,432.19263 315.37193,433.61515 314.43451,434.81421 C 313.45343,436.10048 312.21077,437.15238 310.70652,437.96993 C 309.20221,438.78747 307.41452,439.19624 305.34343,439.19624 C 301.85523,439.19624 298.93388,437.88817 296.57937,435.27203 L 296.57937,438.80382 L 289.74471,438.80382 z M 303.28323,411.30167 C 300.07844,411.3017 298.15994,412.44626 297.52772,414.73535 C 296.89548,417.02449 296.57936,419.37902 296.57937,421.79892 C 296.57936,424.28427 296.89548,426.67149 297.52772,428.9606 C 298.15994,431.24973 300.07844,432.39429 303.28323,432.39428 C 306.48797,432.39429 308.41192,431.29333 309.05508,429.09141 C 309.69819,426.8895 310.01976,424.45868 310.01978,421.79892 C 310.01976,419.20461 309.69819,416.80648 309.05508,414.60454 C 308.41192,412.40265 306.48797,411.3017 303.28323,411.30167 L 303.28323,411.30167 z M 350.83153,424.41506 L 329.70622,424.41506 C 329.70621,427.20562 330.4638,429.29853 331.97899,430.69379 C 333.49415,432.08907 335.429,432.78671 337.78354,432.7867 C 340.59587,432.78671 343.0812,431.69665 345.23953,429.51653 L 350.17749,433.73505 C 348.49878,435.69716 346.60753,437.09788 344.50375,437.93722 C 342.39991,438.77657 340.20345,439.19624 337.91435,439.19624 C 334.42615,439.19624 331.04698,438.06803 327.77681,435.81161 C 324.50664,433.5552 322.87155,428.93881 322.87156,421.96243 C 322.87155,415.35671 324.38128,410.78937 327.40074,408.26041 C 330.42019,405.73151 333.57591,404.46704 336.86789,404.46701 C 340.59587,404.46704 343.85514,405.75876 346.64571,408.34216 C 349.43623,410.92563 350.8315,414.40836 350.83153,418.79037 L 350.83153,424.41506 z M 329.70622,418.79037 L 344.02957,418.79037 C 343.92054,416.23965 343.2011,414.28845 341.87126,412.93676 C 340.54137,411.58511 338.87358,410.90928 336.86789,410.90925 C 334.84037,410.90928 333.15623,411.58511 331.81548,412.93676 C 330.4747,414.28845 329.77161,416.23965 329.70622,418.79037 L 329.70622,418.79037 z M 358.22212,438.80382 L 358.22212,404.85943 L 365.05678,404.85943 L 365.05678,438.80382 L 358.22212,438.80382 z M 358.22212,397.99207 L 358.22212,391.15741 L 365.05678,391.15741 L 365.05678,397.99207 L 358.22212,397.99207 z "
+       style="font-size:66.97312927px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       id="text1944" />
+    <path
+       d="M 210.59909,518.40083 L 210.59909,452.66888 L 220.02803,452.66888 L 249.75854,499.40759 L 249.939,499.40759 L 249.939,452.66888 L 259.95444,452.66888 L 259.95444,518.40083 L 250.52549,518.40083 L 220.79498,471.66212 L 220.56941,471.66212 L 220.56941,518.40083 L 210.59909,518.40083 z M 297.53488,518.40083 L 297.53488,514.25029 L 297.30931,514.25029 C 295.41447,517.37823 291.5647,518.9422 285.75998,518.9422 C 280.52667,518.9422 276.46636,517.58125 273.57904,514.85933 C 270.6917,512.13743 269.24804,508.73128 269.24804,504.64088 C 269.24804,500.9415 270.52628,497.70829 273.08278,494.94125 C 275.63926,492.17424 279.44392,490.79073 284.49677,490.7907 L 297.53488,490.7907 L 297.53488,485.91833 C 297.53485,481.91821 294.33172,479.91813 287.92548,479.91809 C 283.47416,479.91813 280.51163,481.10614 279.0379,483.48214 L 271.63911,477.88793 C 274.91743,473.31637 280.18079,471.03057 287.42922,471.03052 C 293.20386,471.03057 297.89577,472.15843 301.50497,474.41411 C 305.11409,476.66988 306.91868,480.68508 306.91872,486.4597 L 306.91872,518.40083 L 297.53488,518.40083 z M 297.53488,501.97912 L 297.53488,498.55041 L 286.25624,498.55041 C 280.8124,498.55043 278.09049,500.4302 278.0905,504.18973 C 278.09049,505.7838 278.77472,507.16731 280.14321,508.34028 C 281.51167,509.51326 283.78996,510.09975 286.97807,510.09974 C 290.88798,510.09975 293.62493,509.66365 295.18892,508.79142 C 296.75287,507.91922 297.53485,505.64845 297.53488,501.97912 L 297.53488,501.97912 z M 293.06854,464.30845 L 293.06854,454.33812 L 303.03886,454.33812 L 303.03886,464.30845 L 293.06854,464.30845 z M 276.82729,464.30845 L 276.82729,454.33812 L 286.79761,454.33812 L 286.79761,464.30845 L 276.82729,464.30845 z M 313.95659,510.59601 L 320.54332,504.09951 C 324.6337,508.09968 329.55118,510.09975 335.29579,510.09974 C 337.97256,510.09975 340.18317,509.59597 341.92763,508.58841 C 343.67203,507.58086 344.54424,506.08456 344.54428,504.09951 C 344.54424,501.36257 342.6344,499.82868 338.81472,499.49782 L 330.51364,498.73087 C 326.63377,498.43013 323.4156,497.15188 320.85912,494.89613 C 318.30262,492.64043 317.02438,489.49745 317.02438,485.46718 C 317.02438,480.71515 318.69362,477.12103 322.0321,474.6848 C 325.37057,472.24866 329.5211,471.03057 334.48372,471.03052 C 338.57409,471.03057 342.07798,471.60954 344.99542,472.76743 C 347.9128,473.92541 350.52944,475.46683 352.84536,477.39167 L 347.02558,484.24909 C 345.16081,482.98592 343.23592,481.94828 341.25091,481.13618 C 339.26584,480.32416 337.01012,479.91813 334.48372,479.91809 C 331.47607,479.91813 329.38576,480.45198 328.2128,481.51966 C 327.0398,482.58741 326.45332,483.93332 326.45333,485.55741 C 326.45332,486.58004 326.88942,487.52745 327.76165,488.39963 C 328.63385,489.27188 330.25797,489.79821 332.63403,489.97864 L 340.39373,490.52002 C 345.236,490.85088 348.70982,492.34718 350.8152,495.00892 C 352.92051,497.6707 353.97318,500.85127 353.97322,504.55065 C 353.97318,509.15235 352.09341,512.70136 348.3339,515.19769 C 344.57432,517.69403 339.98768,518.9422 334.57395,518.9422 C 326.78416,518.9422 319.91171,516.16014 313.95659,510.59601 L 313.95659,510.59601 z M 358.34934,510.59601 L 364.93607,504.09951 C 369.02644,508.09968 373.94393,510.09975 379.68853,510.09974 C 382.36531,510.09975 384.57592,509.59597 386.32038,508.58841 C 388.06478,507.58086 388.93699,506.08456 388.93702,504.09951 C 388.93699,501.36257 387.02714,499.82868 383.20747,499.49782 L 374.90639,498.73087 C 371.02652,498.43013 367.80835,497.15188 365.25187,494.89613 C 362.69537,492.64043 361.41712,489.49745 361.41713,485.46718 C 361.41712,480.71515 363.08636,477.12103 366.42485,474.6848 C 369.76331,472.24866 373.91385,471.03057 378.87647,471.03052 C 382.96683,471.03057 386.47073,471.60954 389.38817,472.76743 C 392.30554,473.92541 394.92219,475.46683 397.2381,477.39167 L 391.41832,484.24909 C 389.55356,482.98592 387.62867,481.94828 385.64366,481.13618 C 383.65859,480.32416 381.40286,479.91813 378.87647,479.91809 C 375.86881,479.91813 373.77851,480.45198 372.60554,481.51966 C 371.43255,482.58741 370.84606,483.93332 370.84608,485.55741 C 370.84606,486.58004 371.28217,487.52745 372.1544,488.39963 C 373.0266,489.27188 374.65072,489.79821 377.02677,489.97864 L 384.78648,490.52002 C 389.62875,490.85088 393.10257,492.34718 395.20795,495.00892 C 397.31326,497.6707 398.36593,500.85127 398.36597,504.55065 C 398.36593,509.15235 396.48616,512.70136 392.72665,515.19769 C 388.96707,517.69403 384.38042,518.9422 378.9667,518.9422 C 371.1769,518.9422 364.30445,516.16014 358.34934,510.59601 L 358.34934,510.59601 z M 444.20238,498.55041 L 415.05836,498.55041 C 415.05835,502.40021 416.1035,505.28754 418.19383,507.21241 C 420.28412,509.13731 422.95339,510.09975 426.20166,510.09974 C 430.08149,510.09975 433.51019,508.59594 436.48779,505.58829 L 443.30009,511.40807 C 440.98417,514.11495 438.37505,516.04735 435.47271,517.20529 C 432.57031,518.36323 429.54012,518.9422 426.38212,518.9422 C 421.56988,518.9422 416.90805,517.38575 412.3966,514.27284 C 407.88514,511.15994 405.62941,504.79128 405.62942,495.16682 C 405.62941,486.05371 407.7122,479.75271 411.87778,476.26381 C 416.04335,472.77499 420.3969,471.03057 424.93846,471.03052 C 430.08149,471.03057 434.57791,472.81259 438.42772,476.3766 C 442.27745,479.94069 444.20234,484.74538 444.20238,490.7907 L 444.20238,498.55041 z M 415.05836,490.7907 L 434.81855,490.7907 C 434.66813,487.2718 433.67561,484.57996 431.84099,482.71519 C 430.0063,480.8505 427.70546,479.91813 424.93846,479.91809 C 422.14133,479.91813 419.81793,480.8505 417.96825,482.71519 C 416.11854,484.57996 415.14858,487.2718 415.05836,490.7907 L 415.05836,490.7907 z "
+       style="font-size:92.39466095px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+       id="text1948" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_1060-11.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_1060-11.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_1060-11.svg	(revision 36424)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="270"
+   height="490"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 265.01563,38.781253 C 265.01563,20.356892 257.87984,9.96875 236.79688,9.96875 L 33.20312,9.65625 C 12.12016,9.65625 4.98437,20.044394 4.98437,38.468753 L 5.01562,451.21875 C 5.01562,469.64311 12.15141,480.03124 33.23437,480.03125 L 236.76563,480.34375 C 257.84859,480.34375 264.98438,469.95561 264.98438,451.53125 L 265.01563,38.781253 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 252.21875,453.28125 L 252.1875,36.750002 C 252.1875,28.325751 246.18649,23.375002 237.3125,23.375002 L 32.656245,23.375002 C 23.782275,23.375001 17.781245,28.325762 17.781245,36.750002 L 17.812495,453.25 C 17.812505,461.67424 23.813515,466.625 32.687495,466.625 L 237.34375,466.625 C 246.21774,466.625 252.21875,461.70549 252.21875,453.28125 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.05090809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <g
+     transform="translate(415.4301,-151.0867)"
+     id="g3964">
+    <text
+       x="-278.86829"
+       y="285.59491"
+       style="font-size:80.97670746px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:DIN 1451 Mittelschrift"
+       id="text3938"
+       xml:space="preserve"><tspan
+         x="-278.86829"
+         y="285.59491"
+         id="tspan2011">auch</tspan></text>
+    <g
+       transform="matrix(0.258565,0,0,0.258565,-368.3181,466.8852)"
+       id="layer1">
+      <path
+         d="M 136.75462,282.03583 C 136.75462,357.06643 75.930301,417.89075 0.8997,417.89075 C -74.130901,417.89075 -134.95522,357.06643 -134.95522,282.03583 C -134.95522,207.00523 -74.130901,146.18091 0.8997,146.18091 C 75.930301,146.18091 136.75462,207.00523 136.75462,282.03583 z "
+         transform="matrix(0.74724,0,0,0.74724,122.5869,48.79482)"
+         style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:39.38558578;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path15475" />
+      <path
+         d="M 648.90867,96.718727 L 435.78671,96.718727 C 427.74779,99.838733 421.99999,104.94437 426.56202,118.9852 L 481.59203,154.61156 C 505.09805,136.98259 529.46933,134.06306 553.79902,130.43653 L 649.54486,130.11844 L 648.90867,96.718727 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path12814" />
+      <path
+         d="M 582.93177,285.852 L 361.08955,285.58848 C 314.75731,284.17925 288.28246,245.79634 259.51124,204.2434 C 209.17953,131.55162 201.92686,130.76936 191.60083,97.014213 L 265.47547,97.091396 C 270.39789,98.590741 275.32031,99.325646 280.24273,105.42207 L 324.71097,168.71896 C 328.41656,184.39886 325.34225,197.06215 321.45561,210.49425 C 316.96787,226.00375 334.80258,253.63393 362.62544,252.50687 L 583.4588,239.59683 L 582.93177,285.852 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path13701" />
+      <path
+         d="M 108.60035,251.76407 C 110.39975,246.36586 194.33551,41.815551 194.33551,41.815551 C 204.53449,23.526361 218.83992,13.450051 237.52117,12.125404 L 295.10207,12.125404 L 294.78398,45.941389 L 239.266,45.941389 C 232.48018,45.301217 227.37783,49.579445 223.12595,61.608982 L 139.45372,265.8412 C 131.31921,284.84108 100.39972,278.15819 108.60035,251.76407 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path14588" />
+      <path
+         d="M 136.75462,282.03583 C 136.75462,357.06643 75.930301,417.89075 0.8997,417.89075 C -74.130901,417.89075 -134.95522,357.06643 -134.95522,282.03583 C -134.95522,207.00523 -74.130901,146.18091 0.8997,146.18091 C 75.930301,146.18091 136.75462,207.00523 136.75462,282.03583 z "
+         transform="matrix(0.74724,0,0,0.74724,555.8824,49.18351)"
+         style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:39.38558578;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path17247" />
+    </g>
+    <g
+       transform="matrix(0.465701,0,0,0.465701,-149.3182,199.3676)"
+       id="g2991">
+      <circle
+         cx="215"
+         cy="409"
+         r="161"
+         transform="matrix(0.404263,0,0,0.404263,-484.6788,259.9212)"
+         style="fill:none;stroke:black;stroke-width:40px;stroke-opacity:1"
+         id="circle11777" />
+      <circle
+         cx="790"
+         cy="406"
+         r="161"
+         transform="matrix(0.404263,0,0,0.404263,-484.6788,259.9212)"
+         style="fill:none;stroke:black;stroke-width:40px;stroke-opacity:1"
+         id="circle11779" />
+      <path
+         d="M -311.05416,266.17397 C -364.64588,266.69631 -355.55723,260.63721 -384.3902,353.2997 C -407.87889,427.33695 -405.32041,419.26292 -405.44325,424.45623 C -405.52934,428.49086 -402.27248,431.68976 -398.17988,431.96357 C -389.66869,431.10299 -393.24869,432.88407 -363.7405,341.25114 C -255.91865,454.9928 -296.3707,436.54852 -238.34492,438.85841 C -162.0838,438.12714 -155.88541,442.82817 -154.98002,431.65016 C -155.08449,427.85452 -156.86043,425.59106 -209.19855,309.11003 L -204.18412,295.32035 L -186.94702,295.00695 L -187.57382,280.59046 L -251.82121,280.59046 C -257.49726,288.35586 -249.52292,288.32104 -220.79442,294.69354 L -225.80885,308.79663 L -353.99022,309.11003 C -345.35425,278.95381 -350.2294,280.83422 -311.36756,280.90386 L -311.05416,266.17397 z M -357.69407,324.56693 L -232.26607,324.34455 L -268.51565,421.7514 L -357.69407,324.56693 z M -217.14355,330.34908 L -252.72596,423.75291 L -174.88944,423.9753 L -217.14355,330.34908 z "
+         style="fill:black;fill-rule:evenodd;stroke:white;stroke-opacity:1"
+         id="path11781" />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_108.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_108.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_108.svg	(revision 36424)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="753.12"
+   height="671.52002"
+   id="svg2">
+  <defs
+     id="defs11" />
+  <g
+     transform="matrix(1.093542,0,0,1.093542,-35.22419,-31.40766)"
+     id="g1885">
+    <path
+       d="M 71.985614,631.52918 C 60.553114,631.52918 49.989054,625.43 44.272794,615.52918 C 38.556554,605.62833 38.556554,593.43 44.272794,583.52918 L 348.84719,55.99085 C 354.56345,46.09002 365.12751,39.99084 376.56,39.99084 C 387.99251,39.99084 398.55659,46.09002 404.27283,55.99085 L 708.84723,583.52918 C 714.56347,593.43 714.56347,605.62833 708.84723,615.52918 C 703.13097,625.42999 692.56691,631.52918 681.13441,631.52918 L 71.985614,631.52918 z "
+       style="fill:white;fill-rule:evenodd;stroke:black;stroke-width:2"
+       id="path6" />
+    <path
+       d="M 71.985614,619.52918 C 64.840294,619.52918 58.237754,615.7172 54.665094,609.52918 C 51.092454,603.34114 51.092454,595.7172 54.665094,589.52918 L 359.23951,61.99086 C 362.81215,55.80282 369.41471,51.99084 376.56,51.99084 C 383.70533,51.99084 390.30787,55.80282 393.88053,61.99086 L 698.45493,589.52918 C 702.02757,595.7172 702.02757,603.34114 698.45493,609.52918 C 694.88227,615.7172 688.27973,619.52918 681.13441,619.52918 L 71.985614,619.52918 z M 141.2677,559.52918 L 376.56,151.99085 L 611.85233,559.52918 L 141.2677,559.52918 z "
+       style="fill:#c00;fill-rule:evenodd;stroke:none"
+       id="path8" />
+  </g>
+  <path
+     d="M 621.42918,575.26863 L 132.6698,575.26863 L 254.41125,361.49316 L 621.42918,575.26863 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1889" />
+  <path
+     d="M 300.52196,366.70999 L 313.7435,374.21411 L 359.84021,292.74085 L 348.04803,286.30875 L 329.82375,288.09545 L 323.74899,300.95965 L 339.82923,299.17295 L 300.52196,366.70999 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1924" />
+  <path
+     d="M 341.97846,364.07738 C 342.94987,361.22477 358.17436,336.29245 366.27231,322.39998 C 389.67608,296.51324 421.76176,322.52884 413.79837,344.91232 C 404.88255,360.93596 388.62318,390.75722 387.05092,392.98323 C 367.07565,412.13513 334.35532,396.45352 341.97846,364.07738 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1926" />
+  <path
+     d="M 355.54062,369.57254 L 377.857,330.85699 C 387.78669,322.26774 402.79184,326.85869 399.83526,343.70582 L 377.68794,382.59044 C 368.83812,391.99408 352.4715,388.41701 355.54062,369.57254 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1928" />
+  <path
+     d="M 397.63744,422.65849 C 398.65182,424.34913 406.42874,428.40665 406.42874,428.40665 L 491.29864,368.22004 L 482.1692,363.48626 L 397.63744,422.65849 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1930" />
+  <path
+     d="M 432.20656,362.66837 L 441.39368,347.57404 C 453.98635,340.15568 464.67958,351.9012 461.29056,360.44967 L 451.90427,376.56979 C 442.59582,385.52154 429.54058,376.33045 432.20656,362.66837 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1938" />
+  <path
+     d="M 439.29457,366.6592 L 446.15931,354.42365 C 450.38515,351.14333 455.12562,352.73213 453.86737,359.16622 L 447.15685,370.97271 C 443.39058,374.56406 437.98843,373.85609 439.29457,366.6592 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1940" />
+  <path
+     d="M 428.57765,428.98908 L 437.76477,413.89475 C 450.35744,406.47639 461.05066,418.22191 457.66165,426.77038 L 448.27535,442.8905 C 438.96691,451.84225 425.91166,442.65116 428.57765,428.98908 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1950" />
+  <path
+     d="M 435.66566,432.97991 L 442.5304,420.74436 C 446.75624,417.46404 451.49671,419.05284 450.23845,425.48693 L 443.52794,437.29342 C 439.76166,440.88477 434.35951,440.1768 435.66566,432.97991 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1952" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_110.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_110.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_110.svg	(revision 36424)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="753.12"
+   height="671.52002"
+   id="svg2">
+  <defs
+     id="defs11" />
+  <g
+     transform="matrix(1.093542,0,0,1.093542,-35.22419,-31.40766)"
+     id="g1885">
+    <path
+       d="M 71.985614,631.52918 C 60.553114,631.52918 49.989054,625.43 44.272794,615.52918 C 38.556554,605.62833 38.556554,593.43 44.272794,583.52918 L 348.84719,55.99085 C 354.56345,46.09002 365.12751,39.99084 376.56,39.99084 C 387.99251,39.99084 398.55659,46.09002 404.27283,55.99085 L 708.84723,583.52918 C 714.56347,593.43 714.56347,605.62833 708.84723,615.52918 C 703.13097,625.42999 692.56691,631.52918 681.13441,631.52918 L 71.985614,631.52918 z "
+       style="fill:white;fill-rule:evenodd;stroke:black;stroke-width:2"
+       id="path6" />
+    <path
+       d="M 71.985614,619.52918 C 64.840294,619.52918 58.237754,615.7172 54.665094,609.52918 C 51.092454,603.34114 51.092454,595.7172 54.665094,589.52918 L 359.23951,61.99086 C 362.81215,55.80282 369.41471,51.99084 376.56,51.99084 C 383.70533,51.99084 390.30787,55.80282 393.88053,61.99086 L 698.45493,589.52918 C 702.02757,595.7172 702.02757,603.34114 698.45493,609.52918 C 694.88227,615.7172 688.27973,619.52918 681.13441,619.52918 L 71.985614,619.52918 z M 141.2677,559.52918 L 376.56,151.99085 L 611.85233,559.52918 L 141.2677,559.52918 z "
+       style="fill:#c00;fill-rule:evenodd;stroke:none"
+       id="path8" />
+  </g>
+  <path
+     d="M 129.6312,573.29175 L 499.06867,361.33541 L 623.16406,573.34101 L 129.6312,573.29175 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1891" />
+  <path
+     d="M 318.00677,442.749 L 331.20052,435.19613 L 284.58474,354.01875 L 273.04171,360.88795 L 265.29317,377.47942 L 273.26687,389.26121 L 279.92295,374.51458 L 318.00677,442.749 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1924" />
+  <path
+     d="M 396.16128,398.38192 L 349.52795,425.02954 L 342.86604,415.25874 L 351.74858,350.4162 C 337.57861,328.27775 319.56909,350.68292 327.83381,361.34231 L 315.40636,367.23915 C 299.87049,330.7665 347.10255,310.776 364.79453,344.53558 C 366.02996,348.57885 365.64041,353.48807 364.9507,359.36101 C 364.58041,362.51407 359.69307,390.24115 358.09644,404.54581 L 388.97443,386.30967 L 396.16128,398.38192 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1906" />
+  <g
+     transform="matrix(0.528144,-0.849155,0.849155,0.528144,-153.8313,501.9049)"
+     id="g1893">
+    <path
+       d="M 397.63744,422.65849 C 398.65182,424.34913 406.42874,428.40665 406.42874,428.40665 L 491.29864,368.22004 L 482.1692,363.48626 L 397.63744,422.65849 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1930" />
+    <path
+       d="M 432.20656,362.66837 L 441.39368,347.57404 C 453.98635,340.15568 464.67958,351.9012 461.29056,360.44967 L 451.90427,376.56979 C 442.59582,385.52154 429.54058,376.33045 432.20656,362.66837 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1938" />
+    <path
+       d="M 439.29457,366.6592 L 446.15931,354.42365 C 450.38515,351.14333 455.12562,352.73213 453.86737,359.16622 L 447.15685,370.97271 C 443.39058,374.56406 437.98843,373.85609 439.29457,366.6592 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1940" />
+    <path
+       d="M 428.57765,428.98908 L 437.76477,413.89475 C 450.35744,406.47639 461.05066,418.22191 457.66165,426.77038 L 448.27535,442.8905 C 438.96691,451.84225 425.91166,442.65116 428.57765,428.98908 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1950" />
+    <path
+       d="M 435.66566,432.97991 L 442.5304,420.74436 C 446.75624,417.46404 451.49671,419.05284 450.23845,425.48693 L 443.52794,437.29342 C 439.76166,440.88477 434.35951,440.1768 435.66566,432.97991 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1952" />
+  </g>
+</svg>
+
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_206.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_206.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_206.svg	(revision 36424)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="600"
+   height="600"
+   id="svg1931">
+  <defs
+     id="defs1933" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.024827,0,0,1.024827,2.800107,-162.1289)"
+       id="g3715">
+      <path
+         d="M 181.10184,743.44678 L 179.34895,743.44678 L 176.2814,743.00855 L 172.77562,742.13211 L 169.70807,741.25567 L 166.64052,739.941 L 164.01118,738.18811 L 161.38185,735.997 L 4.9366117,579.55176 L 2.7455019,576.92243 L 0.99261404,574.2931 L -0.32205186,571.22554 L -2.0749397,565.09044 L -2.5131617,561.58466 L -2.5131617,340.28257 L -2.0749397,337.21501 L -1.1984958,333.70924 L -0.32205186,330.64168 L 0.99261404,328.01235 L 2.7455019,324.9448 L 4.9366117,322.31547 L 6.2512776,321.44633 L 160.50541,167.19219 L 161.38185,165.87753 L 166.64052,162.37175 L 169.70807,160.61886 L 172.77562,159.74242 L 176.2814,158.86598 L 179.34895,158.42775 L 400.65105,158.42775 L 403.7186,158.86598 L 407.22438,159.74242 L 410.29193,160.61886 L 412.92126,162.37175 L 415.98881,164.12464 L 418.61815,165.87753 L 419.49459,167.19219 L 573.74872,321.44633 L 575.06339,322.31547 L 577.2545,324.9448 L 579.00739,328.01235 L 580.32205,330.64168 L 581.1985,333.70924 L 582.06764,337.21501 L 582.50586,340.28257 L 582.50586,561.58466 L 582.06764,565.09044 L 580.32205,571.22554 L 579.00739,574.2931 L 577.2545,576.92243 L 575.06339,579.55176 L 418.61815,735.997 L 415.98881,738.18811 L 412.92126,739.941 L 410.29193,741.25567 L 407.22438,742.13211 L 403.7186,743.00855 L 400.65105,743.44678 L 181.10184,743.44678"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path32" />
+      <path
+         d="M 181.10184,743.44678 L 179.34895,743.44678 M 179.34895,743.44678 L 176.2814,743.00855 M 176.2814,743.00855 L 172.77562,742.13211 M 172.77562,742.13211 L 169.70807,741.25567 M 169.70807,741.25567 L 166.64052,739.941 M 166.64052,739.941 L 164.01118,738.18811 M 164.01118,738.18811 L 161.38185,735.997 M 161.38185,735.997 L 160.50541,735.12056 L 6.2512776,580.86643 L 4.9366117,579.55176 M 4.9366117,579.55176 L 2.7455019,576.92243 M 2.7455019,576.92243 L 0.99261404,574.2931 M 0.99261404,574.2931 L -0.32205186,571.22554 M -0.32205186,571.22554 L -1.1984958,568.15799 L -2.0749397,565.09044 M -2.0749397,565.09044 L -2.5131617,561.58466 M -2.5131617,561.58466 L -2.5131617,559.83177 L -2.5131617,342.03545 L -2.5131617,340.28257 M -2.5131617,340.28257 L -2.0749397,337.21501 M -2.0749397,337.21501 L -1.1984958,333.70924 M -1.1984958,333.70924 L -0.32205186,330.64168 M -0.32205186,330.64168 L 0.99261404,328.01235 M 0.99261404,328.01235 L 2.7455019,324.9448 M 2.7455019,324.9448 L 4.9366117,322.31547 M 4.9366117,322.31547 L 6.2512776,321.43902 M 6.2512776,321.43902 L 160.50541,167.18489 M 160.50541,167.18489 L 161.38185,165.87022 M 161.38185,165.87022 L 164.01118,164.11734 L 166.64052,162.36445 M 166.64052,162.36445 L 169.70807,160.61156 M 169.70807,160.61156 L 172.77562,159.73512 M 172.77562,159.73512 L 176.2814,158.85867 M 176.2814,158.85867 L 179.34895,158.42045 M 179.34895,158.42045 L 181.10184,158.42045 L 398.89816,158.42045 L 400.65105,158.42045 M 400.65105,158.42045 L 403.7186,158.85867 M 403.7186,158.85867 L 407.22438,159.73512 M 407.22438,159.73512 L 410.29193,160.61156 M 410.29193,160.61156 L 412.92126,162.36445 M 412.92126,162.36445 L 415.98881,164.11734 M 415.98881,164.11734 L 418.61815,165.87022 M 418.61815,165.87022 L 419.49459,167.18489 M 419.49459,167.18489 L 573.74872,321.43902 M 573.74872,321.43902 L 575.06339,322.31547 M 575.06339,322.31547 L 577.2545,324.9448 M 577.2545,324.9448 L 579.00739,328.01235 M 579.00739,328.01235 L 580.32205,330.64168 M 580.32205,330.64168 L 581.1985,333.70924 M 581.1985,333.70924 L 582.07494,337.21501 M 582.07494,337.21501 L 582.51316,340.28257 M 582.51316,340.28257 L 582.51316,342.03545 L 582.51316,559.83177 L 582.51316,561.58466 M 582.51316,561.58466 L 582.07494,565.09044 M 582.07494,565.09044 L 581.1985,568.15799 L 580.32205,571.22554 M 580.32205,571.22554 L 579.00739,574.2931 M 579.00739,574.2931 L 577.2545,576.92243 M 577.2545,576.92243 L 575.06339,579.55176 M 575.06339,579.55176 L 573.74872,580.86643 L 419.49459,735.12056 L 418.61815,735.997 M 418.61815,735.997 L 415.98881,738.18811 M 415.98881,738.18811 L 412.92126,739.941 M 412.92126,739.941 L 410.29193,741.25567 M 410.29193,741.25567 L 407.22438,742.13211 M 407.22438,742.13211 L 403.7186,743.00855 M 403.7186,743.00855 L 400.65105,743.44678 M 400.65105,743.44678 L 398.89816,743.44678 M 398.89816,743.44678 L 181.10184,743.44678"
+         style="stroke:black;stroke-width:0.43822196;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path34" />
+      <path
+         d="M 181.10184,714.0859 L 26.84771,559.83177 L 26.84771,342.03545 L 181.10184,187.78132 L 398.89816,187.78132 L 553.15229,342.03545 L 553.15229,559.83177 L 398.89816,714.0859 L 181.10184,714.0859"
+         style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path36" />
+      <path
+         d="M 66.287687,494.97492 L 95.210336,494.97492 C 91.711865,515.23538 104.70515,531.59567 125.44765,524.33579 C 132.74405,520.88845 137.84325,514.47418 138.09887,506.47663 C 137.63834,506.99726 142.74281,475.21111 125.88587,465.61405 C 101.82749,456.17037 78.492169,450.72911 70.231685,423.54474 C 65.520798,407.48391 66.309598,377.99887 78.996124,364.823 C 113.28699,326.3325 172.86327,353.31237 166.64052,407.33053 L 137.27964,407.33053 C 137.80551,395.84181 138.30216,384.49186 126.76232,378.40788 C 119.83111,374.63917 108.97051,375.47179 103.53655,381.47543 C 95.005832,389.48029 96.722202,402.21794 97.401446,412.58919 C 100.57855,431.22093 126.70389,431.27936 138.59431,439.32073 C 156.5395,448.71329 166.00509,463.83195 166.64052,484.01937 C 167.75798,511.78073 167.67034,531.12823 142.97653,547.99978 C 104.12085,568.80802 60.598105,541.45566 66.287687,494.97492 z M 212.2156,553.25844 L 212.2156,376.21677 L 177.59607,376.21677 L 177.59607,348.60878 L 276.19601,348.60878 L 276.19601,376.21677 L 241.57647,376.21677 L 241.57647,553.25844 L 212.2156,553.25844 z M 291.09555,505.93047 L 291.09555,392.8692 L 291.53378,386.7341 L 293.28666,381.03721 L 295.47777,375.34032 L 298.54533,369.64344 C 305.35968,357.87718 320.74857,348.36776 334.04131,347.29412 C 363.81849,343.54002 388.87748,366.10845 389.6955,395.93676 L 389.6955,505.93047 L 389.25727,508.99802 L 388.81905,515.13313 L 387.06616,521.26824 L 384.87506,526.96512 L 381.8075,532.22379 C 375.0954,543.78554 359.53122,553.7624 346.31152,554.57311 C 318.01699,558.84577 289.74437,534.87503 291.09555,505.93047 z M 320.0182,505.93047 L 320.0182,395.06031 L 320.45643,392.43098 L 320.89465,389.80165 L 322.20931,387.61054 L 323.08576,385.41943 C 327.85507,379.445 329.90741,377.77246 337.54708,376.21677 C 349.59819,374.79255 360.29811,383.66654 360.33463,395.93676 L 360.33463,507.24514 L 359.8964,509.43625 L 359.45818,512.06558 L 358.58174,514.25669 L 357.26707,516.4478 C 353.14778,522.40031 349.91225,524.16781 342.80575,525.65046 C 331.03949,527.49829 320.10585,517.68943 320.0182,505.93047 z M 418.61815,553.25844 L 418.61815,348.60878 C 459.17559,344.70131 510.79814,343.47428 513.71231,395.93676 C 519.51145,446.9604 502.65451,477.53369 447.97902,473.06382 L 447.97902,553.25844 L 418.61815,553.25844 z M 447.97902,376.21677 C 465.52981,374.66108 484.4683,374.27398 486.54255,395.93676 C 488.88704,433.11259 488.62411,449.56782 447.97902,445.45584 L 447.97902,376.21677"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path38" />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_215.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_215.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_215.svg	(revision 36424)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <path
+     d="M -176.30905 369.66949 A 309.2189 309.2189 0 1 1  -794.74686,369.66949 A 309.2189 309.2189 0 1 1  -176.30905 369.66949 z"
+     transform="matrix(1.061206,0,0,1.061206,877.7452,-29.79549)"
+     style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <path
+     d="M 151.78402,434.22108 L 234.28333,350.31583 L 233.90439,301.34152 L 173.17829,360.72091 C 171.16407,265.73848 252.9506,185.96417 329.76742,175.70399 L 322.96184,134.60623 C 188.08566,161.30323 133.76958,266.74319 131.1744,360.37317 L 69.871094,300.77246 L 69.592126,351.70146 L 151.78402,434.22108 z "
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path2806" />
+  <path
+     d="M 530.20519,509.211 L 416.17293,480.17877 L 374.05026,505.1649 L 455.92946,527.7341 C 374.87946,577.29837 264.77518,546.80204 217.23291,485.59886 L 185.15137,512.17172 C 276.12804,615.26176 394.57578,609.10108 476.77812,564.20025 L 456.14996,647.17507 L 500.29272,621.77315 L 530.20519,509.211 z "
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3753" />
+  <path
+     d="M 405.55939,145.06645 L 437.70705,258.25989 L 480.46496,282.14267 L 458.87191,200.00064 C 542.43053,245.20768 571.33979,355.73927 542.2813,427.58425 L 581.36981,441.98665 C 624.84436,311.54788 560.04447,212.20608 479.94026,163.66099 L 562.05521,139.83919 L 517.92343,114.41819 L 405.55939,145.06645 z "
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3755" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_220.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_220.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_220.svg	(revision 36424)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="980"
+   height="365"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <path
+     d="M 4.5362472,320.16013 L 4.5362472,43.421181 C 4.5362472,25.176914 32.356686,3.1718632 46.424925,3.1718632 L 931.67273,3.0504075 C 948.01652,3.0504075 975.4763,22.52568 975.4763,46.139109 L 975.64333,319.25386 C 975.64333,338.47209 952.47638,361.66392 929.86098,361.66392 L 48.463733,361.76186 C 27.293233,361.76186 4.5362472,336.7397 4.5362472,320.16013 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path5587" />
+  <path
+     d="M 122.11909,148.48886 L 122.11909,159.55373 L 88.968925,159.55373 L 88.968925,177.56793 L 117.01044,177.56793 L 117.01044,187.52991 L 89.171767,187.52991 L 89.171767,205.39773 L 122.11909,205.39773 L 122.11909,216.63566 L 78.124639,216.63566 L 78.124639,148.48886 L 122.11909,148.48886 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5483" />
+  <path
+     d="M 49.34375,20.59375 C 36.916786,20.59375 22.4375,33.953442 22.4375,47.90625 L 22.1875,183.71875 L 22.28125,183.71875 L 22.53125,318.34375 C 22.53125,332.29655 37.01054,345.65625 49.4375,345.65625 L 929.34375,345.65625 C 940.44802,345.65625 958.21875,335.927 958.21875,316.78125 L 957.96875,182.53125 L 957.875,182.53125 L 958.09375,49.46875 C 958.09375,30.322997 940.323,20.593751 929.21875,20.59375 L 49.34375,20.59375 z M 690.8125,48.75 C 693.30606,48.826795 696.0541,49.347732 699.09375,50.375 L 931.34375,183.15625 L 699.1875,315.875 C 679.73375,322.4495 671.66055,307.63786 672.4375,295.96875 L 686.9375,243.78125 L 51.09375,243.9375 L 50.125,182.53125 L 50.0625,182.53125 L 50.96875,122.3125 L 686.8125,122.46875 L 672.34375,70.28125 C 671.6882,60.435437 677.34729,48.335306 690.8125,48.75 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path4577" />
+  <path
+     d="M 134.9928,167.496 L 145.01298,167.496 L 145.11291,216.58034 L 134.91795,216.58034 C 134.91795,216.58034 135.22989,167.7331 134.9928,167.496 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5485" />
+  <path
+     d="M 134.57466,148.48886 L 134.57466,159.158 L 145.24381,159.158 L 145.24381,148.48886 L 134.57466,148.48886 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5487" />
+  <path
+     d="M 159.09507,167.57086 L 158.85171,216.58661 L 170.06363,216.58661 L 170.06363,182.91326 C 173.26511,179.22036 179.77483,173.66459 188.01404,182.91326 L 188.01404,216.58661 L 199.08879,216.50549 L 199.08879,181.80265 C 199.08879,174.27543 192.33986,167.51462 186.66653,167.51462 L 176.63362,167.59574 C 173.49831,167.59574 171.35351,170.2064 170.08494,171.81651 L 170.00382,167.50854 L 159.09507,167.57086 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5489" />
+  <path
+     d="M 211.96035,148.5349 L 211.96035,216.58034 L 222.86658,216.58034 L 222.86658,148.5349 L 211.96035,148.5349 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5491" />
+  <path
+     d="M 222.62322,172.87427 C 222.62322,170.08528 228.5326,167.50227 231.16481,167.50227 L 239.93722,167.50227 C 245.42622,167.50227 252.26601,173.49364 252.26601,180.54234 L 252.26601,204.01446 C 252.26601,209.24123 243.82745,217.7658 237.56629,217.7658 L 232.35027,217.7658 C 229.56739,217.7658 223.41541,214.45796 222.78546,212.10694 L 222.65682,199.96834 C 228.26507,206.93593 235.07026,209.98335 241.18747,200.55554 L 240.93383,183.77 C 237.82257,178.38114 229.23462,173.02502 222.84979,184.08388 L 222.62322,172.87427 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5493" />
+  <path
+     d="M 285.65625,166.53125 C 283.25408,166.53125 280.09905,166.625 277.65625,166.625 C 272.37355,166.625 264.78125,170.71907 264.78125,173.71875 L 271.3125,180.59375 L 272.84375,180.53125 C 272.84375,179.12456 275.39038,177.50001 276.59375,177.5 L 287,177.53125 C 289.18911,177.4788 290.96446,179.14574 290.9375,180.71875 L 290.9375,186.46875 L 273.90625,186.40625 C 256.47505,186.40625 259.39408,216.5625 273.21875,216.5625 L 286.6875,216.5625 C 288.21727,216.5625 290.45013,215.22517 291,213.15625 L 291,216.5625 L 301.9375,216.5625 L 301.9375,178.75 C 301.93774,171.6148 293.65391,166.53125 285.65625,166.53125 z M 276.78125,195.46875 L 290.96875,195.46875 L 290.96875,202.96875 C 290.37802,204.65452 288.28647,206.3125 286.78125,206.3125 L 276.78125,206.3125 C 271.18499,206.31249 271.6383,195.46875 276.78125,195.46875 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5501" />
+  <path
+     d="M 565.12938,166.51788 C 562.72721,166.51788 559.57218,166.61163 557.12938,166.61163 C 551.84668,166.61163 544.25438,170.7057 544.25438,173.70538 L 550.78563,180.58038 L 552.31688,180.51788 C 552.31688,179.11119 554.86351,177.48664 556.06688,177.48663 L 566.47313,177.51788 C 568.66224,177.46543 570.43759,179.13237 570.41063,180.70538 L 570.41063,186.45538 L 553.37938,186.39288 C 535.94818,186.39288 538.86721,216.54913 552.69188,216.54913 L 566.16063,216.54913 C 567.6904,216.54913 569.92326,215.2118 570.47313,213.14288 L 570.47313,216.54913 L 581.41063,216.54913 L 581.41063,178.73663 C 581.41087,171.60143 573.12704,166.51788 565.12938,166.51788 z M 556.25438,195.45538 L 570.44188,195.45538 L 570.44188,202.95538 C 569.85115,204.64115 567.7596,206.29913 566.25438,206.29913 L 556.25438,206.29913 C 550.65812,206.29912 551.11143,195.45538 556.25438,195.45538 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5506" />
+  <path
+     d="M 314.90625,148.5 L 314.90625,216.5625 L 326.15625,216.5625 L 326.15625,184.15625 C 328.32789,174.78401 344.60157,173.96986 345.09375,185.71875 L 345.09375,216.5625 L 354.96875,216.5625 L 354.91139,178.14639 C 353.95058,172.90886 348.9922,169.12132 343.83319,167.80772 C 340.54302,166.96997 336.93794,166.90514 333.5416,167.55149 C 330.86468,168.06093 328.31743,169.01218 326.15625,170.375 L 326.15625,148.5 L 314.90625,148.5 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5508" />
+  <path
+     d="M 368.64685,167.53271 L 368.64685,216.55136 L 379.89685,216.55136 L 379.89685,184.14511 C 382.06849,174.77287 398.34217,173.95872 398.83435,185.70761 L 398.83435,216.55136 L 408.70935,216.55136 L 408.65199,178.13525 C 407.69118,172.89772 402.7328,169.11018 397.57379,167.79658 C 394.28362,166.95883 390.67854,166.894 387.2822,167.54035 C 384.60528,168.04979 382.05803,169.00104 379.89685,170.36386 L 379.89685,167.53271 L 368.64685,167.53271 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5518" />
+  <path
+     d="M 425.61858,201.29172 L 418.95079,207.3199 C 422.56072,211.72501 425.70321,215.56809 433.87856,216.54913 C 437.36933,216.92591 440.69834,216.8174 443.9741,216.54913 C 452.70478,216.13924 458.51918,211.91513 460.60879,205.30699 C 461.30601,202.74487 461.14193,200.14218 460.72351,197.62062 C 458.67516,191.59534 453.68798,187.87207 448.94075,186.47867 C 448.94075,186.47867 436.32133,186.36395 436.32133,186.36395 C 433.16648,186.68178 430.72173,179.70665 436.40245,177.65899 C 438.83151,177.09314 441.32221,177.14372 443.85938,177.65899 C 448.22837,178.69361 450.93438,180.09779 453.3813,181.55954 L 460.1499,173.98789 C 456.03784,169.16784 450.23945,167.65245 444.01466,166.61933 C 440.98464,166.18312 438.63617,166.18509 436.11157,166.49765 C 427.20265,168.20612 423.89235,171.75293 422.17692,175.82344 C 421.38257,179.49433 421.8478,183.03926 422.08188,186.60731 C 423.19691,192.265 427.29377,194.77968 432.38718,196.24395 C 437.39671,197.04526 442.40623,197.57504 447.41576,197.62062 C 451.33895,197.86848 450.4502,204.44376 447.53048,205.42171 L 444.54771,206.33949 C 441.16159,207.22174 435.19789,207.0112 434.10801,206.45421 C 431.2782,204.42018 428.44839,202.91926 425.61858,201.29172 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5520" />
+  <path
+     d="M 483.99276,153.51834 L 483.91164,167.4711 L 490.86871,167.54685 L 490.94751,176.48807 L 484.12679,176.48807 L 484.12679,205.07755 C 484.39235,205.95921 484.85492,206.64386 486.19179,206.45421 L 491.02403,206.61645 L 490.99609,216.63025 L 481.83235,216.54913 C 479.54733,215.93686 473.11348,211.09465 473.11348,206.45421 L 473.11348,176.39705 L 467.88956,176.39705 L 468.03788,167.63334 L 473.11348,167.63334 L 473.11348,153.51834"
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5568" />
+  <path
+     d="M 526.25,167.21875 C 522.22369,167.2546 517.76451,168.40122 513.96875,171.5 L 513.96875,167.46875 L 502.875,167.46875 L 502.9375,216.5625 L 513.96875,216.5625 L 513.96875,184.8125 C 518.08454,178.32377 523.55586,175.01616 529.8125,180.375 L 537.34375,171.03125 C 536.06047,169.03719 531.53069,167.17174 526.25,167.21875 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5570" />
+  <path
+     d="M 678.81799,202.353 L 687.17342,209.32939 C 683.44378,212.8045 656.93466,228.17658 647.01868,202.43413 L 646.93755,181.66722 C 646.95886,170.72657 680.4335,154.49409 687.98462,184.34421 L 688.1063,186.53447 L 677.11445,186.49391 C 674.65117,171.83598 657.27545,177.16138 657.80773,186.45335 L 688.14687,186.53447 L 687.98463,196.43119 L 656.99652,196.43119 C 659.91603,208.74662 672.17544,207.82336 678.81799,202.353 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5581" />
+  <path
+     d="M 594.77695,216.54913 L 595.07293,157.42435 C 595.07293,143.0703 633.9344,144.12174 633.9344,157.65346 L 633.944,169.46743 C 633.944,170.81612 630.11911,175.26364 629.17212,175.26364 C 630.12706,175.26364 633.9629,178.22285 633.9629,180.45507 L 633.88672,207.38453 C 633.88672,209.75836 626.17342,216.54913 623.91352,216.54913 L 613.96911,216.54913 L 613.97871,206.49976 L 620.73557,206.55704 C 622.08741,206.55704 624.14264,204.35387 624.14264,202.10964 L 623.81816,183.93861 C 623.81816,182.52884 622.36307,180.3693 621.22229,180.3693 L 612.98607,180.48386 L 613.04334,170.55572 L 619.99007,170.44117 C 633.68494,156.7463 605.16039,155.07926 605.16039,163.73955 L 605.06503,216.49185 L 594.77695,216.54913 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5583" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_220;DE_267.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_220;DE_267.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_220;DE_267.svg	(revision 36424)
@@ -0,0 +1,180 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="780.02118"
+   height="665.05695"
+   id="svg2"
+   inkscape:version="0.47pre4 r22446"
+   sodipodi:docname="DE_220;DE_267.svg">
+  <metadata
+     id="metadata23">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="974"
+     id="namedview21"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:zoom="0.56428571"
+     inkscape:cx="480.39135"
+     inkscape:cy="244.30927"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 182.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="980 : 182.5 : 1"
+       inkscape:persp3d-origin="490 : 121.66667 : 1"
+       id="perspective25" />
+    <inkscape:perspective
+       id="perspective2873"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 362.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath2919">
+      <g
+         id="g2921">
+        <rect
+           y="-177.27849"
+           x="-8.8607597"
+           height="797.46838"
+           width="115.18987"
+           id="rect2923"
+           style="color:#000000;fill:#c3ffc1;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;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" />
+        <rect
+           style="color:#000000;fill:#c3ffc1;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;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="rect2925"
+           width="111.64557"
+           height="783.29114"
+           x="-283.54431"
+           y="-187.91139" />
+      </g>
+    </clipPath>
+  </defs>
+  <g
+     id="g2876"
+     transform="matrix(0.43153556,0,0,0.43153556,396.86653,14.991036)"
+     clip-path="none">
+    <path
+       id="path2866"
+       d="m 712.5,362.5 c 0,193.29966 -156.70034,350 -350,350 -193.29966,0 -350,-156.70034 -350,-350 0,-193.29966 156.70034,-350 350,-350 193.29966,0 350,156.70034 350,350 l 0,0 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" />
+    <path
+       id="path2868"
+       d="m 361.4483,27.3625 c -184.78586,0 -335.5,150.71414 -335.5,335.5 0,184.78586 150.71414,335.5 335.5,335.5 184.78586,0 335.5,-150.71414 335.5,-335.5 0,-184.78586 -150.71414,-335.5 -335.5,-335.5 z"
+       style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd" />
+    <rect
+       y="307.98154"
+       x="55.47493"
+       height="109.03694"
+       width="614.05017"
+       id="rect1324"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+  </g>
+  <g
+     id="g2881"
+     transform="matrix(0.80157793,0,0,0.80157793,-2.8345777,258.83525)">
+    <path
+       id="path5587"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 4.5362472,320.16013 0,-276.738949 c 0,-18.244267 27.8204388,-40.2493178 41.8886778,-40.2493178 L 931.67273,3.0504075 c 16.34379,0 43.80357,19.4752725 43.80357,43.0887015 l 0.16703,273.114751 c 0,19.21823 -23.16695,42.41006 -45.78235,42.41006 l -881.397247,0.0979 c -21.1705,0 -43.9274858,-25.02216 -43.9274858,-41.60173 z" />
+    <path
+       id="path5483"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 122.11909,148.48886 0,11.06487 -33.150165,0 0,18.0142 28.041515,0 0,9.96198 -27.838673,0 0,17.86782 32.947323,0 0,11.23793 -43.994451,0 0,-68.1468 43.994451,0 z" />
+    <path
+       id="path4577"
+       style="fill:#003399;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 49.34375,20.59375 c -12.426964,0 -26.90625,13.359692 -26.90625,27.3125 l -0.25,135.8125 0.09375,0 0.25,134.625 c 0,13.9528 14.47929,27.3125 26.90625,27.3125 l 879.90625,0 c 11.10427,0 28.875,-9.72925 28.875,-28.875 l -0.25,-134.25 -0.0937,0 0.21875,-133.0625 c 0,-19.145753 -17.77075,-28.874999 -28.875,-28.875 l -879.875,0 z M 690.8125,48.75 c 2.49356,0.07679 5.2416,0.597732 8.28125,1.625 l 232.25,132.78125 L 699.1875,315.875 c -19.45375,6.5745 -27.52695,-8.23714 -26.75,-19.90625 l 14.5,-52.1875 -635.84375,0.15625 -0.96875,-61.40625 -0.0625,0 0.90625,-60.21875 635.84375,0.15625 -14.46875,-52.1875 C 671.6882,60.435437 677.34729,48.335306 690.8125,48.75 z" />
+    <path
+       id="path5485"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 134.9928,167.496 10.02018,0 0.0999,49.08434 -10.19496,0 c 0,0 0.31194,-48.84724 0.0748,-49.08434 z" />
+    <path
+       id="path5487"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 134.57466,148.48886 0,10.66914 10.66915,0 0,-10.66914 -10.66915,0 z" />
+    <path
+       id="path5489"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 159.09507,167.57086 -0.24336,49.01575 11.21192,0 0,-33.67335 c 3.20148,-3.6929 9.7112,-9.24867 17.95041,0 l 0,33.67335 11.07475,-0.0811 0,-34.70284 c 0,-7.52722 -6.74893,-14.28803 -12.42226,-14.28803 l -10.03291,0.0811 c -3.13531,0 -5.28011,2.61066 -6.54868,4.22077 l -0.0811,-4.30797 -10.90875,0.0623 z" />
+    <path
+       id="path5491"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 211.96035,148.5349 0,68.04544 10.90623,0 0,-68.04544 -10.90623,0 z" />
+    <path
+       id="path5493"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 222.62322,172.87427 c 0,-2.78899 5.90938,-5.372 8.54159,-5.372 l 8.77241,0 c 5.489,0 12.32879,5.99137 12.32879,13.04007 l 0,23.47212 c 0,5.22677 -8.43856,13.75134 -14.69972,13.75134 l -5.21602,0 c -2.78288,0 -8.93486,-3.30784 -9.56481,-5.65886 l -0.12864,-12.1386 c 5.60825,6.96759 12.41344,10.01501 18.53065,0.5872 L 240.93383,183.77 c -3.11126,-5.38886 -11.69921,-10.74498 -18.08404,0.31388 l -0.22657,-11.20961 z" />
+    <path
+       id="path5501"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 285.65625,166.53125 c -2.40217,0 -5.5572,0.0937 -8,0.0937 -5.2827,0 -12.875,4.09407 -12.875,7.09375 l 6.53125,6.875 1.53125,-0.0625 c 0,-1.40669 2.54663,-3.03124 3.75,-3.03125 L 287,177.53125 c 2.18911,-0.0524 3.96446,1.61449 3.9375,3.1875 l 0,5.75 -17.03125,-0.0625 c -17.4312,0 -14.51217,30.15625 -0.6875,30.15625 l 13.46875,0 c 1.52977,0 3.76263,-1.33733 4.3125,-3.40625 l 0,3.40625 10.9375,0 0,-37.8125 c 2.4e-4,-7.1352 -8.28359,-12.21875 -16.28125,-12.21875 z m -8.875,28.9375 14.1875,0 0,7.5 c -0.59073,1.68577 -2.68228,3.34375 -4.1875,3.34375 l -10,0 c -5.59626,-1e-5 -5.14295,-10.84375 0,-10.84375 z" />
+    <path
+       id="path5506"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 565.12938,166.51788 c -2.40217,0 -5.5572,0.0937 -8,0.0937 -5.2827,0 -12.875,4.09407 -12.875,7.09375 l 6.53125,6.875 1.53125,-0.0625 c 0,-1.40669 2.54663,-3.03124 3.75,-3.03125 l 10.40625,0.0312 c 2.18911,-0.0524 3.96446,1.61449 3.9375,3.1875 l 0,5.75 -17.03125,-0.0625 c -17.4312,0 -14.51217,30.15625 -0.6875,30.15625 l 13.46875,0 c 1.52977,0 3.76263,-1.33733 4.3125,-3.40625 l 0,3.40625 10.9375,0 0,-37.8125 c 2.4e-4,-7.1352 -8.28359,-12.21875 -16.28125,-12.21875 z m -8.875,28.9375 14.1875,0 0,7.5 c -0.59073,1.68577 -2.68228,3.34375 -4.1875,3.34375 l -10,0 c -5.59626,-1e-5 -5.14295,-10.84375 0,-10.84375 z" />
+    <path
+       id="path5508"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 314.90625,148.5 0,68.0625 11.25,0 0,-32.40625 c 2.17164,-9.37224 18.44532,-10.18639 18.9375,1.5625 l 0,30.84375 9.875,0 -0.0574,-38.41611 c -0.96081,-5.23753 -5.91919,-9.02507 -11.0782,-10.33867 -3.29017,-0.83775 -6.89525,-0.90258 -10.29159,-0.25623 -2.67692,0.50944 -5.22417,1.46069 -7.38535,2.82351 l 0,-21.875 -11.25,0 z" />
+    <path
+       id="path5518"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 368.64685,167.53271 0,49.01865 11.25,0 0,-32.40625 c 2.17164,-9.37224 18.44532,-10.18639 18.9375,1.5625 l 0,30.84375 9.875,0 -0.0574,-38.41611 c -0.96081,-5.23753 -5.91919,-9.02507 -11.0782,-10.33867 -3.29017,-0.83775 -6.89525,-0.90258 -10.29159,-0.25623 -2.67692,0.50944 -5.22417,1.46069 -7.38535,2.82351 l 0,-2.83115 -11.25,0 z" />
+    <path
+       id="path5520"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 425.61858,201.29172 -6.66779,6.02818 c 3.60993,4.40511 6.75242,8.24819 14.92777,9.22923 3.49077,0.37678 6.81978,0.26827 10.09554,0 8.73068,-0.40989 14.54508,-4.634 16.63469,-11.24214 0.69722,-2.56212 0.53314,-5.16481 0.11472,-7.68637 -2.04835,-6.02528 -7.03553,-9.74855 -11.78276,-11.14195 0,0 -12.61942,-0.11472 -12.61942,-0.11472 -3.15485,0.31783 -5.5996,-6.6573 0.0811,-8.70496 2.42906,-0.56585 4.91976,-0.51527 7.45693,0 4.36899,1.03462 7.075,2.4388 9.52192,3.90055 l 6.7686,-7.57165 c -4.11206,-4.82005 -9.91045,-6.33544 -16.13524,-7.36856 -3.03002,-0.43621 -5.37849,-0.43424 -7.90309,-0.12168 -8.90892,1.70847 -12.21922,5.25528 -13.93465,9.32579 -0.79435,3.67089 -0.32912,7.21582 -0.095,10.78387 1.11503,5.65769 5.21189,8.17237 10.3053,9.63664 5.00953,0.80131 10.01905,1.33109 15.02858,1.37667 3.92319,0.24786 3.03444,6.82314 0.11472,7.80109 l -2.98277,0.91778 c -3.38612,0.88225 -9.34982,0.67171 -10.4397,0.11472 -2.82981,-2.03403 -5.65962,-3.53495 -8.48943,-5.16249 z" />
+    <path
+       id="path5568"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 483.99276,153.51834 -0.0811,13.95276 6.95707,0.0757 0.0788,8.94122 -6.82072,0 0,28.58948 c 0.26556,0.88166 0.72813,1.56631 2.065,1.37666 l 4.83224,0.16224 -0.0279,10.0138 -9.16374,-0.0811 c -2.28502,-0.61227 -8.71887,-5.45448 -8.71887,-10.09492 l 0,-30.05716 -5.22392,0 0.14832,-8.76371 5.0756,0 0,-14.115" />
+    <path
+       id="path5570"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 526.25,167.21875 c -4.02631,0.0359 -8.48549,1.18247 -12.28125,4.28125 l 0,-4.03125 -11.09375,0 0.0625,49.09375 11.03125,0 0,-31.75 c 4.11579,-6.48873 9.58711,-9.79634 15.84375,-4.4375 l 7.53125,-9.34375 c -1.28328,-1.99406 -5.81306,-3.85951 -11.09375,-3.8125 z" />
+    <path
+       id="path5581"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 678.81799,202.353 8.35543,6.97639 c -3.72964,3.47511 -30.23876,18.84719 -40.15474,-6.89526 l -0.0811,-20.76691 c 0.0213,-10.94065 33.49595,-27.17313 41.04707,2.67699 l 0.12168,2.19026 -10.99185,-0.0406 c -2.46328,-14.65793 -19.839,-9.33253 -19.30672,-0.0406 l 30.33914,0.0811 -0.16224,9.89672 -30.98811,0 c 2.91951,12.31543 15.17892,11.39217 21.82147,5.92181 z" />
+    <path
+       id="path5583"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 594.77695,216.54913 0.29598,-59.12478 c 0,-14.35405 38.86147,-13.30261 38.86147,0.22911 l 0.01,11.81397 c 0,1.34869 -3.82489,5.79621 -4.77188,5.79621 0.95494,0 4.79078,2.95921 4.79078,5.19143 l -0.0762,26.92946 c 0,2.37383 -7.7133,9.1646 -9.9732,9.1646 l -9.94441,0 0.01,-10.04937 6.75686,0.0573 c 1.35184,0 3.40707,-2.20317 3.40707,-4.4474 l -0.32448,-18.17103 c 0,-1.40977 -1.45509,-3.56931 -2.59587,-3.56931 l -8.23622,0.11456 0.0573,-9.92814 6.94673,-0.11455 c 13.69487,-13.69487 -14.82968,-15.36191 -14.82968,-6.70162 l -0.0954,52.7523 -10.28808,0.0573 z" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_237.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_237.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_237.svg	(revision 36424)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="725" width="725">
+
+<path style="fill:white; fill-rule:evenodd; stroke:black; stroke-width:2.5px" id="OuterCircle"
+      d="M 712.50000,362.50000 C 712.50000,555.79966 555.79966,712.50000 362.50000,712.50000 C 169.20034,712.50000 12.500000,555.79966 12.500000,362.50000 C 12.500000,169.20034 169.20034,12.500000 362.50000,12.500000 C 555.79966,12.500000 712.50000,169.20034 712.50000,362.50000 L 712.50000,362.50000 z " />
+<path style="fill:#003399; fill-opacity:1; fill-rule:evenodd;" id="BlueCircle"
+      d="M 361.44830,27.362500 C 176.66244,27.362500 25.948300,178.07664 25.948300,362.86250 C 25.948300,547.64836 176.66244,698.36250 361.44830,698.36250 C 546.23416,698.36250 696.94830,547.64836 696.94830,362.86250 C 696.94830,178.07664 546.23416,27.362500 361.44830,27.362500 z " />
+
+<g transform="matrix(0.612193, 0, 0, 0.612193, 54.87296, 171.1686)" id="BikeSymbol">
+
+ <circle r="161" cy="409" cx="215" style="fill:none; stroke:white; stroke-width:40px" id="FrontWheel" />
+
+ <circle r="161" cy="406" cx="790" style="fill:none; stroke:white; stroke-width:40px" id="RearWheel" />
+
+ <path style="fill:#ffffff;fill-rule:evenodd;stroke:none" id="Frame"
+       d="M 429.48437,15.467118 C 296.91790,16.759190 319.39993,1.7711686 248.07762,230.98455 C 189.97511,414.12586 196.30387,394.15363 196.00000,407.00000 C 195.78704,416.98022 203.84333,424.89312 213.96694,425.57043 C 235.02054,423.44166 226.16492,427.84741 299.15748,201.18078 C 565.86963,482.53640 465.80592,436.91194 609.34064,442.62576 C 797.98299,440.81686 813.31557,452.44550 815.55516,424.79518 C 815.29674,415.40613 810.90371,409.80716 681.43820,121.67535 L 693.84208,87.564675 L 736.48042,86.789433 L 734.92994,51.128275 L 576.00521,51.128275 C 561.96471,70.337063 581.69033,70.250925 652.75423,86.014190 L 640.35035,120.90010 L 323.27614,121.67535 C 344.63838,47.079788 332.57905,51.731243 428.70913,51.903518 L 429.48437,15.467118 z M 314.11415,159.91012 L 624.37752,159.36001 L 534.70921,400.30922 L 314.11415,159.91012 z M 661.78516,174.21304 L 573.76718,405.26023 L 766.30650,405.81034 L 661.78516,174.21304 z " />
+
+</g>
+
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_238.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_238.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_238.svg	(revision 36424)
@@ -0,0 +1,80 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zeichen 238.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.52137931"
+     inkscape:cx="362.5"
+     inkscape:cy="369.21296"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <path
+     d="M -176.30905 369.66949 A 309.2189 309.2189 0 1 1  -794.74686,369.66949 A 309.2189 309.2189 0 1 1  -176.30905 369.66949 z"
+     transform="matrix(1.061206,0,0,1.061206,877.7452,-29.79549)"
+     style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <g
+     id="layer1"
+     transform="matrix(1.275505,0,0,1.275505,106.644,128.9091)"
+     style="fill:white">
+    <g
+       id="g1892"
+       transform="translate(2.930158,-2.251167)"
+       style="fill:white">
+      <path
+         id="path1882"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 52.413594,38.866939 L 52.913594,62.616939 L 6.4448442,115.14819 L 18.069844,127.27319 L 71.101094,116.14819 L 94.319844,156.05444 C 84.123594,180.44952 92.866694,191.61419 98.382344,208.08569 L 40.788594,244.42944 L 40.788594,324.74194 L 61.507344,313.61694 L 61.007344,259.08569 L 108.97609,232.80444 L 153.91359,334.83569 L 149.97609,355.21072 L 170.60109,355.55442 L 173.63234,335.33569 L 137.75734,231.30444 C 171.91348,240.9542 206.38281,242.73849 241.31984,231.30444 L 275.13234,291.39819 L 240.72609,355.11692 L 264.53859,355.64822 L 300.41359,289.39819 L 292.81984,238.86694 L 345.35109,280.30444 L 333.72609,350.49192 L 356.97609,344.42944 L 368.06984,272.71069 L 338.28859,221.71069 C 342.53567,195.71256 337.04829,175.97794 325.97609,162.58569 L 336.56984,153.39819 C 354.39122,147.20989 365.19314,153.71935 371.41359,168.52319 L 377.41359,205.24194 L 407.69484,189.67944 L 399.60109,160.46069 C 389.57588,134.24426 359.48885,116.39751 325.78859,140.33569 C 325.78859,140.33569 315.08625,151.23801 313.81984,151.71069 C 295.95766,139.97227 271.36688,138.29839 248.22609,146.86694 L 244.16359,146.89819 C 251.46329,143.16506 251.87072,133.73733 249.38234,126.74194 L 213.53859,64.616939 C 199.79552,48.550019 166.87985,63.298099 173.13234,86.866939 L 177.81984,95.554439 L 146.19484,110.42944 C 130.20815,82.201549 113.44726,54.451059 68.569844,54.523189 L 52.413594,38.866939 z M 187.22609,113.58569 L 198.97609,133.30444 L 171.00734,147.21069 L 170.60109,147.21069 C 165.62405,141.82773 161.30591,135.77545 157.28859,129.39819 L 187.22609,113.58569 z " />
+      <path
+         id="path1884"
+         style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="translate(-40.44356,-589.0438)"
+         d="M 241.42858,621.29077 C 241.42858,634.21029 230.95524,644.68363 218.03572,644.68363 C 205.1162,644.68363 194.64286,634.21029 194.64286,621.29077 C 194.64286,608.37125 205.1162,597.89791 218.03572,597.89791 C 230.95524,597.89791 241.42858,608.37125 241.42858,621.29077 L 241.42858,621.29077 z " />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_239.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_239.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_239.svg	(revision 36424)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <path
+     d="M -176.30905,369.66949 C -176.30905,540.44638 -314.75107,678.88839 -485.52795,678.88839 C -656.30484,678.8884 -794.74686,540.44638 -794.74686,369.66949 C -794.74686,198.8926 -656.30484,60.450585 -485.52795,60.450585 C -314.75107,60.450585 -176.30905,198.8926 -176.30905,369.66949 z "
+     transform="matrix(1.061206,0,0,1.061206,877.7452,-29.79549)"
+     style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <g
+     transform="matrix(2.715837,0,0,2.715837,681.4279,-1419.765)"
+     style="fill:white"
+     id="g1953">
+    <path
+       d="M -162.2598,695.78989 L -151.80022,695.78989 L -151.80022,736.88109 C -151.80022,740.95037 -161.88625,740.37837 -161.88625,736.88109 L -162.2598,695.78989 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1914" />
+    <path
+       d="M -147.81755,695.78989 L -137.35797,695.78989 L -137.35797,745.84644 C -137.35797,751.90761 -147.444,751.70751 -147.444,745.84644 L -147.81755,695.78989 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1916" />
+    <path
+       d="M -185.87304,691.92858 C -182.89291,677.53426 -180.81137,664.83758 -160.64726,645.8354 L -160.64726,617.04368 L -164.21321,616.11917 C -167.51865,627.64359 -167.35037,638.24779 -164.18142,649.27418 C -165.83595,650.93571 -167.39427,652.69346 -168.96781,654.43599 C -172.345,652.75791 -172.69172,647.5109 -174.38276,642.79774 L -176.44766,629.77699 L -174.51484,618.89269 C -170.93552,610.87214 -168.6994,602.51101 -154.83609,597.23286 L -146.51555,597.10078 C -130.49677,599.87618 -127.4378,611.26281 -121.50676,622.48492 C -114.34317,636.03913 -105.89332,648.08749 -114.0258,652.83522 C -105.01372,658.70327 -100.29629,668.86597 -86.95101,670.40082 C -80.58147,671.05689 -77.26529,669.16851 -72.42308,668.55181 L -49.31046,696.5511 C -48.21252,703.73725 -50.86862,704.66668 -53.40469,705.79615 L -68.9892,687.17398 L -63.57425,714.64498 L -71.23443,714.64498 L -66.34776,743.70085 C -66.34776,746.48852 -75.72488,747.22387 -75.72488,744.22914 L -80.47948,717.4185 L -87.03502,717.34502 L -89.98867,748.05923 C -89.98867,751.21513 -98.44129,750.64254 -98.44129,748.05923 L -94.74327,682.8156 L -121.68598,657.98604 C -124.79226,652.49157 -122.53051,650.7863 -121.68598,648.08063 C -125.47029,636.76557 -131.8915,626.76896 -137.00635,616.11917 L -138.85536,616.11917 L -138.72329,645.96747 C -117.10373,664.65525 -116.34596,677.62217 -113.49751,692.32479 L -185.87304,691.92858 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1918" />
+    <path
+       d="M -135.36376,575.69151 C -135.36084,583.43019 -141.63345,589.70517 -149.37212,589.70517 C -157.1108,589.70517 -163.38341,583.43019 -163.38049,575.69151 C -163.38341,567.95284 -157.1108,561.67785 -149.37212,561.67785 C -141.63345,561.67785 -135.36084,567.95284 -135.36376,575.69151 L -135.36376,575.69151 z "
+       style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1922" />
+    <path
+       d="M -72.793169,650.58949 C -72.790561,657.5027 -78.39409,663.10836 -85.3073,663.10836 C -92.220518,663.10836 -97.824047,657.5027 -97.821439,650.58949 C -97.824047,643.67628 -92.220518,638.07063 -85.3073,638.07063 C -78.39409,638.07063 -72.790561,643.67628 -72.793169,650.58949 L -72.793169,650.58949 z "
+       style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1924" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_240.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_240.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_240.svg	(revision 36424)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <path
+     d="M -176.30905,369.66949 C -176.30905,540.44638 -314.75107,678.88839 -485.52795,678.88839 C -656.30484,678.8884 -794.74686,540.44638 -794.74686,369.66949 C -794.74686,198.8926 -656.30484,60.450585 -485.52795,60.450585 C -314.75107,60.450585 -176.30905,198.8926 -176.30905,369.66949 z "
+     transform="matrix(1.061206,0,0,1.061206,877.7452,-29.79549)"
+     style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <g
+     transform="matrix(1.486189,0,0,1.486189,540.6877,-765.1232)"
+     style="fill:white"
+     id="g1953">
+    <path
+       d="M -162.2598,695.78989 L -151.80022,695.78989 L -151.80022,736.88109 C -151.80022,740.95037 -161.88625,740.37837 -161.88625,736.88109 L -162.2598,695.78989 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1914" />
+    <path
+       d="M -147.81755,695.78989 L -137.35797,695.78989 L -137.35797,745.84644 C -137.35797,751.90761 -147.444,751.70751 -147.444,745.84644 L -147.81755,695.78989 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1916" />
+    <path
+       d="M -185.87304,691.92858 C -182.89291,677.53426 -180.81137,664.83758 -160.64726,645.8354 L -160.64726,617.04368 L -164.21321,616.11917 C -164.21321,616.11917 -164.18142,649.27418 -164.18142,649.27418 C -165.83595,650.93571 -167.39427,652.69346 -168.96781,654.43599 C -172.345,652.75791 -172.69172,647.5109 -174.38276,642.79774 L -176.44766,629.77699 L -174.51484,618.89269 C -170.93552,610.87214 -168.6994,602.51101 -154.83609,597.23286 L -146.51555,597.10078 C -130.49677,599.87618 -127.4378,611.26281 -121.50676,622.48492 C -114.34317,636.03913 -105.89332,648.08749 -114.0258,652.83522 C -105.01372,658.70327 -100.29629,668.86597 -86.95101,670.40082 C -80.58147,671.05689 -77.26529,669.16851 -72.42308,668.55181 L -49.31046,696.5511 C -48.21252,703.73725 -50.86862,704.66668 -53.40469,705.79615 L -68.9892,687.17398 L -63.57425,714.64498 L -71.23443,714.64498 L -66.34776,743.70085 C -66.34776,746.48852 -75.72488,747.22387 -75.72488,744.22914 L -80.47948,717.4185 L -87.03502,717.34502 L -89.98867,748.05923 C -89.98867,751.21513 -98.44129,750.64254 -98.44129,748.05923 L -94.74327,682.8156 L -121.68598,657.98604 C -124.79226,652.49157 -122.53051,650.7863 -121.68598,648.08063 C -125.47029,636.76557 -131.8915,626.76896 -137.00635,616.11917 L -138.85536,616.11917 L -138.72329,645.96747 C -117.10373,664.65525 -116.34596,677.62217 -113.49751,692.32479 L -185.87304,691.92858 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1918" />
+    <path
+       d="M -135.36376,575.69151 C -135.36084,583.43019 -141.63345,589.70517 -149.37212,589.70517 C -157.1108,589.70517 -163.38341,583.43019 -163.38049,575.69151 C -163.38341,567.95284 -157.1108,561.67785 -149.37212,561.67785 C -141.63345,561.67785 -135.36084,567.95284 -135.36376,575.69151 L -135.36376,575.69151 z "
+       style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1922" />
+    <path
+       d="M -72.793169,650.58949 C -72.790561,657.5027 -78.39409,663.10836 -85.3073,663.10836 C -92.220518,663.10836 -97.824047,657.5027 -97.821439,650.58949 C -97.824047,643.67628 -92.220518,638.07063 -85.3073,638.07063 C -78.39409,638.07063 -72.790561,643.67628 -72.793169,650.58949 L -72.793169,650.58949 z "
+       style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1924" />
+  </g>
+  <g
+     transform="matrix(0.376839,0,0,0.376839,172.4891,407.3011)"
+     id="BikeSymbol">
+    <circle
+       cx="215"
+       cy="409"
+       r="161"
+       style="fill:none;stroke:white;stroke-width:40px"
+       id="FrontWheel" />
+    <circle
+       cx="790"
+       cy="406"
+       r="161"
+       style="fill:none;stroke:white;stroke-width:40px"
+       id="RearWheel" />
+    <path
+       d="M 429.48437,15.467118 C 296.9179,16.75919 319.39993,1.7711686 248.07762,230.98455 C 189.97511,414.12586 196.30387,394.15363 196,407 C 195.78704,416.98022 203.84333,424.89312 213.96694,425.57043 C 235.02054,423.44166 226.16492,427.84741 299.15748,201.18078 C 565.86963,482.5364 465.80592,436.91194 609.34064,442.62576 C 797.98299,440.81686 813.31557,452.4455 815.55516,424.79518 C 815.29674,415.40613 810.90371,409.80716 681.4382,121.67535 L 693.84208,87.564675 L 736.48042,86.789433 L 734.92994,51.128275 L 576.00521,51.128275 C 561.96471,70.337063 581.69033,70.250925 652.75423,86.01419 L 640.35035,120.9001 L 323.27614,121.67535 C 344.63838,47.079788 332.57905,51.731243 428.70913,51.903518 L 429.48437,15.467118 z M 314.11415,159.91012 L 624.37752,159.36001 L 534.70921,400.30922 L 314.11415,159.91012 z M 661.78516,174.21304 L 573.76718,405.26023 L 766.3065,405.81034 L 661.78516,174.21304 z "
+       style="fill:white;fill-rule:evenodd;stroke:none"
+       id="Frame" />
+  </g>
+  <path
+     d="M 69.443918,373.94123 L 69.443918,385.91043 L 654.5795,385.91043 L 654.5795,374.05415 L 69.443918,373.94123 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path2006" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_241.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_241.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_241.svg	(revision 36424)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <path
+     d="M -176.30905,369.66949 C -176.30905,540.44638 -314.75107,678.88839 -485.52795,678.88839 C -656.30484,678.8884 -794.74686,540.44638 -794.74686,369.66949 C -794.74686,198.8926 -656.30484,60.450585 -485.52795,60.450585 C -314.75107,60.450585 -176.30905,198.8926 -176.30905,369.66949 z "
+     transform="matrix(1.061206,0,0,1.061206,877.7452,-29.79549)"
+     style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <g
+     transform="matrix(1.554536,0,0,1.554536,726.8321,-657.4181)"
+     style="fill:white"
+     id="g1953">
+    <path
+       d="M -162.2598,695.78989 L -151.80022,695.78989 L -151.80022,736.88109 C -151.80022,740.95037 -161.88625,740.37837 -161.88625,736.88109 L -162.2598,695.78989 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1914" />
+    <path
+       d="M -147.81755,695.78989 L -137.35797,695.78989 L -137.35797,745.84644 C -137.35797,751.90761 -147.444,751.70751 -147.444,745.84644 L -147.81755,695.78989 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1916" />
+    <path
+       d="M -185.87304,691.92858 C -182.89291,677.53426 -180.81137,664.83758 -160.64726,645.8354 L -160.64726,617.04368 L -164.21321,616.11917 C -164.21321,616.11917 -164.18142,649.27418 -164.18142,649.27418 C -165.83595,650.93571 -167.39427,652.69346 -168.96781,654.43599 C -172.345,652.75791 -172.69172,647.5109 -174.38276,642.79774 L -176.44766,629.77699 L -174.51484,618.89269 C -170.93552,610.87214 -168.6994,602.51101 -154.83609,597.23286 L -146.51555,597.10078 C -130.49677,599.87618 -127.4378,611.26281 -121.50676,622.48492 C -114.34317,636.03913 -105.89332,648.08749 -114.0258,652.83522 C -105.01372,658.70327 -100.29629,668.86597 -86.95101,670.40082 C -80.58147,671.05689 -77.26529,669.16851 -72.42308,668.55181 L -49.31046,696.5511 C -48.21252,703.73725 -50.86862,704.66668 -53.40469,705.79615 L -68.9892,687.17398 L -63.57425,714.64498 L -71.23443,714.64498 L -66.34776,743.70085 C -66.34776,746.48852 -75.72488,747.22387 -75.72488,744.22914 L -80.47948,717.4185 L -87.03502,717.34502 L -89.98867,748.05923 C -89.98867,751.21513 -98.44129,750.64254 -98.44129,748.05923 L -94.74327,682.8156 L -121.68598,657.98604 C -124.79226,652.49157 -122.53051,650.7863 -121.68598,648.08063 C -125.47029,636.76557 -131.8915,626.76896 -137.00635,616.11917 L -138.85536,616.11917 L -138.72329,645.96747 C -117.10373,664.65525 -116.34596,677.62217 -113.49751,692.32479 L -185.87304,691.92858 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1918" />
+    <path
+       d="M -135.36376,575.69151 C -135.36084,583.43019 -141.63345,589.70517 -149.37212,589.70517 C -157.1108,589.70517 -163.38341,583.43019 -163.38049,575.69151 C -163.38341,567.95284 -157.1108,561.67785 -149.37212,561.67785 C -141.63345,561.67785 -135.36084,567.95284 -135.36376,575.69151 L -135.36376,575.69151 z "
+       style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1922" />
+    <path
+       d="M -72.793169,650.58949 C -72.790561,657.5027 -78.39409,663.10836 -85.3073,663.10836 C -92.220518,663.10836 -97.824047,657.5027 -97.821439,650.58949 C -97.824047,643.67628 -92.220518,638.07063 -85.3073,638.07063 C -78.39409,638.07063 -72.790561,643.67628 -72.793169,650.58949 L -72.793169,650.58949 z "
+       style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1924" />
+  </g>
+  <g
+     transform="matrix(0.326707,0,0,0.326707,41.57991,281.5051)"
+     id="BikeSymbol">
+    <circle
+       cx="215"
+       cy="409"
+       r="161"
+       style="fill:none;stroke:white;stroke-width:40px"
+       id="FrontWheel" />
+    <circle
+       cx="790"
+       cy="406"
+       r="161"
+       style="fill:none;stroke:white;stroke-width:40px"
+       id="RearWheel" />
+    <path
+       d="M 429.48437,15.467118 C 296.9179,16.75919 319.39993,1.7711686 248.07762,230.98455 C 189.97511,414.12586 196.30387,394.15363 196,407 C 195.78704,416.98022 203.84333,424.89312 213.96694,425.57043 C 235.02054,423.44166 226.16492,427.84741 299.15748,201.18078 C 565.86963,482.5364 465.80592,436.91194 609.34064,442.62576 C 797.98299,440.81686 813.31557,452.4455 815.55516,424.79518 C 815.29674,415.40613 810.90371,409.80716 681.4382,121.67535 L 693.84208,87.564675 L 736.48042,86.789433 L 734.92994,51.128275 L 576.00521,51.128275 C 561.96471,70.337063 581.69033,70.250925 652.75423,86.01419 L 640.35035,120.9001 L 323.27614,121.67535 C 344.63838,47.079788 332.57905,51.731243 428.70913,51.903518 L 429.48437,15.467118 z M 314.11415,159.91012 L 624.37752,159.36001 L 534.70921,400.30922 L 314.11415,159.91012 z M 661.78516,174.21304 L 573.76718,405.26023 L 766.3065,405.81034 L 661.78516,174.21304 z "
+       style="fill:white;fill-rule:evenodd;stroke:none"
+       id="Frame" />
+  </g>
+  <path
+     d="M 372.02711,661.99362 L 383.99631,661.99362 L 383.99631,76.858039 L 372.14003,76.858039 L 372.02711,661.99362 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path2006" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_242.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_242.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_242.svg	(revision 36424)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="760"
+   height="760"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <path
+       d="M 45.824811,3.3417118 L 713.26505,3.3417118 C 730.52936,3.3417118 757.66931,28.70753 757.66931,47.945769 L 757.66931,711.00841 C 757.66931,728.56947 731.4376,756.65818 710.65713,756.65818 L 48.432727,756.65818 C 31.534484,756.65818 3.7545745,731.36166 3.7545745,718.73902 L 3.7545745,46.269253 C 3.7545745,27.174554 26.491429,3.3417118 45.824811,3.3417118 z "
+       style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:2.01808;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2841" />
+    <path
+       d="M 646.32872 332.88788 A 245.97542 245.97542 0 1 1  154.37788,332.88788 A 245.97542 245.97542 0 1 1  646.32872 332.88788 z"
+       transform="matrix(0.972803,0,0,0.972803,-9.464893,-15.13243)"
+       style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1882" />
+    <g
+       transform="matrix(1.944179,0,0,1.944179,608.3719,-965.5591)"
+       style="opacity:1;fill:white;fill-opacity:1"
+       id="g1953">
+      <path
+         d="M -162.2598,695.78989 L -151.80022,695.78989 L -151.80022,736.88109 C -151.80022,740.95037 -161.88625,740.37837 -161.88625,736.88109 L -162.2598,695.78989 z "
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1914" />
+      <path
+         d="M -147.81755,695.78989 L -137.35797,695.78989 L -137.35797,745.84644 C -137.35797,751.90761 -147.444,751.70751 -147.444,745.84644 L -147.81755,695.78989 z "
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1916" />
+      <path
+         d="M -185.87304,691.92858 C -182.89291,677.53426 -180.81137,664.83758 -160.64726,645.8354 L -160.64726,617.04368 L -164.21321,616.11917 C -164.21321,616.11917 -164.18142,649.27418 -164.18142,649.27418 C -165.83595,650.93571 -167.39427,652.69346 -168.96781,654.43599 C -172.345,652.75791 -172.69172,647.5109 -174.38276,642.79774 L -174.51484,618.89269 C -170.93552,610.87214 -168.6994,602.51101 -154.83609,597.23286 L -146.51555,597.10078 C -130.49677,599.87618 -127.4378,611.26281 -121.50676,622.48492 C -114.34317,636.03913 -105.89332,648.08749 -114.0258,652.83522 C -105.01372,658.70327 -100.29629,668.86597 -86.95101,670.40082 C -80.58147,671.05689 -77.26529,669.16851 -72.42308,668.55181 L -49.31046,696.5511 C -48.21252,703.73725 -50.86862,704.66668 -53.40469,705.79615 L -68.9892,687.17398 L -63.57425,714.64498 L -71.23443,714.64498 L -66.34776,743.70085 C -66.34776,746.48852 -75.72488,747.22387 -75.72488,744.22914 L -80.47948,717.4185 L -87.03502,717.34502 L -89.98867,748.05923 C -89.98867,751.21513 -98.44129,750.64254 -98.44129,748.05923 L -94.74327,682.8156 L -121.68598,657.98604 C -124.79226,652.49157 -122.53051,650.7863 -121.68598,648.08063 C -125.47029,636.76557 -131.8915,626.76896 -137.00635,616.11917 L -138.85536,616.11917 L -138.72329,645.96747 C -117.10373,664.65525 -116.34596,677.62217 -113.49751,692.32479 L -185.87304,691.92858 z "
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1918" />
+      <path
+         d="M -135.36376,575.69151 C -135.36084,583.43019 -141.63345,589.70517 -149.37212,589.70517 C -157.1108,589.70517 -163.38341,583.43019 -163.38049,575.69151 C -163.38341,567.95284 -157.1108,561.67785 -149.37212,561.67785 C -141.63345,561.67785 -135.36084,567.95284 -135.36376,575.69151 L -135.36376,575.69151 z "
+         style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1922" />
+      <path
+         d="M -72.793169,650.58949 C -72.790561,657.5027 -78.39409,663.10836 -85.3073,663.10836 C -92.220518,663.10836 -97.824047,657.5027 -97.821439,650.58949 C -97.824047,643.67628 -92.220518,638.07063 -85.3073,638.07063 C -78.39409,638.07063 -72.790561,643.67628 -72.793169,650.58949 L -72.793169,650.58949 z "
+         style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1924" />
+    </g>
+    <path
+       d="M 25.443662,52.632534 L 25.443662,710.96204 C 25.443662,726.77315 40.985837,735.15473 52.918434,735.15473 L 710.27844,734.90301 C 721.49547,734.90301 734.94337,721.48607 734.94337,708.97952 L 734.94337,54.088023 C 735.11544,34.671252 719.24918,24.683563 708.05602,24.683563 L 53.853079,24.935273 C 34.160919,24.935273 25.443662,39.076817 25.443662,52.632534 z "
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:17;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path1934" />
+    <path
+       d="M 206.44455,582.56676 L 273.73981,582.68617 L 273.6204,596.45443 L 225.57246,673.5137 L 273.6204,673.5137 L 273.6204,689.607 L 204.51276,689.607 L 204.56903,674.88346 L 252.04806,598.51252 L 206.41642,598.57565 L 206.44455,582.56676 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path7280" />
+    <path
+       d="M 287.48682,609.90636 L 287.60623,662.00045 C 287.60623,674.59063 304.49987,691.72134 324.70295,691.72134 C 345.17066,691.72134 363.53455,675.3509 363.53455,661.86728 L 363.41514,610.00514 C 363.41514,595.2185 344.32269,582.08913 324.84362,582.08913 C 301.47127,582.08913 287.48682,596.13762 287.48682,609.90636 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path7282" />
+    <path
+       d="M 383.45292,582.34395 L 383.66535,689.69827 L 400.64903,689.69827 L 400.64903,616.06861 L 447.09877,689.69827 L 463.65757,689.69827 L 463.57667,582.18216 L 446.64365,582.39459 L 446.46146,657.62246 L 399.98146,582.39459 L 383.45292,582.34395 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path7284" />
+    <path
+       d="M 555.63637,582.47503 L 486.54913,582.57628 L 486.46777,689.74891 L 555.49489,689.74891 L 555.49489,673.4328 L 503.66387,673.4328 L 503.57257,643.5116 L 547.54408,643.62279 L 547.54408,628.50036 L 503.64307,628.50036 L 503.54182,599.57173 L 555.5342,599.57173 L 555.63637,582.47503 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path7286" />
+    <path
+       d="M 304.64048,615.61663 L 304.80935,657.32738 C 304.74278,668.35518 314.01652,674.18264 324.79174,673.87658 C 337.45615,673.87658 346.26464,668.33617 346.26464,657.34462 L 346.35123,615.61663 C 346.35123,606.97682 336.72076,599.53681 324.79174,599.52 C 313.8953,599.52 304.35411,605.74946 304.64048,615.61663 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path7303" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_244.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_244.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_244.svg	(revision 36424)
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="760"
+   height="760"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <path
+       d="M 45.824811,3.3417118 L 713.26505,3.3417118 C 730.52936,3.3417118 757.66931,28.70753 757.66931,47.945769 L 757.66931,711.00841 C 757.66931,728.56947 731.4376,756.65818 710.65713,756.65818 L 48.432727,756.65818 C 31.534484,756.65818 3.7545745,731.36166 3.7545745,718.73902 L 3.7545745,46.269253 C 3.7545745,27.174554 26.491429,3.3417118 45.824811,3.3417118 z "
+       style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:2.01808;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2841" />
+    <path
+       d="M 646.32872 332.88788 A 245.97542 245.97542 0 1 1  154.37788,332.88788 A 245.97542 245.97542 0 1 1  646.32872 332.88788 z"
+       transform="matrix(0.972803,0,0,0.972803,-8.45365,-4.008762)"
+       style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1882" />
+    <path
+       d="M 25.443662,52.632534 L 25.443662,710.96204 C 25.443662,726.77315 40.985837,735.15473 52.918434,735.15473 L 710.27844,734.90301 C 721.49547,734.90301 734.94337,721.48607 734.94337,708.97952 L 734.94337,54.088023 C 735.11544,34.671252 719.24918,24.683563 708.05602,24.683563 L 53.853079,24.935273 C 34.160919,24.935273 25.443662,39.076817 25.443662,52.632534 z "
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:17;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path1934" />
+    <g
+       id="g12681">
+      <circle
+         cx="215"
+         cy="409"
+         r="161"
+         transform="matrix(0.404263,0,0,0.404263,177.6268,199.8607)"
+         style="fill:none;stroke:white;stroke-width:40px;stroke-opacity:1"
+         id="circle11777" />
+      <circle
+         cx="790"
+         cy="406"
+         r="161"
+         transform="matrix(0.404263,0,0,0.404263,177.6268,199.8607)"
+         style="fill:none;stroke:white;stroke-width:40px;stroke-opacity:1"
+         id="circle11779" />
+      <path
+         d="M 351.25144,206.11348 C 297.65972,206.63582 306.74837,200.57672 277.9154,293.23921 C 254.42671,367.27646 256.98519,359.20243 256.86235,364.39574 C 256.77626,368.43037 260.03312,371.62927 264.12572,371.90308 C 272.63691,371.0425 269.05691,372.82358 298.5651,281.19065 C 406.38695,394.93231 365.9349,376.48803 423.96068,378.79792 C 500.2218,378.06665 506.42019,382.76768 507.32558,371.58967 C 507.22111,367.79403 505.44517,365.53057 453.10705,249.04954 L 458.12148,235.25986 L 475.35858,234.94646 L 474.73178,220.52997 L 410.48439,220.52997 C 404.80834,228.29537 412.78268,228.26055 441.51118,234.63305 L 436.49675,248.73614 L 308.31538,249.04954 C 316.95135,218.89332 312.0762,220.77373 350.93804,220.84337 L 351.25144,206.11348 z M 304.61153,264.50644 L 430.03953,264.28406 L 393.78995,361.69091 L 304.61153,264.50644 z M 445.16205,270.28859 L 409.57964,363.69242 L 487.41616,363.91481 L 445.16205,270.28859 z "
+         style="fill:white;fill-rule:evenodd;stroke:white;stroke-opacity:1"
+         id="path11781" />
+    </g>
+    <path
+       d="M 143.31806,624.86568 C 140.84723,624.86568 137.60202,624.96211 135.08939,624.96211 C 129.65569,624.96211 121.84637,629.17321 121.84637,632.25863 L 128.56431,639.33015 L 130.13933,639.26586 C 130.13933,637.81896 132.75875,636.14798 133.99652,636.14797 L 144.70022,636.18011 C 146.95191,636.12616 148.77801,637.84075 148.75028,639.45872 L 148.75028,645.37308 L 131.2322,645.30879 C 113.30274,645.30879 116.30521,676.32704 130.52505,676.32704 L 144.37879,676.32704 C 145.95229,676.32704 148.24897,674.95152 148.81456,672.82348 L 148.81456,676.32704 L 160.0647,676.32704 L 160.0647,637.4337 C 160.06495,630.09454 151.54433,624.86568 143.31806,624.86568 z M 134.18938,654.63034 L 148.78242,654.63034 L 148.78242,662.34478 C 148.1748,664.07866 146.02347,665.78405 144.47522,665.78405 L 134.18938,665.78405 C 128.43315,665.78405 128.89942,654.63034 134.18938,654.63034 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12744" />
+    <path
+       d="M 332.53609,625.03701 C 330.06526,625.03701 326.82005,625.13344 324.30742,625.13344 C 318.87372,625.13344 311.0644,629.34454 311.0644,632.42996 L 317.78234,639.50148 L 319.35736,639.43719 C 319.35736,637.99029 321.97678,636.31931 323.21455,636.3193 L 333.91825,636.35144 C 336.16994,636.29749 337.99604,638.01208 337.96831,639.63005 L 337.96831,645.54441 L 320.45023,645.48012 C 302.52077,645.48012 305.52324,676.49837 319.74308,676.49837 L 333.59682,676.49837 C 335.17032,676.49837 337.467,675.12285 338.03259,672.99481 L 338.03259,676.49837 L 349.28273,676.49837 L 349.28273,637.60503 C 349.28298,630.26587 340.76236,625.03701 332.53609,625.03701 z M 323.40741,654.80167 L 338.00045,654.80167 L 338.00045,662.51611 C 337.39283,664.24999 335.2415,665.95538 333.69325,665.95538 L 323.40741,665.95538 C 317.65118,665.95538 318.11745,654.80167 323.40741,654.80167 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5501" />
+    <path
+       d="M 564.12879,624.86568 C 561.65796,624.86568 558.41275,624.96211 555.90012,624.96211 C 550.46642,624.96211 542.6571,629.17321 542.6571,632.25863 L 549.37504,639.33015 L 550.95006,639.26586 C 550.95006,637.81896 553.56948,636.14798 554.80725,636.14797 L 565.51095,636.18011 C 567.76264,636.12616 569.58874,637.84075 569.56101,639.45872 L 569.56101,645.37308 L 552.04293,645.30879 C 534.11347,645.30879 537.11594,676.32704 551.33578,676.32704 L 565.18952,676.32704 C 566.76302,676.32704 569.0597,674.95152 569.62529,672.82348 L 569.62529,676.32704 L 580.87543,676.32704 L 580.87543,637.4337 C 580.87568,630.09454 572.35506,624.86568 564.12879,624.86568 z M 555.00011,654.63034 L 569.59315,654.63034 L 569.59315,662.34478 C 568.98553,664.07866 566.8342,665.78405 565.28595,665.78405 L 555.00011,665.78405 C 549.24388,665.78405 549.71015,654.63034 555.00011,654.63034 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12746" />
+    <path
+       d="M 682.11348,661.67921 L 690.68638,668.83718 C 686.85966,672.40273 659.66057,688.17493 649.4865,661.76242 L 649.40326,640.45502 C 649.42512,629.22961 683.77103,612.57464 691.51869,643.20169 L 691.64354,645.44895 L 680.3656,645.40734 C 677.8382,630.3679 660.01023,635.8319 660.55637,645.36572 L 691.68516,645.44895 L 691.5187,655.60326 L 659.72404,655.60326 C 662.71954,668.23922 675.29803,667.29199 682.11348,661.67921 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12748" />
+    <path
+       d="M 595.71312,676.39459 L 596.01976,615.13992 C 596.01976,600.26878 636.28118,601.3581 636.28118,615.37729 L 636.29113,627.61684 C 636.29113,629.01412 632.32845,633.62186 631.34735,633.62186 C 632.33669,633.62186 636.31071,636.68767 636.31071,639.0003 L 636.23178,666.89984 C 636.23178,669.35926 628.24062,676.39459 625.89931,676.39459 L 615.59666,676.39459 L 615.60661,665.98327 L 622.60688,666.04253 C 624.00741,666.04253 626.13668,663.76007 626.13668,661.43492 L 625.80051,642.60933 C 625.80051,641.14878 624.29301,638.91144 623.11113,638.91144 L 614.57821,639.03013 L 614.63754,628.74434 L 621.83452,628.62566 C 636.02274,614.43745 606.47061,612.71035 606.47061,621.68262 L 606.37182,676.33533 L 595.71312,676.39459 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12750" />
+    <path
+       d="M 421.04006,660.0939 L 414.17091,666.30414 C 417.88985,670.84227 421.12724,674.80142 429.54948,675.81204 C 433.14566,676.20023 436.5752,676.08844 439.94989,675.81204 C 448.94422,675.38977 454.9342,671.0381 457.08691,664.23045 C 457.80519,661.59098 457.63615,658.90968 457.2051,656.31195 C 455.09489,650.10472 449.95711,646.26901 445.06651,644.83354 C 445.06651,644.83354 432.06601,644.71535 432.06601,644.71535 C 428.81589,645.04278 426.29731,637.85701 432.14958,635.74752 C 434.652,635.16458 437.21791,635.21668 439.8317,635.74752 C 444.33263,636.81338 447.12036,638.25996 449.64116,639.76585 L 456.61416,631.96555 C 452.37793,626.99994 446.40444,625.43879 439.99167,624.37447 C 436.87015,623.92509 434.45076,623.92712 431.84992,624.24912 C 422.67197,626.00918 419.2617,629.6631 417.49447,633.85654 C 416.67613,637.63827 417.15541,641.29026 417.39656,644.96605 C 418.54526,650.7946 422.76583,653.38522 428.01306,654.89371 C 433.17387,655.71922 438.33467,656.265 443.49548,656.31195 C 447.53714,656.5673 446.62155,663.34118 443.61366,664.34861 L 440.54082,665.29413 C 437.05244,666.20297 430.90865,665.98611 429.78586,665.4123 C 426.87059,663.31687 423.95532,661.77064 421.04006,660.0939 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12752" />
+    <path
+       d="M 481.17705,610.87785 L 481.09347,625.25197 L 488.26064,625.33001 L 488.34182,634.54123 L 481.31512,634.54123 L 481.31512,663.99402 C 481.5887,664.90234 482.06524,665.60773 483.44248,665.4123 L 488.42065,665.5795 L 488.39187,675.8957 L 478.9514,675.81204 C 476.59737,675.18136 469.96923,670.19293 469.96923,665.4123 L 469.96923,634.44746 L 464.58755,634.44746 L 464.74036,625.41911 L 469.96923,625.41911 L 469.96923,610.87785"
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12754" />
+    <path
+       d="M 68.965839,676.89434 L 69.132638,605.96818 L 115.23709,605.79384 L 115.05874,616.41237 L 80.405132,616.3459 L 80.458053,635.6751 L 110.17754,635.67259 L 110.0007,647.00304 L 80.460564,647.00304 L 80.468098,676.53564 L 68.965839,676.89434 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12764" />
+    <path
+       d="M 524.71039,624.99199 C 520.56249,625.02893 515.96865,626.21018 512.05827,629.40253 L 512.05827,625.24955 L 500.6295,625.24955 L 500.69389,675.82584 L 512.05827,675.82584 L 512.05827,643.11704 C 516.29835,636.43237 521.93489,633.02487 528.38048,638.54554 L 536.13915,628.91962 C 534.81712,626.86535 530.15055,624.94357 524.71039,624.99199 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12756" />
+    <path
+       d="M 173.034,606.19679 L 173.034,676.08151 L 184.58519,676.08151 L 184.58519,642.80766 C 186.81497,633.1845 203.52435,632.34855 204.0297,644.41199 L 204.0297,676.08151 L 214.16908,676.08151 L 214.11019,636.6369 C 213.12366,631.25914 208.03253,627.3702 202.73539,626.02143 C 199.35714,625.16125 195.65554,625.09469 192.16827,625.75834 C 189.41968,626.28142 186.80423,627.25814 184.58519,628.65744 L 184.58519,606.19679 L 173.034,606.19679 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12758" />
+    <path
+       d="M 251.23291,625.53741 C 247.08501,625.57435 242.49117,626.7556 238.58079,629.94795 L 238.58079,625.79497 L 227.15202,625.79497 L 227.21641,676.37126 L 238.58079,676.37126 L 238.58079,643.66246 C 242.82087,636.97779 248.45741,633.57029 254.903,639.09096 L 262.66167,629.46504 C 261.33964,627.41077 256.67307,625.48899 251.23291,625.53741 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12760" />
+    <path
+       d="M 293.42124,625.53742 C 289.27334,625.57436 284.6795,626.75561 280.76912,629.94796 L 280.76912,625.79498 L 269.34035,625.79498 L 269.40474,676.37127 L 280.76912,676.37127 L 280.76912,643.66247 C 285.0092,636.9778 290.64574,633.5703 297.09133,639.09097 L 304.85,629.46505 C 303.52797,627.41078 298.8614,625.489 293.42124,625.53742 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12762" />
+    <path
+       d="M 391.58048,605.61518 L 401.84024,605.61518 L 401.84024,676.45632 L 391.93508,676.45632 L 391.93508,672.00412 C 391.93219,674.36799 385.98605,677.80266 382.54213,677.92199 L 375.7023,677.92199 C 371.00343,677.92199 361.04551,669.64457 361.04551,663.75377 L 361.04551,638.34867 C 361.04551,631.37242 369.62029,624.91328 376.43514,624.91328 L 383.03069,624.91328 C 386.98867,624.91328 391.7696,629.37242 391.7696,630.68144 L 391.58048,605.61518 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12776" />
+    <path
+       d="M 371.00302,659.73853 L 371.00302,643.11963 C 371.00302,640.43228 375.44884,636.53195 377.5907,636.53195 L 382.98061,636.53195 C 387.08214,636.53195 390.60217,642.07228 390.54146,644.39637 L 390.54146,657.79217 C 390.54146,660.95252 385.29621,665.76476 382.56888,665.76476 L 376.39294,665.76476 C 374.36009,665.76476 371.00302,662.15575 371.00302,659.73853 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12778" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_245.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_245.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_245.svg	(revision 36424)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <path
+     d="M -176.30905,369.66949 C -176.30905,540.44638 -314.75107,678.88839 -485.52795,678.88839 C -656.30484,678.8884 -794.74686,540.44638 -794.74686,369.66949 C -794.74686,198.8926 -656.30484,60.450585 -485.52795,60.450585 C -314.75107,60.450585 -176.30905,198.8926 -176.30905,369.66949 z "
+     transform="matrix(1.061206,0,0,1.061206,877.7452,-29.79549)"
+     style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <path
+     d="M 111.72728,273.8474 L 111.35689,256.82964 C 111.72155,255.68619 111.91702,254.37355 113.47584,254.42426 L 597.66892,254.11359 C 619.63415,258.48517 623.98774,315.63484 635.34809,347.53694 L 635.34809,416.73017 C 629.81419,429.73491 623.83805,430.79885 617.90442,433.01093 L 545.80391,432.42947 C 545.80391,369.56296 450.44517,369.9132 450.44517,432.42947 L 256.82042,432.42947 C 256.82042,369.7928 163.78751,369.77566 163.78751,432.42947 L 96.920099,432.42947 C 93.750756,431.49996 91.590711,428.55186 89.651902,425.16127 L 90.428576,363.12079 L 118.74043,281.40632 C 119.72651,275.97836 114.06738,276.36495 111.72728,273.8474 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1966" />
+  <path
+     d="M 536.20947,432.64648 C 536.21851,453.64193 519.20087,470.66689 498.20543,470.66689 C 477.20998,470.66689 460.19234,453.64193 460.20138,432.64648 C 460.19234,411.65103 477.20998,394.62607 498.20543,394.62607 C 519.20087,394.62607 536.21851,411.65103 536.20947,432.64648 L 536.20947,432.64648 z "
+     style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:8, 2;stroke-dashoffset:0;stroke-opacity:1"
+     id="path2856" />
+  <path
+     d="M 248.6529,432.86618 C 248.66194,453.86163 231.6443,470.88659 210.64886,470.88659 C 189.65341,470.88659 172.63577,453.86163 172.64481,432.86618 C 172.63577,411.87073 189.65341,394.84577 210.64886,394.84577 C 231.6443,394.84577 248.66194,411.87073 248.6529,432.86618 L 248.6529,432.86618 z "
+     style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:8, 2;stroke-dashoffset:0;stroke-opacity:1"
+     id="path3745" />
+  <path
+     d="M 518.62868,285.3242 L 535.33701,342.28502 C 536.32062,344.60802 537.286,346.94522 540.00837,347.91585 L 597.93512,347.7737 C 600.24581,345.76083 602.6278,343.87841 602.99091,339.72321 L 586.57978,282.77532 C 585.23879,278.28259 583.39049,277.00285 581.46262,276.22701 L 522.42778,276.30131 C 519.5498,278.01965 518.53916,281.23187 518.62868,285.3242 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3747" />
+  <path
+     d="M 435.41796,285.21697 L 452.12629,342.17779 C 453.1099,344.50079 454.07528,346.83798 456.79765,347.80862 L 514.7244,347.66647 C 517.03509,345.6536 519.41708,343.77118 519.78019,339.61598 L 503.36906,282.66809 C 502.02807,278.17536 500.17977,276.89562 498.2519,276.11978 L 439.21706,276.19408 C 436.33908,277.91242 435.32844,281.12464 435.41796,285.21697 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path4634" />
+  <path
+     d="M 352.86764,285.21697 L 369.57597,342.17779 C 370.55958,344.50079 371.52496,346.83798 374.24733,347.80862 L 432.17409,347.66647 C 434.48478,345.6536 436.86676,343.77118 437.22987,339.61598 L 420.81875,282.66808 C 419.47776,278.17536 417.62945,276.89562 415.70158,276.11977 L 356.66675,276.19407 C 353.78876,277.91242 352.77813,281.12464 352.86764,285.21697 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path4636" />
+  <path
+     d="M 270.79957,285.21697 L 287.5079,342.17779 C 288.49151,344.50079 289.45689,346.83798 292.17926,347.80862 L 350.10602,347.66647 C 352.4167,345.6536 354.79869,343.77118 355.1618,339.61598 L 338.75067,282.66808 C 337.40969,278.17536 335.56138,276.89562 333.63351,276.11977 L 274.59868,276.19408 C 271.72069,277.91242 270.71006,281.12464 270.79957,285.21697 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path4638" />
+  <path
+     d="M 201.88452,281.23514 L 201.87474,342.50551 C 202.85835,344.82851 204.56676,347.0171 207.28913,347.98774 L 267.44497,347.77128 C 269.75565,345.75841 272.13764,343.87599 272.50075,339.72079 L 256.08963,282.7729 C 254.74864,278.28018 252.90033,277.00043 250.97246,276.22459 L 206.35235,276.15029 C 203.47437,277.86863 202.83525,277.88583 201.88452,281.23514 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path4640" />
+  <path
+     d="M 187.47977,283.11038 L 187.37406,342.38295 C 186.39045,344.70595 185.42507,347.04314 182.7027,348.01378 L 114.5832,347.66147 C 112.27251,345.6486 109.89052,343.76618 109.52741,339.61098 L 129.93157,282.87325 C 131.27256,278.38053 133.12087,277.10079 135.04874,276.32494 L 183.68066,276.50432 C 186.55864,278.22267 187.56928,279.01805 187.47977,283.11038 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path4642" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_250.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_250.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_250.svg	(revision 36424)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="725" height="725" version="1.1">
+  <circle style="fill:#FFF; stroke:#000; stroke-width:2.5px" r="350" cx="362.5" cy="362.5" />
+  <circle cx="362.5" cy="362.5" r="295" style="stroke:#CC0000; stroke-width:83.75; fill:none" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_251.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_251.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_251.svg	(revision 36424)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="725" height="725" version="1.1">
+
+<circle style="fill:#FFF; stroke:#000; stroke-width:2.5px" r="350" cx="362.5" cy="362.5" />
+<circle cx="362.5" cy="362.5" r="290" style="stroke:#CC0000; stroke-width:93.75; fill:none" />
+<g transform="matrix(0.387772,0.000000,0.000000,0.387772,168.3417,207.4427)" id="CarSymbol">
+ <path style="stroke:none; fill:black; fill-rule:evenodd" id="Car"
+       d="M 26.666667,456.41026 C 24.273504,280.00000 14.700854,431.79487 121.02564,170.25641 C 197.94872,-7.5213676 120.00000,40.341880 517.94872,33.846154 C 872.13675,41.025642 800.68376,-10.256409 882.05128,178.46154 C 983.93162,420.17094 976.06838,293.67521 975.38462,451.28205 C 971.62393,624.27350 1035.5556,579.82906 499.48718,585.64103 C -32.478634,578.46155 30.427346,623.58974 26.666667,456.41026 z     M 134.35897,286.15385 L 207.17949,117.94872 C 220.76607,88.070065 216.43137,92.480742 248.20513,92.307692 L 757.32827,92.252822 C 784.88973,92.354119 780.84626,90.564525 792.20006,116.86821 L 864.61538,284.10256 L 134.35897,286.15385 z     M 82.279202,604.93828 L 218.46154,604.63438 C 218.04369,775.61254 232.21273,766.07788 157.94872,767.17949 C 69.515671,766.83761 83.494777,775.76449 82.279202,604.93828 z     M 783.58974,606.15385 L 920.00000,606.15385 C 919.08832,777.39791 931.54796,765.69801 854.35897,766.15385 C 774.54890,765.09022 784.69135,777.70181 783.58974,606.15385 z" />
+ <circle style="fill:white; fill-opacity:1; stroke:none" r="66.5" cy="412" cx="150" id="LeftLamp" />
+ <circle style="fill:white; fill-opacity:1; stroke:none" r="66.5" cy="412" cx="850" id="RightLamp" />
+</g>
+
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_253.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_253.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_253.svg	(revision 36424)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="725" height="725" version="1.1">
+  <circle style="fill:#FFF; stroke:#000; stroke-width:2.5px" r="350" cx="362.5" cy="362.5" />
+  <circle cx="362.5" cy="362.5" r="290" style="stroke:#CC0000; stroke-width:93.75; fill:none" />
+  <g id="TruckSymbol" transform="matrix(0.436865,0.000000,0.000000,0.436865,143.8720,253.0305)">
+    <path style="fill:black; stroke:none; fill-rule:evenodd"
+          d="M 295.78419,86.816926 L 295.78419,335.08252 L 687.71625,335.40310 C 664.71649,354.19396 650.35734,380.09418 650.54503,414.08813 L 261.47933,413.85667 C 257.75238,281.97351 70.642616,282.42223 66.576854,413.09434 C 38.473995,412.88466 34.575813,406.50199 34.304870,380.61469 L 34.304868,281.61469 C 33.952015,237.37253 28.426810,266.57731 61.177014,182.67997 C 94.875059,93.246445 85.585107,101.51291 116.06480,99.204795 L 295.78419,86.816926 z M 217.93865,233.19966 L 219.48981,127.72046 L 119.43969,133.92512 C 101.20003,135.14704 101.04823,135.26154 94.621050,156.41701 L 69.026832,224.66825 C 60.428592,245.60250 61.797130,251.77115 85.314062,248.71131 L 217.93865,233.19966 z M 966.63494,335.59074 L 966.82552,391.36792 L 902.21802,414.23783 L 845.49140,414.20156 C 845.72230,381.85903 832.28136,354.65711 808.44981,335.54893 L 966.63494,335.59074 z " />
+    <rect x="335.82718" y="12.158683" height="301.70154" width="631.32404" style="fill:black; stroke:none" />
+    <circle r="77" cx="164" cy="412" style="fill:black; stroke:none" />
+    <circle r="77" cx="748" cy="412" style="fill:black; stroke:none" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_254.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_254.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_254.svg	(revision 36424)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="725" height="725" version="1.1">
+
+<circle style="fill:#FFF; stroke:#000; stroke-width:2.5px" r="350" cx="362.5" cy="362.5" id="OuterCircle" />
+<circle cx="362.5" cy="362.5" r="290" style="stroke:#CC0000; stroke-width:93.75; fill:none" id="RedCircle" />
+<g id="BikeSymbol" transform="matrix(0.446708,0.000000,0.000000,0.446708,138.0294,227.2666)">
+ <circle cx="215" cy="409" r="161" style="fill:none; stroke:black; stroke-width:40px" id="FrontWheel" />
+ <circle cx="790" cy="406" r="161" style="fill:none; stroke:black; stroke-width:40px" id="RearWheel" />
+ <path style="fill:black; fill-rule:evenodd; stroke:none" id="Frame"
+       d="M 429.48437,15.467118 C 296.91790,16.759190 319.39993,1.7711686 248.07762,230.98455 C 189.97511,414.12586 196.30387,394.15363 196.00000,407.00000 C 195.78704,416.98022 203.84333,424.89312 213.96694,425.57043 C 235.02054,423.44166 226.16492,427.84741 299.15748,201.18078 C 565.86963,482.53640 465.80592,436.91194 609.34064,442.62576 C 797.98299,440.81686 813.31557,452.44550 815.55516,424.79518 C 815.29674,415.40613 810.90371,409.80716 681.43820,121.67535 L 693.84208,87.564675 L 736.48042,86.789433 L 734.92994,51.128275 L 576.00521,51.128275 C 561.96471,70.337063 581.69033,70.250925 652.75423,86.014190 L 640.35035,120.90010 L 323.27614,121.67535 C 344.63838,47.079788 332.57905,51.731243 428.70913,51.903518 L 429.48437,15.467118 z     M 314.11415,159.91012 L 624.37752,159.36001 L 534.70921,400.30922 L 314.11415,159.91012 z     M 661.78516,174.21304 L 573.76718,405.26023 L 766.30650,405.81034 L 661.78516,174.21304 z" /> 
+</g>
+  
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_255.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_255.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_255.svg	(revision 36424)
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <g
+     transform="matrix(0.658556,0,0,0.658556,137.1874,166.2154)"
+     id="layer1">
+    <path
+       d="M 438.12826,429.16927 C 375.32987,426.00501 282.92602,437.06422 251.92375,397.77007 C 237.71768,323.00073 197.12299,285.36345 127.4223,284.58694 C 84.626532,201.93866 162.31092,188.98722 215.41306,167.75274 C 218.78636,206.16837 216.71935,246.10015 277.48123,268.52224 C 279.92034,256.63453 284.90432,246.92813 300.84807,246.61583 L 390.66436,246.98094 L 454.19295,197.3264 C 464.45935,213.65423 484.83147,234.57558 484.86193,246.25072 L 581.25015,246.61583 C 588.2694,252.59444 594.22298,268.45864 580.15483,284.22184 C 522.41354,282.46908 417.46802,288.77717 438.12826,429.16927 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path4749" />
+    <path
+       d="M 281.45311,113.13794 L 281.71128,79.094411 L 319.83363,73.920272 L 319.83363,46.902363 L 280.93677,53.36735 C 283.79727,29.02724 299.44705,11.428004 333.92156,6.3312047 C 355.56786,7.8567994 378.26787,9.030436 391.1807,49.520754 C 394.96498,65.581097 392.60623,81.830116 382.63201,95.826685 C 350.34442,78.127222 326.17913,90.209532 304.13403,110.06585 L 281.45311,113.13794 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5636" />
+    <path
+       d="M 215.04795,186.7383 L 328.59619,100.93818 C 343.85852,92.79748 360.69029,91.248459 380.80647,103.49393 C 398.00264,119.11558 427.05087,162.39207 450.17678,191.84979 L 385.55287,240.22646 L 323.48469,153.87868 L 225.27094,229.0907 C 217.71099,215.89572 215.94199,200.40941 215.04795,186.7383 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path6523" />
+    <path
+       d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z "
+       transform="matrix(0.974466,0,0,0.974466,-15.37667,-10.08382)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7410" />
+    <path
+       d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z "
+       transform="matrix(0.974466,0,0,0.974466,388.6178,-9.97323)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path8297" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_256.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_256.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_256.svg	(revision 36424)
@@ -0,0 +1,88 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zeichen 256.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)">
+  <metadata
+     id="metadata13">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="569"
+     inkscape:window-width="925"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.52137931"
+     inkscape:cx="362.5"
+     inkscape:cy="362.5"
+     inkscape:window-x="88"
+     inkscape:window-y="88"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px;fill-opacity:1"
+     id="circle4" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="295"
+     style="fill:none;stroke:#c00;stroke-width:83.75"
+     id="circle6" />
+  <g
+     transform="matrix(0.615398,0,0,0.615398,153.3219,243.0239)"
+     id="layer1">
+    <path
+       d="M 136.75462,282.03583 C 136.75462,357.06643 75.930301,417.89075 0.8997,417.89075 C -74.130901,417.89075 -134.95522,357.06643 -134.95522,282.03583 C -134.95522,207.00523 -74.130901,146.18091 0.8997,146.18091 C 75.930301,146.18091 136.75462,207.00523 136.75462,282.03583 z "
+       transform="matrix(0.74724,0,0,0.74724,122.5869,48.79482)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:39.38558578;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path15475" />
+    <path
+       d="M 648.90867,96.718727 L 435.78671,96.718727 C 427.74779,99.838733 421.99999,104.94437 426.56202,118.9852 L 481.59203,154.61156 C 505.09805,136.98259 529.46933,134.06306 553.79902,130.43653 L 649.54486,130.11844 L 648.90867,96.718727 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path12814" />
+    <path
+       d="M 582.93177,285.852 L 361.08955,285.58848 C 314.75731,284.17925 288.28246,245.79634 259.51124,204.2434 C 209.17953,131.55162 201.92686,130.76936 191.60083,97.014213 L 265.47547,97.091396 C 270.39789,98.590741 275.32031,99.325646 280.24273,105.42207 L 324.71097,168.71896 C 328.41656,184.39886 325.34225,197.06215 321.45561,210.49425 C 316.96787,226.00375 334.80258,253.63393 362.62544,252.50687 L 583.4588,239.59683 L 582.93177,285.852 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path13701" />
+    <path
+       d="M 108.60035,251.76407 C 110.39975,246.36586 194.33551,41.815551 194.33551,41.815551 C 204.53449,23.526361 218.83992,13.450051 237.52117,12.125404 L 295.10207,12.125404 L 294.78398,45.941389 L 239.266,45.941389 C 232.48018,45.301217 227.37783,49.579445 223.12595,61.608982 L 139.45372,265.8412 C 131.31921,284.84108 100.39972,278.15819 108.60035,251.76407 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path14588" />
+    <path
+       d="M 136.75462,282.03583 C 136.75462,357.06643 75.930301,417.89075 0.8997,417.89075 C -74.130901,417.89075 -134.95522,357.06643 -134.95522,282.03583 C -134.95522,207.00523 -74.130901,146.18091 0.8997,146.18091 C 75.930301,146.18091 136.75462,207.00523 136.75462,282.03583 z "
+       transform="matrix(0.74724,0,0,0.74724,555.8824,49.18351)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:39.38558578;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path17247" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_258.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_258.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_258.svg	(revision 36424)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <g
+     transform="matrix(0.9761,0,0,0.9761,166.1501,173.6844)"
+     id="layer1">
+    <g
+       transform="translate(2.930158,-2.251167)"
+       id="g1892">
+      <path
+         d="M 52.413594,38.866939 L 52.913594,62.616939 L 6.4448442,115.14819 L 18.069844,127.27319 L 71.101094,116.14819 L 94.319844,156.05444 C 84.123594,180.44952 92.866694,191.61419 98.382344,208.08569 L 40.788594,244.42944 L 40.788594,324.74194 L 61.507344,313.61694 L 61.007344,259.08569 L 108.97609,232.80444 L 153.91359,334.83569 L 149.97609,355.21072 L 170.60109,355.55442 L 173.63234,335.33569 L 137.75734,231.30444 C 171.91348,240.9542 206.38281,242.73849 241.31984,231.30444 L 275.13234,291.39819 L 240.72609,355.11692 L 264.53859,355.64822 L 300.41359,289.39819 L 292.81984,238.86694 L 345.35109,280.30444 L 333.72609,350.49192 L 356.97609,344.42944 L 368.06984,272.71069 L 338.28859,221.71069 C 342.53567,195.71256 337.04829,175.97794 325.97609,162.58569 L 336.56984,153.39819 C 354.39122,147.20989 365.19314,153.71935 371.41359,168.52319 L 377.41359,205.24194 L 407.69484,189.67944 L 399.60109,160.46069 C 389.57588,134.24426 359.48885,116.39751 325.78859,140.33569 C 325.78859,140.33569 315.08625,151.23801 313.81984,151.71069 C 295.95766,139.97227 271.36688,138.29839 248.22609,146.86694 L 244.16359,146.89819 C 251.46329,143.16506 251.87072,133.73733 249.38234,126.74194 L 213.53859,64.616939 C 199.79552,48.550019 166.87985,63.298099 173.13234,86.866939 L 177.81984,95.554439 L 146.19484,110.42944 C 130.20815,82.201549 113.44726,54.451059 68.569844,54.523189 L 52.413594,38.866939 z M 187.22609,113.58569 L 198.97609,133.30444 L 171.00734,147.21069 L 170.60109,147.21069 C 165.62405,141.82773 161.30591,135.77545 157.28859,129.39819 L 187.22609,113.58569 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1882" />
+      <path
+         d="M 241.42858,621.29077 C 241.42858,634.21029 230.95524,644.68363 218.03572,644.68363 C 205.1162,644.68363 194.64286,634.21029 194.64286,621.29077 C 194.64286,608.37125 205.1162,597.89791 218.03572,597.89791 C 230.95524,597.89791 241.42858,608.37125 241.42858,621.29077 L 241.42858,621.29077 z "
+         transform="translate(-40.44356,-589.0438)"
+         style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1884" />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_259.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_259.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_259.svg	(revision 36424)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="725" height="725" version="1.1">
+
+<circle style="fill:#FFF; stroke:#000; stroke-width:2.5px" r="350" cx="362.5" cy="362.5" />
+<circle cx="362.5" cy="362.5" r="290" style="stroke:#CC0000; stroke-width:93.75; fill:none" />
+<g id="PedestrianSymbol" transform="matrix(0.594656,0.000000,0.000000,0.594656,244.0817,120.6377)">
+ <circle r="56" cx="188" cy="105" style="fill:black; stroke:none" />
+ <path style="fill:black; stroke:none"
+       d="M 22.000000,427.00000 C 173.66667,190.33333 159.33333,183.66667 216.00000,182.00000 C 249.00000,183.00000 250.00000,192.00000 306.00000,236.00000 C 375.00000,286.66667 370.00000,287.33333 369.00000,343.00000 C 368.66667,410.00000 373.33333,405.00000 320.00000,430.00000 L 320.00000,317.00000 L 273.00000,275.00000 L 273.00000,434.00000 L 161.00000,433.00000 L 160.00000,307.00000 C 68.000000,449.00000 74.000000,441.00000 22.000000,427.00000 z     M 163.00000,450.00000 L 272.00000,450.00000 C 272.00000,475.00000 280.00000,473.00000 338.00000,582.00000 C 399.00000,694.33333 400.00000,686.66667 365.00000,751.00000 L 214.00000,480.00000 C 71.000000,756.66667 89.000000,748.33333 10.000000,743.00000 L 89.000000,595.00000 C 156.66667,472.66667 160.33333,472.33333 163.00000,450.00000 z " /> 
+</g>
+
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_260.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_260.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_260.svg	(revision 36424)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <path
+     d="M 131.43407,350.50236 L 593.25172,350.50236"
+     style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:11.26880264;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1993" />
+  <g
+     transform="matrix(0.249759,0,0,0.249759,235.6439,375.1742)"
+     id="g1971">
+    <path
+       d="M 26.666667,456.41026 C 24.273504,280 14.700854,431.79487 121.02564,170.25641 C 197.94872,-7.5213676 120,40.34188 517.94872,33.846154 C 872.13675,41.025642 800.68376,-10.256409 882.05128,178.46154 C 983.93162,420.17094 976.06838,293.67521 975.38462,451.28205 C 971.62393,624.2735 1035.5556,579.82906 499.48718,585.64103 C -32.478634,578.46155 30.427346,623.58974 26.666667,456.41026 z M 134.35897,286.15385 L 207.17949,117.94872 C 220.76607,88.070065 216.43137,92.480742 248.20513,92.307692 L 757.32827,92.252822 C 784.88973,92.354119 780.84626,90.564525 792.20006,116.86821 L 864.61538,284.10256 L 134.35897,286.15385 z M 82.279202,604.93828 L 218.46154,604.63438 C 218.04369,775.61254 232.21273,766.07788 157.94872,767.17949 C 69.515671,766.83761 83.494777,775.76449 82.279202,604.93828 z M 783.58974,606.15385 L 920,606.15385 C 919.08832,777.39791 931.54796,765.69801 854.35897,766.15385 C 774.5489,765.09022 784.69135,777.70181 783.58974,606.15385 z "
+       style="fill:black;fill-rule:evenodd;stroke:none"
+       id="Car" />
+    <circle
+       cx="150"
+       cy="412"
+       r="66.5"
+       style="fill:white;fill-opacity:1;stroke:none"
+       id="LeftLamp" />
+    <circle
+       cx="850"
+       cy="412"
+       r="66.5"
+       style="fill:white;fill-opacity:1;stroke:none"
+       id="RightLamp" />
+  </g>
+  <g
+     transform="matrix(0.409224,0,0,0.409224,224.4982,131.9194)"
+     id="layer1">
+    <path
+       d="M 438.12826,429.16927 C 375.32987,426.00501 282.92602,437.06422 251.92375,397.77007 C 237.71768,323.00073 197.12299,285.36345 127.4223,284.58694 C 84.626532,201.93866 162.31092,188.98722 215.41306,167.75274 C 218.78636,206.16837 216.71935,246.10015 277.48123,268.52224 C 279.92034,256.63453 284.90432,246.92813 300.84807,246.61583 L 390.66436,246.98094 L 454.19295,197.3264 C 464.45935,213.65423 484.83147,234.57558 484.86193,246.25072 L 581.25015,246.61583 C 588.2694,252.59444 594.22298,268.45864 580.15483,284.22184 C 522.41354,282.46908 417.46802,288.77717 438.12826,429.16927 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path4749" />
+    <path
+       d="M 281.45311,113.13794 L 281.71128,79.094411 L 319.83363,73.920272 L 319.83363,46.902363 L 280.93677,53.36735 C 283.79727,29.02724 299.44705,11.428004 333.92156,6.3312047 C 355.56786,7.8567994 378.26787,9.030436 391.1807,49.520754 C 394.96498,65.581097 392.60623,81.830116 382.63201,95.826685 C 350.34442,78.127222 326.17913,90.209532 304.13403,110.06585 L 281.45311,113.13794 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5636" />
+    <path
+       d="M 215.04795,186.7383 L 328.59619,100.93818 C 343.85852,92.79748 360.69029,91.248459 380.80647,103.49393 C 398.00264,119.11558 427.05087,162.39207 450.17678,191.84979 L 385.55287,240.22646 L 323.48469,153.87868 L 225.27094,229.0907 C 217.71099,215.89572 215.94199,200.40941 215.04795,186.7383 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path6523" />
+    <path
+       d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z "
+       transform="matrix(0.974466,0,0,0.974466,-15.37667,-10.08382)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7410" />
+    <path
+       d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z "
+       transform="matrix(0.974466,0,0,0.974466,388.6178,-9.97323)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path8297" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_261.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_261.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_261.svg	(revision 36424)
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <path
+     d="M 238.44701,421.94816 L 485.49562,421.94816 L 485.58845,214.36485 C 485.58845,207.12828 474.38805,195.18908 465.28342,195.18908 L 258.77528,195.37473 C 249.32685,195.37473 238.62491,206.20034 238.62491,213.64535 L 238.44701,421.94816 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3776" />
+  <path
+     d="M 272.86338,222.65179 L 272.86338,395.41783 L 451.83416,395.41783 L 451.83416,222.96204 L 272.86338,222.65179 z "
+     style="opacity:1;fill:#f60;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3810" />
+  <path
+     d="M 224.36106,428.00086 L 224.44323,442.98899 L 499.46615,442.90681 L 499.54832,428.01695 L 224.36106,428.00086 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3778" />
+  <path
+     d="M 241.91549,448.99623 L 270.17219,448.99623 L 273.58632,454.15983 L 273.69235,526.68358 L 268.39091,531.83659 L 242.88035,532.15468 L 238.50136,527.75447 L 238.71342,452.5694 L 241.91549,448.99623 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3780" />
+  <path
+     d="M 283.125,449.5 L 279.90625,453.0625 L 279.6875,528.25 L 284.09375,532.65625 L 309.59375,532.34375 L 314.90625,527.1875 L 314.875,503.4375 L 317.78125,500.375 L 337.90625,500.28125 L 337.9375,501.21875 L 340.75,501.15625 C 340.83501,503.1623 351.99413,513.40623 362.28125,513.40625 L 362.28125,513.34375 C 372.55965,513.32318 383.66507,503.12902 383.75,501.125 L 386.5625,501.1875 L 386.625,500.21875 L 406.75,500.34375 L 409.53125,503.25 L 409.46875,528.25 L 413.84375,532.65625 L 439.34375,532.34375 L 444.65625,527.1875 L 444.53125,454.65625 L 441.125,449.5 L 412.875,449.5 L 409.65625,453.0625 L 409.59375,476.8125 L 405.5625,480.96875 L 386.59375,480.90625 L 386.625,479.9375 L 383.5625,479.90625 C 383.56251,477.01569 372.5538,467.84375 362.25,467.84375 L 362.25,467.875 C 351.95543,467.89413 340.96874,477.08118 340.96875,479.96875 L 337.90625,479.96875 L 337.90625,480.96875 L 318.9375,481 L 314.8125,476.75 L 314.78125,454.65625 L 311.375,449.5 L 283.125,449.5 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3784" />
+  <path
+     d="M 453.75456,448.90291 L 482.01126,448.90291 L 485.42539,454.06651 L 485.53142,526.59026 L 480.22998,531.74327 L 454.71942,532.06136 L 450.34043,527.66115 L 450.55249,452.47608 L 453.75456,448.90291 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3788" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_262.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_262.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_262.svg	(revision 36424)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <path
+     d="M 294.04544,221.14362 L 183.255,221.14362 L 183.09088,366.25115 L 217.70291,366.25115 C 217.70291,346.53041 254.48357,345.84843 254.48357,366.25115 C 254.48357,366.25115 254.48357,438.76401 254.48357,438.76401 C 254.48363,445.03123 243.11783,452.40422 240.48875,452.53397 C 240.48875,452.53397 230.31359,452.48158 230.31359,452.48158 C 227.68867,452.48158 217.6159,446.79648 217.64867,439.33743 C 217.64867,439.33743 217.70122,422.19028 217.70122,422.19028 L 178.14358,422.19028 L 178.30449,443.8005 C 178.30449,459.84517 202.26675,492.57459 225.40921,492.57459 C 225.40921,492.57459 245.28039,492.22491 245.28039,492.22491 C 268.501,492.22491 294.49726,461.2583 294.28512,443.8005 L 294.44602,357.71952 C 294.44602,319.56363 239.39049,305.97469 217.91336,327.45182 L 217.57542,259.17346 L 294.35071,259.33759 L 294.04544,221.14362 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1908" />
+  <path
+     d="M 495.56079,294.87587 L 495.43446,340.0281 L 480.58385,340.15444 L 480.58385,366.03161 L 495.49828,366.03161 L 495.62462,461.38956 C 495.62462,473.97512 514.04468,491.02693 522.86158,491.02693 L 545.83034,491.02693 L 545.57767,461.86366 L 533.98324,461.99 C 530.49753,461.99 526.64293,459.44917 526.64293,456.22031 L 526.64293,366.12536 L 545.61025,365.99903 L 545.61025,340.12185 L 526.46286,340.12185 L 526.58919,294.93837 L 495.56079,294.87587 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1886" />
+  <path
+     d="M 455.49795,280.06412 L 368.51182,280.06412 L 368.38296,393.99401 L 395.55829,393.99401 C 395.55829,378.51045 424.4363,377.975 424.4363,393.99401 C 424.4363,393.99401 424.4363,450.92684 424.4363,450.92684 C 424.43634,455.84749 415.51259,461.63633 413.44839,461.7382 C 413.44839,461.7382 405.45945,461.69707 405.45945,461.69707 C 403.39852,461.69707 395.48997,457.23346 395.5157,451.37706 C 395.5157,451.37706 395.55696,437.91412 395.55696,437.91412 L 364.49863,437.91412 L 364.62497,454.8812 C 364.62497,467.47853 383.43872,493.17574 401.60882,493.17574 C 401.60882,493.17574 417.2105,492.90119 417.2105,492.90119 C 435.44196,492.90119 455.85269,468.58803 455.68613,454.8812 L 455.81246,387.29548 C 455.81246,357.33772 412.5861,346.66848 395.72352,363.53106 L 395.45819,309.92291 L 455.73763,310.05178 L 455.49795,280.06412 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1888" />
+  <path
+     d="M 311.3137,459.93357 L 342.53319,459.78807 L 342.53319,491.74752 L 311.34695,514.75268 L 311.3137,459.93357 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1910" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_263.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_263.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_263.svg	(revision 36424)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       id="circle4"
+       style="fill:#ffffff;stroke:#000000;stroke-width:2.5px" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       id="circle6"
+       style="fill:none;stroke:#cc0000;stroke-width:93.75" />
+  </g>
+  <path
+     d="m 298.79711,198.75117 c -3e-5,6.80582 2.13089,11.95967 6.39275,15.46155 4.2618,3.50206 9.03572,5.25304 14.32176,5.25296 5.28594,8e-5 10.05986,-1.7509 14.32175,-5.25296 4.26177,-3.50188 6.39269,-8.65573 6.39276,-15.46155 -7e-5,-6.73954 -2.13099,-11.87686 -6.39276,-15.41199 -4.26189,-3.53489 -9.03581,-5.30239 -14.32175,-5.30252 -5.28604,1.3e-4 -10.05996,1.76763 -14.32176,5.30252 -4.26186,3.53513 -6.39278,8.67245 -6.39275,15.41199 z m -23.29144,62.14353 c 0,-14.07392 5.68244,-24.9102 17.04735,-32.5089 -4.29489,-3.83227 -7.78034,-8.07758 -10.45637,-12.73595 -2.67604,-4.6582 -4.01406,-10.15893 -4.01405,-16.50223 -1e-5,-11.62908 3.98101,-21.50728 11.94305,-29.63463 7.96201,-8.12709 17.79066,-12.19069 29.48597,-12.19084 11.69521,1.5e-4 21.52386,4.06375 29.48596,12.19084 7.96195,8.12735 11.94297,18.00555 11.94306,29.63463 -9e-5,6.3433 -1.35463,11.84403 -4.06361,16.50223 -2.70916,4.65837 -6.14506,8.90368 -10.3077,12.73595 11.29873,7.66477 16.94814,18.50106 16.94823,32.5089 -9e-5,12.81858 -4.34452,23.2419 -13.03329,31.26999 -8.68893,8.02812 -19.01314,12.04217 -30.97265,12.04217 -12.02569,0 -22.36641,-4.01405 -31.02221,-12.04217 -8.65583,-8.02809 -12.98374,-18.45141 -12.98374,-31.26999 z m 20.71451,-0.19822 c -2e-5,6.60753 2.32912,12.07523 6.98743,16.40311 4.65825,4.32794 10.09292,6.49189 16.30401,6.49187 6.14492,2e-5 11.57958,-2.16393 16.304,-6.49187 4.72429,-4.32788 7.08647,-9.79558 7.08655,-16.40311 -8e-5,-6.60745 -2.36226,-12.09167 -7.08655,-16.45268 -4.72442,-4.36088 -10.15908,-6.54136 -16.304,-6.54142 -6.21109,6e-5 -11.64576,2.18054 -16.30401,6.54142 -4.65831,4.36101 -6.98745,9.84523 -6.98743,16.45268 z"
+     id="path2836"
+     style="font-size:202.9823761px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN 1451 Mittelschrift" />
+  <path
+     d="m 399.28689,167.71382 -0.0883,31.57596 -10.38537,0.0884 0,18.09647 10.42999,0 0.0883,66.68594 c 0,8.80137 12.88156,20.72607 19.04741,20.72607 l 16.06257,0 -0.17669,-20.39452 -8.10825,0.0883 c -2.43763,0 -5.13324,-1.77685 -5.13324,-4.03486 l 0,-63.0054 13.26427,-0.0884 0,-18.09648 -13.3902,0 0.0884,-31.59781 -21.69885,-0.0437 z"
+     id="path1886"
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+  <path
+     d="m 353.40625,323.09375 0,45.8125 -29.8125,-29.3125 0,24.15625 38.3125,37.4375 38.4375,-37.375 0,-24.15625 -29.8125,29.3125 0,-45.8125 -17.125,-0.0625 z"
+     id="path1926"
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+  <g
+     transform="matrix(1.428013,0,0,1.428013,1324.992,-643.5999)"
+     id="g1968"
+     style="fill:#000000;fill-opacity:1">
+    <path
+       d="m -794.10851,724.65673 28.2567,0 3.41413,5.1636 0.10603,72.52375 -5.30144,5.15301 -25.51056,0.31809 -4.37899,-4.40021 0.21206,-75.18507 3.20207,-3.57317 z"
+       id="path3780"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+    <path
+       d="m -752.899,725.1605 -3.21875,3.5625 -0.21875,75.1875 4.40625,4.40625 25.5,-0.3125 5.3125,-5.15625 -0.0312,-23.75 2.90625,-3.0625 20.125,-0.0937 0.0312,0.9375 2.8125,-0.0625 c 0.085,2.00605 11.24413,12.24998 21.53125,12.25 l 0,-0.0625 c 10.2784,-0.0206 21.38382,-10.21473 21.46875,-12.21875 l 2.8125,0.0625 0.0625,-0.96875 20.125,0.125 2.78125,2.90625 -0.0625,25 4.375,4.40625 25.5,-0.3125 5.3125,-5.15625 -0.125,-72.53125 -3.40625,-5.15625 -28.25,0 -3.21875,3.5625 -0.0625,23.75 -4.03125,4.15625 -18.96875,-0.0625 0.0312,-0.96875 -3.0625,-0.0312 c 10e-6,-2.89056 -11.0087,-12.0625 -21.3125,-12.0625 l 0,0.0312 c -10.29457,0.0191 -21.28126,9.20618 -21.28125,12.09375 l -3.0625,0 0,1 -18.96875,0.0312 -4.125,-4.25 -0.0312,-22.09375 -3.40625,-5.15625 -28.25,0 z"
+       id="path3784"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+    <path
+       d="m -582.26944,724.56341 28.2567,0 3.41413,5.1636 0.10603,72.52375 -5.30144,5.15301 -25.51056,0.31809 -4.37899,-4.40021 0.21206,-75.18507 3.20207,-3.57317 z"
+       id="path3788"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_264.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_264.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_264.svg	(revision 36424)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <path
+     d="M 373.6705,530.12962 L 229.30525,529.89446 L 229.30525,484.72809 L 324.10602,301.57116 L 324.57634,259.75103 C 324.57634,231.37364 278.55195,231.67 278.55195,259.75103 L 278.55195,291.15744 L 229.1114,290.92228 L 229.34656,253.94197 C 242.75061,168.76186 360.97193,171.22248 374.14082,254.64745 L 373.43534,301.59976 C 373.43534,301.59976 288.45405,482.14134 288.45405,482.14134 L 373.35273,482.14134 L 373.6705,530.12962 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1987" />
+  <path
+     d="M 186.83434,361.43995 L 136.72791,275.35796 C 113.58632,331.82472 116.27723,403.3499 136.72791,449.64204 L 186.83434,361.43995 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1983" />
+  <path
+     d="M 536.95093,361.43995 L 587.05736,275.35796 C 610.19895,331.82472 607.50804,403.3499 587.05736,449.64204 L 536.95093,361.43995 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1985" />
+  <path
+     d="M 405.37733,529.94375 L 405.46646,427.01946 L 426.68654,426.93034 L 426.59741,436.19134 C 438.86667,419.24523 453.69936,425.41377 463.64951,434.27918 C 473.90794,426.41966 496.53391,414.78388 508.62572,448.45831 L 508.62572,530.0896 L 486.57109,530.0896 L 486.57109,454.14617 C 486.30307,452.21761 483.74013,448.10992 481.36946,448.03086 C 481.36946,448.03086 472.67053,448.42575 472.67053,448.42575 C 469.95129,448.35104 467.75528,451.36531 467.68449,454.2353 L 467.59536,530.07339 L 445.50833,529.98427 L 445.68658,454.04084 C 445.73677,451.78992 442.08631,447.88365 439.92714,447.94394 C 439.92714,447.94394 431.43501,448.28784 431.43501,448.28784 C 429.94047,448.38883 426.25034,452.4899 426.50829,453.95171 L 426.50829,529.83843 L 405.37733,529.94375 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1991" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_265.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_265.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_265.svg	(revision 36424)
@@ -0,0 +1,102 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="Zeichen_265.svg">
+  <metadata
+     id="metadata2830">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1024"
+     inkscape:window-height="708"
+     id="namedview2828"
+     showgrid="false"
+     inkscape:zoom="0.32551724"
+     inkscape:cx="362.5"
+     inkscape:cy="362.5"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective2832" />
+  </defs>
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill: white; stroke: black; stroke-width: 2.5px;"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill: none; stroke: rgb(204, 0, 0); stroke-width: 93.75;"
+       id="circle6" />
+  </g>
+  <path
+     d="M 269.3845,421.14832 L 269.3845,425.55264 C 269.38439,427.25927 269.3229,429.15029 269.20006,431.22572 C 269.07698,433.30123 268.65033,436.17223 267.92012,439.83873 C 264.4994,451.56124 258.02707,461.08529 248.50312,468.4109 C 238.97898,475.73652 228.11352,479.39933 215.9067,479.39933 C 206.13666,479.39933 196.97778,476.46871 188.43002,470.60747 C 179.88219,464.74623 174.26688,458.70241 171.58407,452.47599 C 168.90122,446.24961 167.1313,441.24352 166.2743,437.45771 C 165.41726,433.67198 164.98876,428.23552 164.98877,421.14832 L 164.98877,406.87342 L 199.78735,406.87342 L 199.78735,418.21957 C 199.7873,421.15583 199.84878,424.02683 199.97179,426.83258 C 200.09471,429.63842 201.3765,433.17827 203.81719,437.45212 C 206.25776,441.72606 210.65276,443.86301 217.00219,443.86298 C 223.35149,443.86301 227.86945,441.72606 230.55609,437.45212 C 233.24257,433.17827 234.58584,427.74367 234.58593,421.14832 L 234.58593,383.42099 C 234.58584,377.31764 233.12147,373.04561 230.19279,370.60487 C 227.26395,368.16435 224.39481,366.69997 221.58537,366.21173 C 218.77578,365.72372 215.78368,365.47965 212.60905,365.47954 L 206.38265,365.47954 L 206.38265,334.70521 L 212.60905,334.70521 C 227.26023,334.70536 234.58584,327.86787 234.58593,314.19272 L 234.58593,284.89395 C 234.58584,281.47353 234.40326,278.96956 234.03818,277.38202 C 233.67294,275.79488 232.20856,273.35238 229.64504,270.05453 C 227.08137,266.75709 223.11302,265.10827 217.73997,265.10806 C 211.63647,265.10827 207.11851,266.93967 204.18608,270.60228 C 201.25354,274.26529 199.7873,279.02918 199.78735,284.89395 L 199.78735,302.8354 L 164.98877,302.8354 L 164.98877,284.89395 C 164.98876,269.50513 169.93336,256.62196 179.8226,246.24439 C 189.71178,235.86728 202.35089,230.67862 217.73997,230.67837 C 226.2877,230.67862 234.52995,232.87705 242.46675,237.27367 C 250.40336,241.67077 256.26274,246.79982 260.04489,252.66083 C 263.82683,258.5223 266.32894,263.95503 267.55124,268.95904 C 268.7733,273.96347 269.38439,279.2751 269.3845,284.89395 L 269.3845,313.46612 C 269.38439,329.3397 262.42393,341.42734 248.50312,349.72908 C 256.32049,355.10232 261.75509,360.53505 264.80692,366.02729 C 267.85853,371.51975 269.38439,378.90498 269.3845,388.18302 L 269.3845,421.14832 z "
+     style="font-size: 366.296px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text2010" />
+  <g
+     transform="matrix(0, -1, 1, 0, -0.607365, 724.393)"
+     id="g1994">
+    <path
+       d="M 186.83434,361.43995 L 136.72791,275.35796 C 113.58632,331.82472 116.27723,403.3499 136.72791,449.64204 L 186.83434,361.43995 z "
+       style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+       id="path1983" />
+    <path
+       d="M 536.95093,361.43995 L 587.05736,275.35796 C 610.19895,331.82472 607.50804,403.3499 587.05736,449.64204 L 536.95093,361.43995 z "
+       style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+       id="path1985" />
+  </g>
+  <path
+     d="M 432.43464,477.15265 L 432.5417,353.5195 L 458.03137,353.41244 L 457.9243,364.5368 C 472.6622,344.18105 490.4793,351.59073 502.43147,362.23991 C 514.75394,352.79901 541.93237,338.82206 556.45711,379.27195 L 556.45711,477.32785 L 529.96498,477.32785 L 529.96498,386.10423 C 529.64303,383.78764 526.56442,378.85346 523.71676,378.75849 C 523.71676,378.75849 513.26756,379.23284 513.26756,379.23284 C 510.0012,379.14309 507.36334,382.76385 507.2783,386.2113 L 507.17124,477.30838 L 480.64019,477.20133 L 480.85431,385.97771 C 480.9146,383.27389 476.52965,378.58166 473.93604,378.65408 C 473.93604,378.65408 463.73525,379.06718 463.73525,379.06718 C 461.94,379.18849 457.5074,384.11471 457.81725,385.87065 L 457.81725,477.02614 L 432.43464,477.15265 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1991" />
+  <path
+     d="M 282.55272,450.95142 L 307.68201,450.95142 L 307.68201,476.75703 L 282.6813,495.41113 L 282.55272,450.95142 z "
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path2008" />
+  <path
+     d="M 403.66371,442.05384 C 403.66363,447.27661 402.35795,452.76101 399.74666,458.50706 C 397.13521,464.25315 392.86883,469.17172 386.94749,473.26277 C 381.02602,477.35383 374.58527,479.39935 367.62521,479.39936 C 360.13906,479.39935 353.26131,477.484 346.99193,473.65328 C 340.72249,469.82257 336.45611,465.51368 334.19276,460.7266 C 331.92938,455.93955 330.53736,451.97866 330.01669,448.84393 C 329.496,445.70926 329.23566,442.48689 329.23567,439.17681 L 329.23567,408.62139 C 329.23566,403.92471 330.32351,399.70482 332.49922,395.96169 C 334.6749,392.21872 337.76578,388.86751 341.77184,385.90804 C 333.41438,379.63873 329.23566,371.02095 329.23567,360.05468 L 329.23567,336.55234 C 329.23566,333.24245 329.88784,329.88991 331.19221,326.49471 C 332.49655,323.09982 335.62993,318.18126 340.59234,311.73901 C 345.55472,305.29709 354.39033,302.07605 367.09921,302.07588 C 371.97655,302.07605 376.59095,303.07756 380.9424,305.08041 C 385.29373,307.08361 390.16846,310.91432 395.56661,316.57257 C 400.9646,322.23114 403.66363,329.84741 403.66371,339.4214 L 403.66371,361.87971 C 403.66363,371.97995 399.48491,379.98939 391.12754,385.90804 C 399.48491,391.65155 403.66363,399.83366 403.66371,410.45439 L 403.66371,442.05384 z M 366.58119,326.88522 C 362.92576,326.88538 359.87872,328.10472 357.44007,330.54327 C 355.00134,332.98211 353.78199,335.94148 353.78202,339.4214 L 353.78202,361.87971 C 353.78199,365.88588 354.86984,369.32475 357.04557,372.19635 C 359.22123,375.06817 362.3121,376.50402 366.31819,376.50392 C 370.66954,376.50402 373.84675,375.15451 375.84983,372.45537 C 377.8528,369.75644 378.85431,366.23122 378.85437,361.87971 L 378.85437,339.4214 C 378.85431,336.1115 377.67879,333.19463 375.32782,330.67078 C 372.97674,328.14723 370.0612,326.88538 366.58119,326.88522 L 366.58119,326.88522 z M 366.58119,395.30419 C 362.75043,395.30428 359.65956,396.56746 357.30857,399.09374 C 354.9575,401.62017 353.78199,404.79605 353.78202,408.62139 L 353.78202,439.17681 C 353.78199,443.70358 354.826,447.36029 356.91407,450.14696 C 359.00207,452.93369 362.39711,454.32703 367.09921,454.32701 C 371.62589,454.32703 374.71676,452.84735 376.37184,449.88795 C 378.0268,446.9286 378.85431,443.35823 378.85437,439.17681 L 378.85437,408.62139 C 378.85431,404.79605 377.76646,401.62017 375.59082,399.09374 C 373.41507,396.56746 370.41186,395.30428 366.58119,395.30419 L 366.58119,395.30419 z "
+     style="font-size: 261.148px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text2014" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_266.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_266.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_266.svg	(revision 36424)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <path
+     d="M 213.03125,432.5 L 170.84375,474.6875 L 213.0625,517.0625 L 238.15625,516.75 L 206.65625,484.59375 L 267.09375,484.59375 L 267.0625,464.9375 L 206.625,464.9375 L 238.125,432.8125 L 213.03125,432.5 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 511.47267,432.54183 L 553.66017,474.72933 L 511.44142,517.10433 L 486.34767,516.79183 L 517.84767,484.63558 L 457.41017,484.63558 L 457.44142,464.97933 L 517.87892,464.97933 L 486.37892,432.85433 L 511.47267,432.54183 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1892" />
+  <path
+     d="M 292.74349,507.09531 L 292.74349,445.60548 L 282.44543,453.11758 L 282.44543,442.12304 L 292.74349,434.61093 L 303.14104,434.61093 L 303.14104,507.09531 L 292.74349,507.09531 z "
+     transform="scale(0.993187,1.006859)"
+     style="font-size:101.88607025px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text1894" />
+  <path
+     d="M 348.33509,489.64451 L 348.33509,458.84985 C 348.33506,455.36747 347.39812,452.64786 345.52427,450.69101 C 343.65036,448.73428 341.18779,447.75588 338.13654,447.75582 C 335.05208,447.75588 332.58121,448.73428 330.72393,450.69101 C 328.86662,452.64786 327.93797,455.36747 327.93799,458.84985 L 327.93799,489.64451 C 327.93797,493.16012 328.86662,495.88803 330.72393,497.82822 C 332.58121,499.76845 335.05208,500.73855 338.13654,500.73854 C 341.18779,500.73855 343.65036,499.76845 345.52427,497.82822 C 347.39812,495.88803 348.33506,493.16012 348.33509,489.64451 L 348.33509,489.64451 z M 317.54044,490.2415 L 317.54044,458.25286 C 317.54043,451.58655 319.62989,446.43753 323.80882,442.80579 C 327.98772,439.17418 332.76363,437.35834 338.13654,437.35827 C 343.47624,437.35834 348.24385,439.17418 352.43939,442.80579 C 356.63485,446.43753 358.7326,451.58655 358.73264,458.25286 L 358.73264,490.2415 C 358.7326,496.90788 356.63485,502.04861 352.43939,505.6637 C 348.24385,509.2788 343.47624,511.08634 338.13654,511.08634 C 332.76363,511.08634 327.98772,509.2788 323.80882,505.6637 C 319.62989,502.04861 317.54043,496.90788 317.54044,490.2415 L 317.54044,490.2415 z "
+     style="font-size:101.8860321px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text1898" />
+  <path
+     d="M 371.9405,510.98935 L 371.9405,459.34985 L 382.33805,459.34985 L 382.33805,464.872 L 382.53705,464.872 C 385.82046,460.79262 390.29787,458.75292 395.96929,458.75286 C 399.58435,458.75292 402.45321,459.39965 404.57587,460.69308 C 406.69846,461.9866 408.68842,463.57857 410.54576,465.46898 C 414.62513,460.99162 420.06435,458.75292 426.86344,458.75286 C 430.87646,458.75292 434.74859,460.27855 438.47984,463.32978 C 442.21094,466.38109 444.07653,470.82534 444.07661,476.66252 L 444.07661,510.98935 L 433.67906,510.98935 L 433.67906,480.24445 C 433.67899,476.76205 432.70059,474.04244 430.74387,472.08561 C 428.78701,470.12885 426.36589,469.15045 423.48051,469.15041 C 420.49551,469.15045 418.03293,470.12885 416.09277,472.08561 C 414.15251,474.04244 413.18241,476.76205 413.18246,480.24445 L 413.18246,510.98935 L 402.83466,510.98935 L 402.83466,480.24445 C 402.83462,476.76205 401.85622,474.04244 399.89946,472.08561 C 397.94263,470.12885 395.52152,469.15045 392.6361,469.15041 C 389.65114,469.15045 387.18856,470.12885 385.24837,472.08561 C 383.30814,474.04244 382.33803,476.76205 382.33805,480.24445 L 382.33805,510.98935 L 371.9405,510.98935 z "
+     style="font-size:101.8860321px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text1902" />
+  <g
+     transform="matrix(0.400053,0,0,0.400053,143.8447,217.2083)"
+     id="g2148">
+    <path
+       d="M 295.78419,86.816926 L 295.78419,335.08252 L 687.71625,335.4031 C 664.71649,354.19396 650.35734,380.09418 650.54503,414.08813 L 261.47933,413.85667 C 257.75238,281.97351 70.642616,282.42223 66.576854,413.09434 C 38.473995,412.88466 34.575813,406.50199 34.30487,380.61469 L 34.304868,281.61469 C 33.952015,237.37253 28.42681,266.57731 61.177014,182.67997 C 94.875059,93.246445 85.585107,101.51291 116.0648,99.204795 L 295.78419,86.816926 z M 217.93865,233.19966 L 219.48981,127.72046 L 119.43969,133.92512 C 101.20003,135.14704 101.04823,135.26154 94.62105,156.41701 L 69.026832,224.66825 C 60.428592,245.6025 61.79713,251.77115 85.314062,248.71131 L 217.93865,233.19966 z M 966.63494,335.59074 L 966.82552,391.36792 L 902.21802,414.23783 L 845.4914,414.20156 C 845.7223,381.85903 832.28136,354.65711 808.44981,335.54893 L 966.63494,335.59074 z "
+       style="fill:black;fill-rule:evenodd;stroke:none"
+       id="path2135" />
+    <rect
+       width="631.32404"
+       height="301.70154"
+       x="335.82718"
+       y="12.158683"
+       style="fill:black;stroke:none"
+       id="rect2137" />
+    <circle
+       cx="164"
+       cy="412"
+       r="77"
+       style="fill:black;stroke:none"
+       id="circle2139" />
+    <circle
+       cx="748"
+       cy="412"
+       r="77"
+       style="fill:black;stroke:none"
+       id="circle2141" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_267.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_267.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_267.svg	(revision 36424)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="Zeichen_267.svg"
+   inkscape:version="0.41"
+   sodipodi:version="0.32"
+   width="725"
+   height="725"
+   version="1.1">
+  <metadata>
+    <RDF>
+      <Work>
+        <format>image/svg+xml</format>
+        <type resource="http://purl.org/dc/dcmitype/StillImage" />
+      </Work>
+    </RDF>
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>MarianSigler; mariansigler@gmail.com</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title>Zeichen 267</dc:title>
+        <dc:description>Sign no 267 of German Straßenverkehrsordnung</dc:description>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs />
+  <path style="fill:#FFFFFF; fill-opacity:1; fill-rule:evenodd; stroke:#000000; stroke-width:2.5; stroke-linecap:butt; stroke-linejoin:miter; stroke-miterlimit:4; stroke-dashoffset:0; stroke-opacity:1"
+     d="M 712.50000,362.50000 C 712.50000,555.79966 555.79966,712.50000 362.50000,712.50000 C 169.20034,712.50000 12.500000,555.79966 12.500000,362.50000 C 12.500000,169.20034 169.20034,12.500000 362.50000,12.500000 C 555.79966,12.500000 712.50000,169.20034 712.50000,362.50000 L 712.50000,362.50000 z " />
+  <path style="fill:#CC0000; fill-opacity:1; fill-rule:evenodd;"
+     d="M 361.44830,27.362500 C 176.66244,27.362500 25.948300,178.07664 25.948300,362.86250 C 25.948300,547.64836 176.66244,698.36250 361.44830,698.36250 C 546.23416,698.36250 696.94830,547.64836 696.94830,362.86250 C 696.94830,178.07664 546.23416,27.362500 361.44830,27.362500 z " />
+  <rect
+     style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+     id="rect1324"
+     width="614.05017"
+     height="109.03694"
+     x="55.474930"
+     y="307.98154" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_268.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_268.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_268.svg	(revision 36424)
@@ -0,0 +1,341 @@
+<?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://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docname="Zeichen 268.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG">
+  <metadata
+     id="metadata18">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1.1452534"
+     inkscape:cx="436.06524"
+     inkscape:cy="272.50156"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <path
+     d="M -176.30905,369.66949 C -176.30905,540.44638 -314.75107,678.88839 -485.52795,678.88839 C -656.30484,678.8884 -794.74686,540.44638 -794.74686,369.66949 C -794.74686,198.8926 -656.30484,60.450585 -485.52795,60.450585 C -314.75107,60.450585 -176.30905,198.8926 -176.30905,369.66949 z "
+     style="opacity:1;fill:#039;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883"
+     transform="matrix(1.061206,0,0,1.061206,877.7452,-29.79549)" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 329.44838,657.68381 C 192.51917,632.50501 170.53994,539.42549 147.07361,390.69976 C 127.0443,263.7573 200.46315,101.82253 299.1142,74.987119 C 309.35178,72.202255 318.99733,69.792623 329.7229,70.133679 C 329.7229,70.133679 489.23922,51.793627 553.19577,181.19371 C 555.0725,189.41912 594.5839,259.0079 593.91861,353.08353 C 593.51364,410.34813 580.79617,471.7149 551.04254,542.00185 C 529.55009,592.77341 490.41095,625.96728 447.58622,642.16938 C 404.12667,658.61166 356.93604,657.68381 329.44838,657.68381 z "
+     id="path13508"
+     sodipodi:nodetypes="cssccsssc" />
+  <path
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.40503788;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;opacity:1"
+     d="M 390.2957,653.23224 C 627.1079,672.60167 687.94537,106.10936 399.69644,72.397416 L 375.24447,72.960894"
+     id="path9079"
+     sodipodi:nodetypes="cc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:9.69643307;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 427.92039,104.46108 C 421.90646,93.219976 444.63934,85.189672 451.81118,98.595141 L 466.98371,129.99606 C 471.37948,138.21252 453.83777,151.50201 445.84806,136.56779 C 445.84806,136.56779 427.92039,104.46108 427.92039,104.46108 z "
+     id="path8169"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1910"
+     sodipodi:cx="518.95953"
+     sodipodi:cy="368.92087"
+     sodipodi:rx="39.67186"
+     sodipodi:ry="101.27613"
+     d="M 558.63139 368.92087 A 39.67186 101.27613 0 1 1  479.28767,368.92087 A 39.67186 101.27613 0 1 1  558.63139 368.92087 z"
+     transform="matrix(0.945362,0,0,1.220953,-64.01822,-87.09674)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1912"
+     sodipodi:cx="544.76239"
+     sodipodi:cy="405.36737"
+     sodipodi:rx="30.640867"
+     sodipodi:ry="79.021187"
+     d="M 575.40326 405.36737 A 30.640867 79.021187 0 1 1  514.12152,405.36737 A 30.640867 79.021187 0 1 1  575.40326 405.36737 z"
+     transform="matrix(1.012133,0,0,1.410639,-135.4053,-209.0344)" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 359.56254,554.24858 C 348.35555,561.67368 337.00307,540.35976 350.36787,531.50501 L 381.87493,512.36576 C 390.06647,506.93851 406.3678,522.43718 391.47889,532.3017 C 391.47889,532.3017 359.56254,554.24858 359.56254,554.24858 z "
+     id="path8143"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 345.81174,189.7829 C 334.40378,182.67041 349.08026,163.49325 362.6847,171.97519 L 393.17789,192.69164 C 401.51632,197.89038 394.18493,219.1552 379.02904,209.70598 C 379.02904,209.70598 345.81174,189.7829 345.81174,189.7829 z "
+     id="path8155"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:4.44534969;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1914"
+     sodipodi:cx="179.45456"
+     sodipodi:cy="396.90631"
+     sodipodi:rx="73.413231"
+     sodipodi:ry="108.76034"
+     d="M 252.86779 396.90631 A 73.413231 108.76034 0 1 1  106.04133,396.90631 A 73.413231 108.76034 0 1 1  252.86779 396.90631 z"
+     transform="matrix(1.073414,0,0,1.725473,270.9496,-322.5078)" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 318.83144,443.65832 C 305.39458,444.08226 306.94365,419.98324 322.96765,419.47768 L 359.83125,419.76211 C 369.65267,419.45224 375.37068,441.20646 357.51931,441.76967 C 357.51931,441.76967 318.83144,443.65832 318.83144,443.65832 z "
+     id="path8133"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:8.01780701;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path3688"
+     sodipodi:cx="647.67798"
+     sodipodi:cy="418.03397"
+     sodipodi:rx="79.282616"
+     sodipodi:ry="120.75352"
+     d="M 726.96059 418.03397 A 79.282616 120.75352 0 1 1  568.39536,418.03397 A 79.282616 120.75352 0 1 1  726.96059 418.03397 z"
+     transform="matrix(1.242475,0,0,1.815766,-342.0382,-397.9389)" />
+  <path
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;opacity:1"
+     d="M 401.6986,624.98193 C 239.47879,534.56322 257.80609,170.85532 405.76437,98.057452"
+     id="path5460"
+     sodipodi:nodetypes="cc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;opacity:1"
+     d="M 246.77944,250.95683 C 237.27342,241.45081 255.90315,226.08542 267.23947,237.42174 L 292.26366,264.49194 C 299.21191,271.44018 287.26566,290.49875 274.63656,277.86965 C 274.63656,277.86965 246.77944,250.95683 246.77944,250.95683 z "
+     id="path6349"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 194.60521,220.36455 C 182.82841,213.88107 196.44347,193.93635 210.4878,201.66816 L 242.0594,220.70076 C 250.66745,225.43973 244.49984,247.07079 228.85391,238.45724 C 228.85391,238.45724 194.60521,220.36455 194.60521,220.36455 z "
+     id="path8121"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 229.79946,321.52208 C 217.21274,326.24472 210.9294,302.92774 225.93958,297.2958 L 260.93635,285.70996 C 270.13637,282.25804 282.54668,301.01773 265.82476,307.29193 C 265.82476,307.29193 229.79946,321.52208 229.79946,321.52208 z "
+     id="path8123"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 176.47074,352.0051 C 165.17319,359.29167 154.08396,337.83961 167.55676,329.15007 L 199.29704,310.40013 C 207.55477,305.07414 223.66407,320.7723 208.65485,330.45279 C 208.65485,330.45279 176.47074,352.0051 176.47074,352.0051 z "
+     id="path8125"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 316.75689,302.46852 C 303.36251,301.3198 307.71633,277.56677 323.68967,278.93667 L 360.26762,283.52573 C 370.05799,284.36536 373.19542,306.63863 355.40049,305.1125 C 355.40049,305.1125 316.75689,302.46852 316.75689,302.46852 z "
+     id="path8127"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 222.1274,426.3885 C 209.38741,422.09644 219.24941,400.05324 234.44236,405.17169 L 268.88894,418.30329 C 278.201,421.44048 275.96748,443.82247 259.04194,438.1203 C 259.04194,438.1203 222.1274,426.3885 222.1274,426.3885 z "
+     id="path8129"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 161.51935,394.41241 C 149.77302,387.87386 163.48133,367.9931 177.4893,375.79059 L 208.97145,394.9708 C 217.55721,399.75002 211.2884,421.35197 195.68296,412.66525 C 195.68296,412.66525 161.51935,394.41241 161.51935,394.41241 z "
+     id="path8131"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 262.86086,491.70217 C 253.5731,501.42157 237.78872,483.14549 248.86474,471.55471 L 275.35982,445.92239 C 282.14852,438.81817 301.4734,450.32864 289.13427,463.24121 C 289.13427,463.24121 262.86086,491.70217 262.86086,491.70217 z "
+     id="path8135"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 203.505,525.06496 C 191.55826,531.22972 182.58641,508.80946 196.83339,501.45774 L 230.23178,485.85154 C 238.96403,481.34552 253.48672,498.52206 237.61502,506.71216 C 237.61502,506.71216 203.505,525.06496 203.505,525.06496 z "
+     id="path8137"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 191.36584,547.74724 C 178.36055,544.34262 186.6813,521.67266 202.19063,525.7328 L 237.45967,536.46131 C 246.96564,538.94984 246.2786,561.4325 229.0006,556.90933 C 229.0006,556.90933 191.36584,547.74724 191.36584,547.74724 z "
+     id="path8139"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 258.34347,561.97517 C 244.9092,561.47578 248.1088,537.53994 264.12971,538.13548 L 300.88684,540.94961 C 310.70637,541.31462 314.91765,563.41003 297.06973,562.74657 C 297.06973,562.74657 258.34347,561.97517 258.34347,561.97517 z "
+     id="path8141"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:9.5115118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 298.17774,611.28257 C 289.37856,620.56543 274.49021,603.04662 284.9836,591.97643 L 310.08101,567.49919 C 316.51261,560.71405 334.76099,571.76553 323.07094,584.09815 C 323.07094,584.09815 298.17774,611.28257 298.17774,611.28257 z "
+     id="path8145"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10.40503788;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;opacity:1"
+     d="M 390.28808,653.45521 L 390.28808,653.45521 L 390.28808,653.45521 L 340.81719,652.87204 C 117.21855,677.74712 42.686282,106.71164 330.93521,72.999699 L 343.37379,72.52431 L 347.30305,72.960895"
+     id="path8191"
+     sodipodi:nodetypes="ccccccc" />
+  <path
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:9.6683054;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 285.70302,643.49342 C 273.53854,640.99085 280.15263,617.51894 294.65927,620.50336 L 327.71848,628.79915 C 336.60989,630.62836 337.03317,653.3637 320.8722,650.03893 C 320.8722,650.03893 285.70302,643.49342 285.70302,643.49342 z "
+     id="path8147"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:9.51073933;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 349.79953,654.76463 C 336.98918,655.75818 337.42422,632.90615 352.70108,631.72132 L 387.90857,630.36406 C 397.27205,629.63784 403.67364,649.95247 386.6546,651.27242 C 386.6546,651.27242 349.79953,654.76463 349.79953,654.76463 z "
+     id="path8149"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:8.2296505;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 247.86886,626.1474 C 237.61251,628.90944 234.8736,608.30748 247.10471,605.01362 L 275.47869,598.65683 C 282.97538,596.63796 290.91632,613.96192 277.29038,617.63139 C 277.29038,617.63139 247.86886,626.1474 247.86886,626.1474 z "
+     id="path8151"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:9.25247478;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 444.70488,629.93767 C 438.19376,640.69848 421.00802,626.6121 428.77279,613.77941 L 447.71537,585.03064 C 452.47454,577.16522 471.60397,584.30186 462.9537,598.59798 C 462.9537,598.59798 444.70488,629.93767 444.70488,629.93767 z "
+     id="path8153"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 259.32192,185.24493 C 245.89043,185.81421 247.17869,161.69985 263.19628,161.02096 L 300.0608,160.90655 C 309.8783,160.49044 315.83133,182.18153 297.9871,182.93783 C 297.9871,182.93783 259.32192,185.24493 259.32192,185.24493 z "
+     id="path8157"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 200.77116,197.77209 C 187.69589,200.89719 184.35297,176.98093 199.94577,173.25413 L 236.10928,166.09828 C 245.6664,163.81404 255.65419,183.9681 238.28321,188.1199 C 238.28321,188.1199 200.77116,197.77209 200.77116,197.77209 z "
+     id="path8159"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:9.43849659;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 281.39634,129.5502 C 272.17124,120.84139 289.23623,105.74447 300.23753,116.13007 L 324.58322,140.99146 C 331.32613,147.357 320.6579,165.74765 308.40202,154.17766 C 308.40202,154.17766 281.39634,129.5502 281.39634,129.5502 z "
+     id="path8161"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:8.7036705;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 245.1619,120.74968 C 235.49164,119.54435 238.63494,94.620884 250.16711,96.058286 L 276.57505,100.87348 C 283.64335,101.75447 285.90846,125.12528 273.06117,123.52394 C 273.06117,123.52394 245.1619,120.74968 245.1619,120.74968 z "
+     id="path8163"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:9.69535637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1"
+     d="M 289.38352,104.58938 C 276.97579,106.22794 276.41195,81.820179 291.20867,79.866137 L 325.3689,76.828453 C 334.4381,75.630775 341.53701,97.021994 325.05288,99.198871 C 325.05288,99.198871 289.38352,104.58938 289.38352,104.58938 z "
+     id="path8165"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 348.79823,95.831562 C 335.3555,95.68362 337.92815,71.672297 353.95915,71.848728 L 390.77729,73.700788 C 400.60301,73.808918 405.39059,95.786661 387.53142,95.590098 C 387.53142,95.590098 348.79823,95.831562 348.79823,95.831562 z "
+     id="path8167"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8171"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="translate(60.98577,57.42455)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8173"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="translate(-82.35305,-12.9094)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8175"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="matrix(0.922621,0,0,0.922621,78.6747,-52.69419)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8177"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="matrix(0.94473,0,0,0.94473,-46.18865,-150.8981)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8179"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="matrix(0.911567,0,0,0.911567,116.1779,-167.6307)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8181"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="matrix(0.889459,0,0,0.889459,209.4355,-244.8166)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8183"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="matrix(0.900513,0,0,0.900513,-36.39865,185.7324)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8185"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="matrix(0.878405,0,0,0.878405,122.7414,220.2794)" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8187"
+     sodipodi:cx="231.47882"
+     sodipodi:cy="374.66571"
+     sodipodi:rx="15.135154"
+     sodipodi:ry="15.135154"
+     d="M 246.61397 374.66571 A 15.135154 15.135154 0 1 1  216.34367,374.66571 A 15.135154 15.135154 0 1 1  246.61397 374.66571 z"
+     transform="matrix(0.867351,0,0,0.867351,214.1078,311.003)" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_269.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_269.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_269.svg	(revision 36424)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     style="fill-opacity:1"
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;fill-opacity:1;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;fill-opacity:1;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <g
+     transform="translate(-8.5735e-2,0)"
+     style="fill-opacity:1"
+     id="g3776">
+    <path
+       d="M 226.10768,484.87409 C 240.03676,479.59445 254.37822,475.64475 284.33382,484.87409 C 300.37289,489.75503 317.13972,490.13557 334.81893,484.87409 C 352.45815,478.6733 370.86684,477.32049 390.68911,484.87409 C 407.77794,490.95448 427.91826,488.51014 447.1902,483.51021 C 466.27121,476.91195 481.73978,480.2148 499.40036,484.87409 L 499.40036,500.18926 C 480.10384,492.35999 460.80731,494.09027 441.51078,500.18926 C 421.41231,508.00442 406.48694,504.61017 392.03538,500.18926 C 370.43056,490.52699 351.49181,493.92956 333.13609,500.18926 C 312.12588,507.99694 297.13276,503.93352 281.97786,500.18926 C 256.67357,491.24083 241.19533,495.67825 225.77111,500.18926 L 226.10768,484.87409 z "
+       style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5599" />
+    <path
+       d="M 226.10768,513.13535 C 240.03676,507.85571 254.37822,503.90601 284.33382,513.13535 C 300.37289,518.01629 317.13972,518.39683 334.81893,513.13535 C 352.45815,506.93456 370.86684,505.58175 390.68911,513.13535 C 407.77794,519.21574 427.91826,516.7714 447.1902,511.77147 C 466.27121,505.17321 481.73978,508.47606 499.40036,513.13535 L 499.40036,528.45052 C 480.10384,520.62125 460.80731,522.35153 441.51078,528.45052 C 421.41231,536.26568 406.48694,532.87143 392.03538,528.45052 C 370.43056,518.78825 351.49181,522.19082 333.13609,528.45052 C 312.12588,536.2582 297.13276,532.19478 281.97786,528.45052 C 256.67357,519.50209 241.19533,523.93951 225.77111,528.45052 L 226.10768,513.13535 z "
+       style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5597" />
+  </g>
+  <g
+     transform="matrix(0.998512,0,0,1,855.2924,-420.5174)"
+     style="fill:black;fill-opacity:1"
+     id="g3818">
+    <path
+       d="M -613.62771,804.14653 L -585.37101,804.14653 L -581.95688,809.31013 L -581.85085,881.83388 L -587.15229,886.98689 L -612.66285,887.30498 L -617.04184,882.90477 L -616.82978,807.7197 L -613.62771,804.14653 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3780" />
+    <path
+       d="M -572.4182,804.6503 L -575.63695,808.2128 L -575.8557,883.4003 L -571.44945,887.80655 L -545.94945,887.49405 L -540.63695,882.3378 L -540.6682,858.5878 L -537.76195,855.5253 L -517.63695,855.43155 L -517.6057,856.36905 L -514.7932,856.30655 C -514.70819,858.3126 -503.54907,868.55653 -493.26195,868.55655 L -493.26195,868.49405 C -482.98355,868.47348 -471.87813,858.27932 -471.7932,856.2753 L -468.9807,856.3378 L -468.9182,855.36905 L -448.7932,855.49405 L -446.01195,858.4003 L -446.07445,883.4003 L -441.69945,887.80655 L -416.19945,887.49405 L -410.88695,882.3378 L -411.01195,809.80655 L -414.4182,804.6503 L -442.6682,804.6503 L -445.88695,808.2128 L -445.94945,831.9628 L -449.9807,836.11905 L -468.94945,836.05655 L -468.9182,835.0878 L -471.9807,835.05655 C -471.98069,832.16599 -482.9894,822.99405 -493.2932,822.99405 L -493.2932,823.0253 C -503.58777,823.04443 -514.57446,832.23148 -514.57445,835.11905 L -517.63695,835.11905 L -517.63695,836.11905 L -536.6057,836.1503 L -540.7307,831.9003 L -540.76195,809.80655 L -544.1682,804.6503 L -572.4182,804.6503 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3784" />
+    <path
+       d="M -401.78864,804.05321 L -373.53194,804.05321 L -370.11781,809.21681 L -370.01178,881.74056 L -375.31322,886.89357 L -400.82378,887.21166 L -405.20277,882.81145 L -404.99071,807.62638 L -401.78864,804.05321 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3788" />
+  </g>
+  <path
+     d="M 225.05803,336.52885 L 225.05803,378.3915 L 499.06176,378.3915 L 499.20845,336.51488 L 461.48809,336.5168 C 405.51057,370.43438 319.58159,369.62551 263.01592,336.52692 L 225.05803,336.52885 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3823" />
+  <path
+     d="M 463.86172 273.58536 A 128.20508 73.022957 0 1 1  207.45157,273.58536 A 128.20508 73.022957 0 1 1  463.86172 273.58536 z"
+     transform="matrix(0.993859,0,0,1.108538,28.90462,-34.6734)"
+     style="opacity:1;fill:#f60;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path3827" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_270.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_270.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_270.svg	(revision 36424)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="760"
+   height="760"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 45.824811,3.3417118 L 713.26505,3.3417118 C 730.52936,3.3417118 757.66931,28.70753 757.66931,47.945769 L 757.66931,711.00841 C 757.66931,728.56947 731.4376,756.65818 710.65713,756.65818 L 48.432727,756.65818 C 31.534484,756.65818 3.7545745,731.36166 3.7545745,718.73902 L 3.7545745,46.269253 C 3.7545745,27.174554 26.491429,3.3417118 45.824811,3.3417118 z "
+     style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:2.01808;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect2841" />
+  <path
+     d="M 25.443662,52.632534 L 25.443662,710.96204 C 25.443662,726.77315 40.985837,735.15473 52.918434,735.15473 L 710.27844,734.90301 C 721.49547,734.90301 734.94337,721.48607 734.94337,708.97952 L 734.94337,54.088023 C 735.11544,34.671252 719.24918,24.683563 708.05602,24.683563 L 53.853079,24.935273 C 34.160919,24.935273 25.443662,39.076817 25.443662,52.632534 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:17;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1934" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     transform="matrix(0.716659,0,0,0.716659,120.2111,111.7111)"
+     style="opacity:1;fill:none;stroke:#c00;stroke-width:93.75"
+     id="circle6" />
+  <path
+     d="M 239.07224,402.68666 L 247.15055,393.50174 C 250.17529,395.93631 253.66113,397.89134 257.60808,399.36681 C 261.555,400.84231 265.68636,401.58006 270.0022,401.58005 C 274.98194,401.58006 278.89199,400.54722 281.73235,398.48152 C 284.57262,396.41585 285.99278,393.70464 285.99283,390.34788 C 285.99278,384.0033 282.48849,380.36991 275.47996,379.44769 C 273.63556,379.2264 271.9203,379.00508 270.33419,378.78372 C 268.748,378.56243 266.90364,378.30422 264.8011,378.00909 C 257.82939,377.05006 252.51763,374.49562 248.8658,370.34576 C 245.21396,366.19599 243.38804,361.18855 243.38805,355.32343 C 243.38804,348.46246 245.68427,342.81872 250.27674,338.39218 C 254.86919,333.96579 261.33367,331.75255 269.67022,331.75247 C 274.64996,331.75255 279.33464,332.54563 283.72426,334.1317 C 288.11379,335.71793 292.15294,337.72828 295.84172,340.16276 L 289.03603,350.23299 C 286.085,348.38869 282.9127,346.89476 279.51911,345.75118 C 276.12545,344.60775 272.65805,344.036 269.11691,344.03593 C 265.35438,344.036 262.16364,344.99506 259.54466,346.91313 C 256.92565,348.83133 255.61615,351.70854 255.61617,355.54475 C 255.61615,357.83182 256.50145,359.97127 258.27205,361.96313 C 260.04262,363.95509 262.97515,365.26459 267.06966,365.89163 C 268.13936,366.07611 269.43042,366.26977 270.94283,366.4726 C 272.45517,366.67553 274.18887,366.88763 276.14393,367.10891 C 283.66888,368.03113 289.22963,370.76079 292.82619,375.29788 C 296.42264,379.83504 298.22089,384.8517 298.22095,390.34788 C 298.22089,397.76223 295.65723,403.51664 290.52996,407.61111 C 285.40258,411.7056 278.52312,413.75284 269.89154,413.75284 C 257.75561,413.75284 247.48252,410.06412 239.07224,402.68666 L 239.07224,402.68666 z M 311.16838,413.08887 L 311.16838,332.47177 L 322.73254,332.47177 L 345.86085,385.03611 L 368.49118,332.47177 L 380.05533,332.47177 L 380.05533,413.08887 L 367.82721,413.08887 L 367.82721,362.7931 L 367.60588,362.7931 L 350.72996,401.58005 L 340.54908,401.58005 L 323.67316,362.7931 L 323.39651,362.7931 L 323.39651,413.08887 L 311.16838,413.08887 z M 394.3307,372.80799 C 394.3307,363.10669 394.58891,356.8543 395.10534,354.05082 C 395.62175,351.24745 396.54393,348.66534 397.87188,346.30449 C 399.75312,342.80027 402.84242,339.49887 407.1398,336.40026 C 411.43715,333.30182 416.75813,331.75255 423.10276,331.75247 C 429.41044,331.75255 434.71298,333.30182 439.01039,336.40026 C 443.3077,339.49887 446.43389,342.80027 448.38898,346.30449 C 449.67997,348.66534 450.58371,351.24745 451.10019,354.05082 C 451.61655,356.8543 451.87476,363.10669 451.87482,372.80799 C 451.87476,382.50937 451.61655,388.76175 451.10019,391.56516 C 450.58371,394.36861 449.67997,396.95071 448.38898,399.31148 C 446.43389,402.85267 443.3077,406.14485 439.01039,409.18804 C 434.71298,412.23124 429.41044,413.75284 423.10276,413.75284 C 416.75813,413.75284 411.43715,412.23124 407.1398,409.18804 C 402.84242,406.14485 399.75312,402.85267 397.87188,399.31148 C 396.54393,396.95071 395.62175,394.36861 395.10534,391.56516 C 394.58891,388.76175 394.3307,382.50937 394.3307,372.80799 L 394.3307,372.80799 z M 406.55883,372.80799 C 406.55881,381.10765 406.84469,386.49318 407.41646,388.9646 C 407.98819,391.43607 409.06714,393.66775 410.65331,395.65964 C 411.87057,397.2827 413.5305,398.67519 415.63309,399.83712 C 417.73564,400.99908 420.22553,401.58006 423.10276,401.58005 C 425.97993,401.58006 428.46982,400.99908 430.57243,399.83712 C 432.67496,398.67519 434.33489,397.2827 435.55221,395.65964 C 437.13832,393.66775 438.21727,391.43607 438.78907,388.9646 C 439.36077,386.49318 439.64665,381.10765 439.6467,372.80799 C 439.64665,364.54529 439.36077,359.1782 438.78907,356.7067 C 438.21727,354.23531 437.13832,351.96675 435.55221,349.901 C 434.33489,348.3518 432.67496,346.98697 430.57243,345.80652 C 428.46982,344.62619 425.97993,344.036 423.10276,344.03593 C 420.22553,344.036 417.73564,344.62619 415.63309,345.80652 C 413.5305,346.98697 411.87057,348.3518 410.65331,349.901 C 409.06714,351.96675 407.98819,354.23531 407.41646,356.7067 C 406.84469,359.1782 406.55881,364.54529 406.55883,372.80799 L 406.55883,372.80799 z M 492.26637,380.27766 L 492.26637,368.7135 L 520.92777,368.7135 L 520.92777,385.14677 C 520.92771,393.15133 518.14272,399.92013 512.57281,405.45321 C 507.00278,410.9863 500.19709,413.75284 492.15571,413.75284 C 485.81108,413.75284 480.49009,412.23124 476.19275,409.18804 C 471.89537,406.14485 468.80607,402.85267 466.92483,399.31148 C 465.59688,396.95071 464.6747,394.36861 464.15828,391.56516 C 463.64186,388.76175 463.38365,382.50937 463.38365,372.80799 C 463.38365,363.10669 463.64186,356.8543 464.15828,354.05082 C 464.6747,351.24745 465.59688,348.66534 466.92483,346.30449 C 468.80607,342.80027 471.89537,339.49887 476.19275,336.40026 C 480.49009,333.30182 485.81108,331.75255 492.15571,331.75247 C 499.79133,331.75255 506.10827,334.10411 511.10654,338.80716 C 516.1047,343.51035 519.2309,349.12643 520.48512,355.65541 L 507.59303,355.65541 C 506.59702,352.55694 504.74344,349.84573 502.03227,347.52177 C 499.32102,345.19794 496.02883,344.036 492.15571,344.03593 C 489.27847,344.036 486.78859,344.62619 484.68604,345.80652 C 482.58344,346.98697 480.92352,348.3518 479.70626,349.901 C 478.12009,351.96675 477.04114,354.23531 476.46941,356.7067 C 475.89764,359.1782 475.61176,364.54529 475.61178,372.80799 C 475.61176,381.10765 475.89764,386.49318 476.46941,388.9646 C 477.04114,391.43607 478.12009,393.66775 479.70626,395.65964 C 480.92352,397.2827 482.58344,398.67519 484.68604,399.83712 C 486.78859,400.99908 489.27847,401.58006 492.15571,401.58005 C 496.80347,401.58006 500.72273,399.99391 503.91352,396.82159 C 507.10422,393.64931 508.69959,389.51794 508.69965,384.42747 L 508.69965,380.27766 L 492.26637,380.27766 z "
+     style="font-size:113.31764984px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text1928" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_270_1.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_270_1.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_270_1.svg	(revision 36424)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+	<!ENTITY ns_svg "http://www.w3.org/2000/svg">
+	<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg  version="1.1" id="Ebene_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="586.262" height="586.262"
+	 viewBox="0 0 586.262 586.262" overflow="visible" enable-background="new 0 0 586.262 586.262" xml:space="preserve">
+<path fill="#FFFFFF" stroke="#000000" d="M546.707,585.762c21.527,0,38.977-17.451,38.977-38.977l0.078-507.23
+	c0-21.527-17.451-38.977-38.977-38.977L39.554,0.5C18.027,0.5,0.578,17.951,0.578,39.477L0.5,546.708
+	c0,21.527,17.451,38.977,38.977,38.977L546.707,585.762z"/>
+<g>
+	<path fill="none" stroke="#000000" stroke-width="14" d="M39.479,568.685c-12.121,0-21.979-9.858-21.979-21.977
+		c0,0.003,0.078-507.229,0.078-507.229c0-12.121,9.859-21.979,21.977-21.979l507.228,0.078c12.121,0,21.979,9.858,21.979,21.977
+		l-0.078,507.228c0,12.121-9.858,21.979-21.977,21.979h0.003L39.479,568.685z"/>
+</g>
+<path fill="#CC0000" d="M478.146,238.128c0,102.229-82.873,185.104-185.102,185.104c-102.229,0-185.103-82.875-185.103-185.104
+	c0-102.229,82.874-185.101,185.103-185.101C395.273,53.027,478.146,135.899,478.146,238.128z"/>
+<path fill="#FFFFFF" d="M429.432,238.128c0,75.324-61.062,136.388-136.388,136.388s-136.388-61.064-136.388-136.388
+	c0-75.325,61.063-136.387,136.388-136.387S429.432,162.804,429.432,238.128z"/>
+<path d="M166.885,210.514h8.281v35.558c0,6.188,5.016,11.203,11.203,11.203c6.188,0,11.204-5.015,11.204-11.203v-35.558h8.28v35.558
+	c0,10.761-8.723,19.483-19.484,19.483c-10.76,0-19.484-8.723-19.484-19.483V210.514z M216.569,265.068v-38.967h7.793v4.397
+	c2.497-3.09,6.257-4.885,10.229-4.885c4.187,0,8.124,1.994,10.603,5.37l0,0c2.774-3.397,6.93-5.37,11.316-5.37
+	c8.071,0,14.613,6.543,14.613,14.613v24.842h-7.793V241.2c0-4.304-3.489-7.793-7.794-7.793c-4.304,0-7.793,3.489-7.793,7.793v23.868
+	h-7.794V241.2c0-4.304-3.488-7.793-7.793-7.793s-7.794,3.489-7.794,7.793v23.868H216.569z M291.096,265.068l-12.179-38.967h8.281
+	l7.306,27.277l8.77-27.277h5.845l8.767,27.277l7.308-27.277h8.28l-12.176,38.967h-6.819l-8.281-27.278l-8.28,27.278H291.096z
+	 M371.469,248.506h-24.357v0.975c0,3.386,2.061,6.431,5.205,7.689l0,0c1.288,0.514,2.664,0.779,4.051,0.779
+	c3.18,0,6.201-1.389,8.273-3.803l5.914,5.076c-3.553,4.139-8.734,6.52-14.188,6.52c-2.378,0-4.736-0.454-6.945-1.337l0,0
+	c-6.101-2.441-10.104-8.352-10.104-14.925v-7.793c0-8.877,7.195-16.075,16.074-16.075c8.878,0,16.076,7.197,16.076,16.075V248.506z
+	 M347.111,241.688h16.562c0-4.574-3.708-8.281-8.281-8.281C350.82,233.407,347.111,237.114,347.111,241.688z M395.822,265.068
+	h-4.871c-4.842,0-8.768-3.926-8.768-8.767v-45.788h7.793v44.813c0,1.344,1.09,2.436,2.436,2.436h3.41V265.068z M419.203,265.068
+	h-4.871c-4.844,0-8.768-3.926-8.768-8.767v-23.869h-3.897v-6.331h3.897V214.41h7.791v11.691h5.848v6.331h-5.848v22.895
+	c0,1.344,1.093,2.436,2.436,2.436h3.412V265.068z"/>
+<path d="M157.254,533.569v-10.221l37.233-60.596h-35.773v-10.951h51.104v9.49l-37.233,60.596h37.233v11.682H157.254z M221.5,505.097
+	v-24.822c0-16.127,13.074-29.203,29.202-29.203s29.202,13.076,29.202,29.203v24.822c0,16.129-13.074,29.201-29.202,29.201
+	S221.5,521.226,221.5,505.097z M233.911,505.097c0,9.273,7.518,16.791,16.791,16.791s16.791-7.518,16.791-16.791v-24.822
+	c0-9.273-7.518-16.791-16.791-16.791s-16.791,7.518-16.791,16.791V505.097z M295.965,533.569v-81.768h11.682l37.232,58.404v-58.404
+	h12.412v81.768h-11.682l-37.232-58.404v58.404H295.965z M376.271,533.569v-81.768h52.564v11.682h-40.154v23.361h34.314v10.951
+	h-34.314v24.092h40.154v11.682H376.271z"/>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_273.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_273.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_273.svg	(revision 36424)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <path
+     d="M 388.03576,283.98783 L 388.03576,220.87834 L 400.74278,220.87834 L 400.74278,227.62704 L 400.98597,227.62704 C 404.99869,222.64157 410.47061,220.14881 417.40174,220.14875 C 421.81977,220.14881 425.32585,220.9392 427.91999,222.51991 C 430.51403,224.10075 432.946,226.04632 435.21588,228.35663 C 440.20135,222.88477 446.84872,220.14881 455.158,220.14875 C 460.06238,220.14881 464.79457,222.01331 469.3546,225.74227 C 473.91443,229.47133 476.1944,234.90272 476.1945,242.03643 L 476.1945,283.98783 L 463.48748,283.98783 L 463.48748,246.41397 C 463.48739,242.15807 462.29168,238.83439 459.90033,236.44291 C 457.50882,234.05153 454.54993,232.85581 451.02366,232.85576 C 447.37564,232.85581 444.36609,234.05153 441.99499,236.44291 C 439.62376,238.83439 438.43818,242.15807 438.43824,246.41397 L 438.43824,283.98783 L 425.79202,283.98783 L 425.79202,246.41397 C 425.79197,242.15807 424.59626,238.83439 422.20487,236.44291 C 419.8134,234.05153 416.85451,232.85581 413.3282,232.85576 C 409.68022,232.85581 406.67067,234.05153 404.29953,236.44291 C 401.92834,238.83439 400.74276,242.15807 400.74278,246.41397 L 400.74278,283.98783 L 388.03576,283.98783 z "
+     style="font-size:124.51661682px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text3785" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     style="fill:none;stroke:#c00;stroke-width:93.75"
+     id="circle6" />
+  <path
+     d="M 503.5953,358.21088 L 503.5953,461.90868 L 582.58614,462.62011 C 583.48307,462.91909 564.99842,494.92708 564.36504,494.71595 L 489.26654,494.81178 C 487.70983,439.72563 409.55614,439.91306 407.85792,494.49336 C 396.11966,494.40578 394.49144,491.73981 394.37827,480.92697 L 394.37827,439.57576 C 394.23088,421.09629 391.92307,433.29481 405.60247,398.25181 C 419.67777,360.89641 415.79746,364.34923 428.52849,363.38515 L 503.5953,358.21088 z M 471.08008,419.35333 L 471.72798,375.29583 L 429.93814,377.88745 C 422.31964,378.39783 422.25623,378.44566 419.57167,387.28206 L 408.88125,415.78986 C 405.28986,424.53386 405.86148,427.11044 415.68425,425.83238 L 471.08008,419.35333 z "
+     style="opacity:1;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path3725" />
+  <path
+     d="M 520.3208,327.02695 L 601.55532,326.97084 C 609.54769,397.47741 595.63425,420.68735 585.95735,453.04436 L 520.3208,453.04436 L 520.3208,327.02695 z "
+     style="opacity:1;fill:black;fill-opacity:1;stroke:none"
+     id="rect3727" />
+  <circle
+     cx="164"
+     cy="412"
+     r="77"
+     transform="matrix(0.417689,0,0,0.417689,380.0495,321.9484)"
+     style="fill:black;fill-opacity:1;stroke:none"
+     id="circle3729" />
+  <path
+     d="M 141.61171,461.96258 L 192.27177,462.09649 C 182.66503,469.94522 176.66737,480.76346 176.74576,494.96236 L 160.04958,494.97717 C 152.34151,484.23266 147.38409,473.02971 141.61171,461.96258 z M 308.77304,462.17486 L 308.85264,485.47238 L 281.8668,495.02488 L 258.17272,495.00974 C 258.26916,481.50062 252.65503,470.13867 242.70085,462.1574 L 308.77304,462.17486 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path3756" />
+  <path
+     d="M 123.01404,327.08084 L 308.98871,327.08084 L 308.98871,453.09825 L 138.47864,453.09825 C 121.07785,411.32735 118.78551,369.27584 123.01404,327.08084 z "
+     style="fill:black;fill-opacity:1;stroke:none"
+     id="rect3758" />
+  <circle
+     cx="748"
+     cy="412"
+     r="77"
+     transform="matrix(0.417689,0,0,0.417689,-94.97974,322.0023)"
+     style="fill:black;fill-opacity:1;stroke:none"
+     id="circle3762" />
+  <path
+     d="M 256.55696,221.24165 L 256.55696,195.76681 L 306.95944,195.76681 L 306.95944,208.47383 L 276.98546,284.35114 L 262.75847,284.35114 L 292.79324,208.47383 L 269.26398,208.47383 L 269.26398,221.24165 L 256.55696,221.24165 z "
+     style="font-size:124.51661682px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text3775" />
+  <path
+     d="M 358.84094,257.78338 L 358.84094,220.14872 C 358.84089,215.89285 357.69584,212.56917 355.40578,210.17766 C 353.11565,207.78631 350.10609,206.59059 346.37711,206.59052 C 342.60754,206.59059 339.58785,207.78631 337.31804,210.17766 C 335.04819,212.56917 333.91327,215.89285 333.91329,220.14872 L 333.91329,257.78338 C 333.91327,262.07988 335.04819,265.41369 337.31804,267.78484 C 339.58785,270.15602 342.60754,271.3416 346.37711,271.34159 C 350.10609,271.3416 353.11565,270.15602 355.40578,267.78484 C 357.69584,265.41369 358.84089,262.07988 358.84094,257.78338 L 358.84094,257.78338 z M 321.20627,258.51297 L 321.20627,219.41913 C 321.20627,211.27212 323.75983,204.97942 328.86696,200.541 C 333.97407,196.10275 339.81078,193.88359 346.37711,193.8835 C 352.90285,193.88359 358.72943,196.10275 363.85686,200.541 C 368.9842,204.97942 371.5479,211.27212 371.54795,219.41913 L 371.54795,258.51297 C 371.5479,266.66007 368.9842,272.94264 363.85686,277.3607 C 358.72943,281.77877 352.90285,283.98781 346.37711,283.98781 C 339.81078,283.98781 333.97407,281.77877 328.86696,277.3607 C 323.75983,272.94264 321.20627,266.66007 321.20627,258.51297 L 321.20627,258.51297 z "
+     style="font-size:124.51661682px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text3779" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_274.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_274.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_274.svg	(revision 36424)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="600"
+   height="600"
+   id="svg1961">
+  <defs
+     id="defs1963" />
+  <g
+     transform="translate(0.62188,-134.606)"
+     id="layer1">
+    <path
+       d="M 591.95264,434.74696 C 593.09662,287.86662 481.45088,162.26431 335.97021,144.44513 C 168.29633,123.44973 18.636786,248.23779 7.3113803,416.57787 C -2.5874147,584.50073 131.06315,727.83475 299.63202,727.0676 C 460.35453,728.16448 592.98223,595.36181 591.95264,434.74696"
+       style="fill:#fffefe;fill-rule:evenodd;stroke:black;stroke-width:1.1739316;stroke-opacity:1"
+       id="path10" />
+    <path
+       d="M 591.69875,434.80787 L 591.29499,416.63878 M 591.29499,416.63878 L 586.85366,379.89681 M 586.85366,379.89681 L 577.56724,344.36613 M 577.56724,344.36613 L 564.24322,310.04673 M 564.24322,310.04673 L 546.47788,278.14986 M 546.47788,278.14986 L 524.67496,248.27178 M 524.67496,248.27178 L 499.64199,221.62377 M 499.64199,221.62377 L 471.37893,198.20582 M 471.37893,198.20582 L 440.28959,178.42168 M 440.28959,178.42168 L 407.18144,162.67514 M 407.18144,162.67514 L 372.05453,151.36992 M 372.05453,151.36992 L 335.71632,144.50604 M 335.71632,144.50604 L 299.37813,142.08349 M 299.37813,142.08349 L 262.63617,144.50604 M 262.63617,144.50604 L 226.70172,151.36992 M 226.70172,151.36992 L 191.5748,162.67514 M 191.5748,162.67514 L 158.46666,178.42168 M 158.46666,178.42168 L 127.37732,198.20582 M 127.37732,198.20582 L 99.114266,221.62377 M 99.114266,221.62377 L 74.081283,248.27178 M 74.081283,248.27178 L 52.278363,278.14986 M 52.278363,278.14986 L 34.513021,310.04673 M 34.513021,310.04673 L 21.189014,344.36613 M 21.189014,344.36613 L 11.902585,379.89681 M 11.902585,379.89681 L 7.0574922,416.63878 M 7.0574922,416.63878 L 7.0574922,452.97698 M 7.0574922,452.97698 L 11.902585,489.71893 M 11.902585,489.71893 L 21.189014,525.24962 M 21.189014,525.24962 L 34.513021,559.16528 M 34.513021,559.16528 L 52.278363,591.4659 M 52.278363,591.4659 L 74.081283,621.34397 M 74.081283,621.34397 L 99.114266,647.99199 M 99.114266,647.99199 L 127.37732,671.40994 M 127.37732,671.40994 L 158.46666,691.19406 M 158.46666,691.19406 L 191.5748,706.94062 M 191.5748,706.94062 L 226.70172,718.24584 M 226.70172,718.24584 L 262.63617,725.10972 M 262.63617,725.10972 L 299.37813,727.12851 M 299.37813,727.12851 L 335.71632,725.10972 M 335.71632,725.10972 L 372.05453,718.24584 M 372.05453,718.24584 L 407.18144,706.94062 M 407.18144,706.94062 L 440.28959,691.19406 M 440.28959,691.19406 L 471.37893,671.40994 M 471.37893,671.40994 L 499.64199,647.99199 M 499.64199,647.99199 L 524.67496,621.34397 M 524.67496,621.34397 L 546.47788,591.4659 M 546.47788,591.4659 L 564.24322,559.16528 M 564.24322,559.16528 L 577.56724,525.24962 M 577.56724,525.24962 L 586.85366,489.71893 M 586.85366,489.71893 L 591.29499,452.97698 M 591.29499,452.97698 L 591.69875,434.80787"
+       id="path14" />
+    <path
+       d="M 577.25603,434.71143 C 577.71363,294.64114 472.93175,176.59581 334.19386,158.94488 C 175.51705,138.81082 31.52356,257.36757 22.089087,417.34986 C 11.712512,577.4129 139.26632,712.78614 299.47069,712.49679 C 452.43432,712.94766 577.88186,587.78947 577.25603,434.71143"
+       style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path16" />
+    <path
+       d="M 504.08836,434.63645 C 504.39791,331.94066 426.91007,243.75996 324.81991,231.54629 C 208.09354,216.52649 102.0331,304.28326 95.081736,421.71621 C 87.645864,540.16528 181.13599,638.77639 299.38318,639.34165 C 412.96697,638.43992 503.57021,548.65766 504.08836,434.63645"
+       style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+       id="path18" />
+    <path
+       d="M 220.0529,315.08708 L 258.4099,315.08708 L 207.13266,417.2378 C 234.1777,407.23133 261.46499,416.36971 276.579,441.05949 C 290.37405,466.4626 287.0767,517.89461 262.44747,537.55761 C 232.48192,564.81799 189.36059,561.7427 162.71931,531.50125 C 149.67792,514.55688 146.2931,498.25853 147.3765,477.3977 L 147.3765,474.16764 L 147.78027,467.70752 L 148.99154,461.65115 L 150.60657,455.59477 L 153.02912,449.53841 L 154.24039,446.71211 L 220.0529,315.08708 z M 181.29216,477.3977 C 175.18197,532.98843 246.97009,536.52802 249.52722,487.89541 C 256.32381,431.44334 183.75509,428.73144 181.29216,477.3977 z M 313.7247,487.89541 C 320.85776,423.46912 285.03099,330.98167 373.48087,313.47204 C 413.9643,308.64714 450.45728,340.1739 450.19484,381.30335 C 443.08197,446.58425 478.88857,537.5105 390.4387,555.72672 C 349.34288,560.34974 313.76509,529.51609 313.7247,487.89541 z M 347.64036,487.89541 L 347.64036,381.30335 L 348.04413,378.8808 L 348.44787,374.84323 L 349.2554,370.80565 L 350.87042,366.76807 L 352.88921,362.73049 C 359.85404,353.74688 366.09209,349.23152 377.51844,347.38769 C 398.29851,344.75654 415.9158,360.47617 415.87542,381.30335 L 415.87542,489.9142 L 415.47167,494.35553 L 414.26039,498.3931 L 412.64537,502.43069 L 410.62659,506.0645 C 405.52577,514.82605 395.89615,520.43156 385.99736,521.81106 C 376.06491,522.83391 365.66143,519.67114 358.54182,512.52462 C 349.9014,504.26779 348.87856,499.08623 347.64036,487.89541"
+       style="fill:black;fill-rule:evenodd;stroke:none"
+       id="path20" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_274_1.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_274_1.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_274_1.svg	(revision 36424)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<!-- viewBox fix by in[k]firmary (http://inkfirmary.48design.de) -->
+<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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100%"
+   height="100%"
+   id="svg1961"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="Zeichen_274.1.svg"
+   viewBox="0 0 600 600">
+  <metadata
+     id="metadata17">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1280"
+     inkscape:window-height="752"
+     id="namedview15"
+     showgrid="false"
+     inkscape:zoom="0.774375"
+     inkscape:cx="298.72881"
+     inkscape:cy="297.45763"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg1961" />
+  <defs
+     id="defs1963">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 300 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="600 : 300 : 1"
+       inkscape:persp3d-origin="300 : 200 : 1"
+       id="perspective19" />
+  </defs>
+  <path
+     d="m 46.33897,592.51787 c -8.69892,-0.0279 -21.66721,-5.02155 -27.58025,-11.70071 l -2.92518,-3.34306 -2.50729,-3.76095 -2.5073,-4.17882 -1.67153,-4.59671 -0.83576,-4.59671 -0.83577,-4.59671 0,-509.39891 C 8.20718,33.72524 10.97217,28.46688 18.75872,18.76504 l 3.76094,-2.92518 3.76095,-2.50729 4.17882,-2.5073 4.59671,-1.67153 9.19342,-1.67153 508.98103,0 c 11.76339,0.49449 18.86043,3.3152 27.58025,11.28283 l 3.34306,3.76094 2.5073,3.76095 2.08941,4.17882 1.67153,4.59671 1.25365,4.59671 0.83576,4.59671 0,508.98103 c 0.30645,7.80047 -5.04245,22.8721 -11.70071,27.58025 l -3.34306,3.34306 -3.76095,2.5073 -4.17882,2.08941 -4.59671,1.67153 -4.59671,1.25365 -4.59671,0.83576 -509.39891,0"
+     style="fill:#fffefe;fill-rule:evenodd;stroke:#000000;stroke-opacity:1"
+     id="path46" />
+  <path
+     d="m 46.33897,592.51787 -2.08941,0 m 0,0 -4.59671,-0.83576 m 0,0 -4.59671,-1.25365 m 0,0 -4.59671,-1.67153 m 0,0 -4.17882,-2.08941 m 0,0 -3.76095,-2.5073 m 0,0 -3.76094,-3.34306 m 0,0 -2.92518,-3.34306 m 0,0 -2.50729,-3.76095 m 0,0 -2.5073,-4.17882 m 0,0 -1.67153,-4.59671 m 0,0 -0.83576,-4.59671 m 0,0 -0.83577,-4.59671 m 0,0 0,-2.50729 0,-506.89162 0,-2.08941 m 0,0 0.83577,-4.59671 m 0,0 0.83576,-4.59671 m 0,0 1.67153,-4.59671 m 0,0 2.5073,-4.17882 m 0,0 2.50729,-3.76095 m 0,0 2.92518,-3.76094 m 0,0 3.76094,-2.92518 m 0,0 3.76095,-2.50729 m 0,0 4.17882,-2.5073 m 0,0 4.59671,-1.67153 m 0,0 4.59671,-0.83576 4.59671,-0.83577 m 0,0 2.08941,0 506.89162,0 2.50729,0 m 0,0 4.59671,0.83577 4.59671,0.83576 m 0,0 4.59671,1.67153 m 0,0 4.17882,2.5073 m 0,0 3.76095,2.50729 m 0,0 3.34306,2.92518 m 0,0 3.34306,3.76094 m 0,0 2.5073,3.76095 m 0,0 2.08941,4.17882 m 0,0 1.67153,4.59671 m 0,0 1.25365,4.59671 m 0,0 0.83576,4.59671 m 0,0 0,2.08941 0,506.89162 0,2.50729 m 0,0 -0.83576,4.59671 m 0,0 -1.25365,4.59671 m 0,0 -1.67153,4.59671 m 0,0 -2.08941,4.17882 m 0,0 -2.5073,3.76095 m 0,0 -3.34306,3.34306 -3.34306,3.34306 m 0,0 -3.76095,2.5073 m 0,0 -4.17882,2.08941 m 0,0 -4.59671,1.67153 m 0,0 -4.59671,1.25365 m 0,0 -4.59671,0.83576 m 0,0 -2.50729,0 m 0,0 -506.89162,0"
+     id="path48" />
+  <path
+     d="m 46.33897,582.48869 c -7.5776,0.0975 -15.00895,-3.18984 -20.47624,-8.35765 l -2.5073,-2.5073 -2.08941,-3.34306 -1.25365,-2.92518 -1.25365,-3.34306 -0.83576,-3.34306 -0.41789,-3.34306 -0.41788,-2.08941 0,-506.89162 c 1.184,-6.97167 2.75106,-15.85168 8.77554,-20.47624 l 2.50729,-2.5073 2.92518,-2.08941 6.68612,-2.5073 3.34306,-0.83576 3.34306,-0.41789 1.67153,-0.41092 506.89162,0 c 7.43831,1.03775 15.7681,2.76499 20.89413,8.77554 l 2.08941,2.5073 2.08941,2.91821 1.67153,3.34306 1.25365,3.34306 0.83577,3.34306 0.41788,3.34306 0,508.56315 c 0.32038,7.78654 -3.30824,15.16914 -8.35765,20.89413 l -2.5073,2.08941 -3.34306,2.08941 -2.92518,1.67153 -3.34306,1.25365 -3.34306,0.83577 -3.34306,0.41788 -508.98103,0"
+     style="fill:#000000;fill-rule:evenodd;stroke:none"
+     id="path50" />
+  <path
+     d="m 46.33897,567.8628 -2.50729,0 -1.67153,-0.41788 -3.34306,-1.67154 -1.25365,-0.83576 -2.5073,-2.5073 -1.25365,-1.67153 -0.41788,-1.25364 -0.83576,-1.67154 -0.41789,-1.67153 0,-509.81679 c -0.3343,-3.46146 1.35116,-7.96763 4.17883,-10.02918 l 2.5073,-2.5073 1.67153,-0.41788 1.67153,-0.83576 1.67153,-0.41789 509.39891,0 c 3.64254,-0.50842 8.17657,1.44866 10.44706,4.17883 l 1.25365,1.25365 0.83576,1.25365 0.83577,1.67153 0.83577,1.67153 0.41788,1.67153 0,509.39891 c 0.592,3.95595 -1.6576,7.66118 -4.17883,10.44706 l -1.25365,1.25365 -1.67153,0.83576 -1.25364,0.83577 -1.67154,0.83577 -1.67153,0.41788 -509.81679,0"
+     style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+     id="path52" />
+  <path
+     d="M 485.11572,244.42165 C 484.87892,151.40098 415.42683,72.0799 322.97726,60.97118 217.30868,47.18106 121.53695,126.92699 115.2896,233.13882 c -7.04132,106.16308 78.53408,197.12916 184.70412,196.40483 101.97729,0.55718 185.14986,-83.03327 185.122,-185.122"
+     style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path54" />
+  <path
+     d="M 436.22345,244.42165 C 429.44679,68.68808 181.55186,61.0269 163.76399,236.064 c -4.81262,78.84749 57.45189,144.51077 136.22973,145.00527 74.81492,0.0209 136.98889,-61.83966 136.22973,-136.64762"
+     style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+     id="path56" />
+  <path
+     d="m 195.10518,284.53838 22.98355,0 c 6.08019,21.09611 32.762,24.98938 44.29556,6.68613 10.83708,-22.89997 -4.08132,-43.50158 -30.50544,-39.28097 l 0,-20.05837 c 13.38618,0.25073 18.37988,0.74523 27.99814,-8.77553 5.52302,-7.85619 6.44932,-18.37987 0.83577,-26.32661 -11.40124,-17.3073 -36.85725,-12.29967 -41.37038,7.93977 l -22.98355,0 c 3.9281,-36.09809 44.35128,-52.98055 73.12946,-31.75907 22.0851,17.13318 24.78044,52.17961 0.83577,68.53274 l 1.67153,1.67154 3.76094,2.50729 2.92518,3.34306 2.92518,3.76095 c 3.52414,5.52301 7.09704,14.30551 7.104,20.89413 0.68254,14.68857 -3.09233,27.48971 -13.79013,38.02731 -27.7474,27.60115 -74.54329,11.48481 -79.81558,-27.16237"
+     style="fill:#000000;fill-rule:evenodd;stroke:none"
+     id="path58" />
+  <path
+     d="m 164.18187,540.70043 0,-10.44707 37.19155,-60.59298 -35.9379,0 0,-10.86495 51.39956,0 0,9.19342 -37.60943,61.01086 37.60943,0 0,11.70072 -52.65321,0 z m 64.35392,-28.8339 c -2.22174,-22.10599 -2.23567,-49.9718 25.49084,-53.48898 8.14871,-1.29543 17.96896,1.58796 23.81931,7.52189 7.53582,8.14871 7.44528,10.84405 9.19342,21.31201 1.85958,22.80943 1.85958,49.33801 -25.90872,53.90686 -17.2098,2.14513 -33.24256,-11.78429 -32.59485,-29.25178 z m 12.1186,0 c 1.46955,-16.88246 -6.45629,-36.30704 14.62589,-41.37038 9.9874,-1.11436 19.27135,6.40753 19.2226,16.7153 0.43181,13.09366 5.06335,38.79344 -14.62589,41.37038 -10.05008,1.66457 -19.32011,-6.55379 -19.2226,-16.7153 z m 62.26451,28.8339 0,-81.905 11.70071,0 37.19156,58.50357 0,-58.50357 12.53647,0 0,81.905 -11.70071,0 -37.19155,-58.50357 0,58.50357 -12.53648,0 z m 80.23346,0 0,-81.905 52.65321,0 0,11.70072 -40.11673,0 0,23.40142 34.26637,0 0,10.86495 -34.26637,0 0,24.23719 40.11673,0 0,11.70072 -52.65321,0"
+     style="fill:#000000;fill-rule:evenodd;stroke:none"
+     id="path62" />
+  <g
+     style="font-size:223.98100281px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Alte DIN 1451 Mittelschrift;-inkscape-font-specification:Alte DIN 1451 Mittelschrift"
+     id="text2825"
+     transform="matrix(1.0258649,0,0,1,544.59229,106.24947)">
+    <path
+       d="m -160.62244,172.1649 0,-67.69738 c -8e-5,-7.655479 -2.07802,-13.634133 -6.23385,-17.935979 -4.08305,-4.301582 -9.47842,-6.452439 -16.18612,-6.452577 -6.78073,1.38e-4 -12.21255,2.150995 -16.2955,6.452577 -4.08302,4.301846 -6.12451,10.2805 -6.12448,17.935979 l 0,67.69738 c -3e-5,7.72855 2.04146,13.74366 6.12448,18.04535 4.08295,4.22883 9.51477,6.34323 16.2955,6.34321 6.7077,2e-5 12.10307,-2.11438 16.18612,-6.34321 4.15583,-4.30169 6.23377,-10.3168 6.23385,-18.04535 m -67.69738,1.31239 0,-70.32216 c -1e-5,-14.654876 4.59334,-25.95599 13.78008,-33.903373 9.18669,-8.019996 19.68578,-12.030069 31.49733,-12.03023 11.73852,1.61e-4 22.20116,4.010234 31.38796,12.03023 9.25953,7.947383 13.88935,19.248497 13.88944,33.903373 l 0,70.32216 c -9e-5,14.65504 -4.62991,25.95615 -13.88944,33.90338 -9.1868,7.94724 -19.64944,11.92086 -31.38796,11.92086 -11.81155,0 -22.31064,-3.97362 -31.49733,-11.92086 -9.18674,-7.94723 -13.78009,-19.24834 -13.78008,-33.90338"
+       id="path2849" />
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_275.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_275.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_275.svg	(revision 36424)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:white;stroke:black;stroke-width:2.5px"
+     id="circle4" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     transform="matrix(1.162727,0,0,1.162727,-58.98865,-58.98865)"
+     style="fill:#039;fill-opacity:1;stroke:none;stroke-width:93.75"
+     id="circle6" />
+  <path
+     d="M 210.53494,379.03602 L 210.53494,333.96347 L 228.17202,333.96347 C 245.15575,333.96368 258.58769,329.18697 268.46785,319.63334 C 278.34773,310.08015 283.28774,297.95467 283.2879,283.25686 C 283.28774,268.72287 278.1436,256.4749 267.85546,246.51293 C 257.56702,236.55155 245.31906,231.57071 231.11153,231.5704 C 220.33322,231.57071 210.12658,235.16345 200.4916,242.34862 C 190.85645,249.53439 184.65082,260.3126 181.87468,274.68327 L 130.67814,274.68327 C 132.63781,249.53439 143.17106,227.52889 162.27792,208.66669 C 181.3847,189.80516 203.67599,180.37423 229.15186,180.37387 C 260.99645,180.37423 286.51304,190.86665 305.7017,211.85117 C 324.88999,232.83634 334.48422,256.3116 334.48444,282.27702 C 334.48422,295.99499 331.78967,309.34527 326.40077,322.3279 C 321.01147,335.31095 310.96814,346.53825 296.27076,356.00982 C 311.29475,365.64507 322.07296,377.48477 328.60541,391.52895 C 335.13745,405.57343 338.40357,419.78107 338.40379,434.1519 C 338.40357,467.46647 327.95198,494.00372 307.04897,513.76374 C 286.1456,533.52381 260.50653,543.40383 230.13169,543.40383 C 205.96227,543.40383 184.20173,535.60596 164.84999,520.0102 C 145.49817,504.41448 133.45434,481.6741 128.71847,451.78898 L 179.915,451.78898 C 184.65082,464.03704 191.01976,473.87623 199.02184,481.3066 C 207.02376,488.73709 218.37354,492.45231 233.07121,492.45226 C 247.27873,492.45231 259.85331,487.43064 270.79497,477.38725 C 281.73633,467.34399 287.20709,453.50379 287.20726,435.86662 C 287.20709,418.06635 281.77716,404.1445 270.91745,394.10103 C 260.05744,384.05784 247.11543,379.03618 232.09137,379.03602 L 210.53494,379.03602 z "
+     style="font-size:501.67703247px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:white;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text3804" />
+  <path
+     d="M 538.95143,437.66956 L 538.95143,286.03963 C 538.95126,268.89274 534.33786,255.50163 525.11122,245.86628 C 515.88426,236.23151 503.75878,231.41398 488.73474,231.41367 C 473.54714,231.41398 461.38083,236.23151 452.23577,245.86628 C 443.09054,255.50163 438.51797,268.89274 438.51804,286.03963 L 438.51804,437.66956 C 438.51797,454.98011 443.09054,468.41204 452.23577,477.96539 C 461.38083,487.51886 473.54714,492.29557 488.73474,492.29552 C 503.75878,492.29557 515.88426,487.51886 525.11122,477.96539 C 534.33786,468.41204 538.95126,454.98011 538.95143,437.66956 L 538.95143,437.66956 z M 387.32151,440.60907 L 387.32151,283.10012 C 387.32149,250.27584 397.60978,224.92256 418.1864,207.0402 C 438.76293,189.15851 462.27902,180.21749 488.73474,180.21713 C 515.02691,180.21749 538.50217,189.15851 559.16059,207.0402 C 579.81863,224.92256 590.14774,250.27584 590.14796,283.10012 L 590.14796,440.60907 C 590.14774,473.43371 579.81863,498.74616 559.16059,516.54651 C 538.50217,534.34691 515.02691,543.24709 488.73474,543.2471 C 462.27902,543.24709 438.76293,534.34691 418.1864,516.54651 C 397.60978,498.74616 387.32149,473.43371 387.32151,440.60907 L 387.32151,440.60907 z "
+     style="font-size:501.67703247px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:white;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text3808" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_276.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_276.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_276.svg	(revision 36424)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <path
+     d="M 151.8801,375.07907 C 151.38912,338.88652 149.42518,370.02894 171.23891,316.37138 C 187.02055,279.89826 171.02849,289.71794 252.67215,288.38527 C 325.33783,289.85822 310.67845,279.33713 327.37191,318.05475 C 348.27381,367.64416 346.66058,341.69214 346.5203,374.02695 C 345.74876,409.51811 358.86506,400.39983 248.88456,401.59222 C 139.74577,400.11927 152.65165,409.37782 151.8801,375.07907 z M 173.97438,340.14904 L 188.91435,305.63986 C 191.70178,299.50992 190.81247,300.41482 197.33122,300.37931 L 301.78358,300.36806 C 307.43813,300.38884 306.60856,300.02168 308.93792,305.41818 L 323.79475,339.72819 L 173.97438,340.14904 z M 163.28964,405.55127 L 191.22898,405.48892 C 191.14326,440.56701 194.05019,438.61088 178.81409,438.83688 C 160.67106,438.76675 163.53903,440.59819 163.28964,405.55127 z M 307.17141,405.80065 L 335.15751,405.80065 C 334.97048,440.93331 337.52671,438.53294 321.69052,438.62646 C 305.31659,438.40825 307.39741,440.99565 307.17141,405.80065 z "
+     style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="Car" />
+  <path
+     d="M 377.42444,375.07907 C 376.93346,338.88652 374.96952,370.02894 396.78325,316.37138 C 412.56489,279.89826 396.57283,289.71794 478.21649,288.38527 C 550.88217,289.85822 536.22279,279.33713 552.91625,318.05475 C 573.81815,367.64416 572.20492,341.69214 572.06464,374.02695 C 571.2931,409.51811 584.4094,400.39983 474.4289,401.59222 C 365.29011,400.11927 378.19599,409.37782 377.42444,375.07907 z M 399.51872,340.14904 L 414.45869,305.63986 C 417.24612,299.50992 416.35681,300.41482 422.87556,300.37931 L 527.32792,300.36806 C 532.98247,300.38884 532.1529,300.02168 534.48226,305.41818 L 549.33909,339.72819 L 399.51872,340.14904 z M 388.83398,405.55127 L 416.77332,405.48892 C 416.6876,440.56701 419.59453,438.61088 404.35843,438.83688 C 386.2154,438.76675 389.08337,440.59819 388.83398,405.55127 z M 532.71575,405.80065 L 560.70185,405.80065 C 560.51482,440.93331 563.07105,438.53294 547.23486,438.62646 C 530.86093,438.40825 532.94175,440.99565 532.71575,405.80065 z "
+     style="fill:black;fill-rule:evenodd;stroke:none"
+     id="path1899" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_277.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_277.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_277.svg	(revision 36424)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <path
+     d="M 177.08504,419.08229 L 346.48426,419.08229 L 346.54796,264.29965 C 346.54796,258.90377 338.86793,250.00142 332.62491,250.00142 L 191.02397,250.13984 C 184.54525,250.13984 177.20702,258.21186 177.20702,263.76317 L 177.08504,419.08229 z "
+     style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3776" />
+  <path
+     d="M 376.40597,419.10383 C 375.93547,384.42122 374.05347,414.26439 394.95714,362.84541 C 410.08037,327.89393 394.7555,337.30394 472.99301,336.02687 C 542.62711,337.43837 528.57931,327.35621 544.57632,364.45855 C 564.6062,411.97911 563.06028,387.10979 562.92585,418.09561 C 562.1865,452.10609 574.75559,443.36822 469.36344,444.51086 C 364.77788,443.09937 377.14533,451.97165 376.40597,419.10383 z M 397.57849,385.63107 L 411.89517,352.5616 C 414.5663,346.6874 413.7141,347.55455 419.96089,347.52052 L 520.05553,347.50974 C 525.47417,347.52965 524.67921,347.17781 526.91139,352.34917 L 541.1484,385.22778 L 397.57849,385.63107 z M 387.33951,448.30474 L 414.11323,448.245 C 414.03109,481.85964 416.81674,479.98512 402.21628,480.20169 C 384.83018,480.13449 387.57849,481.88952 387.33951,448.30474 z M 525.21858,448.54372 L 552.03711,448.54372 C 551.85788,482.21066 554.30747,479.91043 539.13196,480.00005 C 523.44114,479.79094 525.43515,482.2704 525.21858,448.54372 z "
+     style="fill:black;fill-rule:evenodd;stroke:none"
+     id="path1899" />
+  <g
+     transform="translate(-813.734,-325.4936)"
+     style="fill:#c00;fill-opacity:1"
+     id="g2857">
+    <g
+       transform="matrix(0.68555,0,0,0.68555,330.8438,208.2917)"
+       style="fill:#c00;fill-opacity:1"
+       id="g2862">
+      <path
+         d="M 967.10659,787.76233 L 995.36329,787.76233 L 998.77742,792.92593 L 998.88345,865.44968 L 993.58201,870.60269 L 968.07145,870.92078 L 963.69246,866.52057 L 963.90452,791.3355 L 967.10659,787.76233 z "
+         style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3780" />
+      <path
+         d="M 1008.3161,788.2661 L 1005.0974,791.8286 L 1004.8786,867.0161 L 1009.2849,871.42235 L 1034.7849,871.10985 L 1040.0974,865.9536 L 1040.0661,842.2036 L 1042.9724,839.1411 L 1063.0974,839.04735 L 1063.1286,839.98485 L 1065.9411,839.92235 C 1066.0261,841.9284 1077.1852,852.17233 1087.4724,852.17235 L 1087.4724,852.10985 C 1097.7507,852.08928 1108.8562,841.89512 1108.9411,839.8911 L 1111.7536,839.9536 L 1111.8161,838.98485 L 1131.9411,839.10985 L 1134.7224,842.0161 L 1134.6599,867.0161 L 1139.0349,871.42235 L 1164.5349,871.10985 L 1169.8474,865.9536 L 1169.7224,793.42235 L 1166.3161,788.2661 L 1138.0661,788.2661 L 1134.8474,791.8286 L 1134.7849,815.5786 L 1130.7536,819.73485 L 1111.7849,819.67235 L 1111.8161,818.7036 L 1108.7536,818.67235 C 1108.7536,815.78179 1097.7449,806.60985 1087.4411,806.60985 L 1087.4411,806.6411 C 1077.1465,806.66023 1066.1598,815.84728 1066.1599,818.73485 L 1063.0974,818.73485 L 1063.0974,819.73485 L 1044.1286,819.7661 L 1040.0036,815.5161 L 1039.9724,793.42235 L 1036.5661,788.2661 L 1008.3161,788.2661 z "
+         style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3784" />
+      <path
+         d="M 1178.9457,787.66901 L 1207.2024,787.66901 L 1210.6165,792.83261 L 1210.7225,865.35636 L 1205.4211,870.50937 L 1179.9105,870.82746 L 1175.5315,866.42725 L 1175.7436,791.24218 L 1178.9457,787.66901 z "
+         style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3788" />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_282.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_282.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_282.svg	(revision 36424)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="600"
+   height="600"
+   id="svg1980">
+  <defs
+     id="defs1982" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-137.5187,76.8608)"
+       id="g3810">
+      <path
+         d="M 729.60917,223.33738 C 730.75125,76.700028 619.28349,-48.694492 474.05023,-66.484189 C 306.65375,-87.444858 157.2418,37.136763 145.93513,205.19834 C 136.05271,372.84339 269.48216,515.94027 437.77215,515.1744 C 598.22876,516.26946 730.63705,383.6865 729.60917,223.33738"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-opacity:1"
+         id="path84" />
+      <path
+         d="M 729.60917,223.33738 L 729.20608,205.19834 M 729.20608,205.19834 L 724.77209,168.51717 M 724.77209,168.51717 L 715.50102,133.04526 M 715.50102,133.04526 L 702.19906,98.782631 M 702.19906,98.782631 L 684.46311,66.938536 M 684.46311,66.938536 L 662.69626,37.109891 M 662.69626,37.109891 L 637.70469,10.505964 M 637.70469,10.505964 L 609.48841,-12.873245 M 609.48841,-12.873245 L 578.45049,-32.624645 M 578.45049,-32.624645 L 545.39713,-48.345147 M 545.39713,-48.345147 L 510.32831,-59.631662 M 510.32831,-59.631662 L 474.05023,-66.484189 M 474.05023,-66.484189 L 437.77215,-68.902727 M 437.77215,-68.902727 L 401.09098,-66.484189 M 401.09098,-66.484189 L 365.21598,-59.631662 M 365.21598,-59.631662 L 330.14717,-48.345147 M 330.14717,-48.345147 L 297.09381,-32.624645 M 297.09381,-32.624645 L 266.05589,-12.873245 M 266.05589,-12.873245 L 237.83961,10.505964 M 237.83961,10.505964 L 212.84804,37.109891 M 212.84804,37.109891 L 191.08119,66.938536 M 191.08119,66.938536 L 173.34524,98.782631 M 173.34524,98.782631 L 160.04328,133.04526 M 160.04328,133.04526 L 150.77221,168.51717 M 150.77221,168.51717 L 145.93513,205.19834 M 145.93513,205.19834 L 145.93513,241.47642 M 145.93513,241.47642 L 150.77221,278.15759 M 150.77221,278.15759 L 160.04328,313.6295 M 160.04328,313.6295 L 173.34524,347.48904 M 173.34524,347.48904 L 191.08119,379.73622 M 191.08119,379.73622 L 212.84804,409.56487 M 212.84804,409.56487 L 237.83961,436.1688 M 237.83961,436.1688 L 266.05589,459.548 M 266.05589,459.548 L 297.09381,479.2994 M 297.09381,479.2994 L 330.14717,495.01991 M 330.14717,495.01991 L 365.21598,506.30642 M 365.21598,506.30642 L 401.09098,513.15895 M 401.09098,513.15895 L 437.77215,515.1744 M 437.77215,515.1744 L 474.05023,513.15895 M 474.05023,513.15895 L 510.32831,506.30642 M 510.32831,506.30642 L 545.39713,495.01991 M 545.39713,495.01991 L 578.45049,479.2994 M 578.45049,479.2994 L 609.48841,459.548 M 609.48841,459.548 L 637.70469,436.1688 M 637.70469,436.1688 L 662.69626,409.56487 M 662.69626,409.56487 L 684.46311,379.73622 M 684.46311,379.73622 L 702.19906,347.48904 M 702.19906,347.48904 L 715.50102,313.6295 M 715.50102,313.6295 L 724.77209,278.15759 M 724.77209,278.15759 L 729.20608,241.47642 M 729.20608,241.47642 L 729.60917,223.33738"
+         id="path86" />
+      <path
+         d="M 719.93501,223.33738 C 720.4859,81.436333 613.98958,-39.443581 473.24405,-56.810033 C 311.79315,-77.542286 165.90823,42.974847 156.01238,205.60143 C 146.05606,368.40268 274.58124,505.51368 437.77215,505.50024 C 593.57979,505.79584 720.18358,378.88973 719.93501,223.33738"
+         style="fill:black;fill-rule:evenodd;stroke:none"
+         id="path88" />
+      <path
+         d="M 584.49684,-0.78055067 C 336.07259,-153.518 60.916774,121.63782 213.65422,370.06207 L 584.49684,-0.78055067"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path90" />
+      <path
+         d="M 595.78335,7.2812454 L 600.21734,10.505964 L 604.24824,13.327592 L 227.76236,389.81347 L 224.94073,385.78257 L 221.71601,381.34858 L 595.78335,7.2812454"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path92" />
+      <path
+         d="M 614.72857,22.195568 L 618.35638,25.823376 L 621.98419,29.048095 L 243.48286,407.54942 L 240.25815,403.92161 L 236.63034,400.2938 L 614.72857,22.195568"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path94" />
+      <path
+         d="M 638.91396,46.380956 L 635.28615,42.753148 L 631.65834,38.72225 L 253.15702,417.22358 L 257.18792,420.85138 L 260.81573,424.47919 L 638.91396,46.380956"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path96" />
+      <path
+         d="M 653.82828,65.326177 L 650.60357,60.892189 L 647.37885,56.861291 L 271.29606,432.94408 L 275.32696,436.1688 L 279.76095,439.39351 L 653.82828,65.326177"
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path98" />
+      <path
+         d="M 661.48699,76.612692 C 815.29934,323.98219 538.42367,600.86457 291.04746,447.05222 L 661.48699,76.612692"
+         style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path100" />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_283.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_283.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_283.svg	(revision 36424)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="Zeichen_286.svg"
+   inkscape:version="0.41"
+   sodipodi:version="0.32"
+   width="725"
+   height="725"
+   version="1.1">
+  <metadata>
+    <RDF>
+      <Work>
+        <format>image/svg+xml</format>
+        <type resource="http://purl.org/dc/dcmitype/StillImage" />
+      </Work>
+    </RDF>
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>MarianSigler, mariansigler@gmail.com</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  
+  <path style="fill:#FFFFFF; fill-opacity:1; fill-rule:evenodd; stroke:#000000; stroke-width:2.5; stroke-linecap:butt; stroke-linejoin:miter; stroke-miterlimit:4; stroke-dashoffset:0; stroke-opacity:1"
+     d="M 712.5,362.5 C 712.5,555.79966 555.79966,712.5 362.5,712.5 C 169.20034,712.5 12.5,555.79966 12.5,362.5 C 12.5,169.20034 169.20034,12.5 362.5,12.5 C 555.79966,12.5 712.5,169.20034 712.5,362.5 L 712.5,362.5 z " />
+
+  <path style="fill:#CC0000; fill-opacity:1; fill-rule:evenodd; stroke:none; stroke-width:93.75; stroke-linecap:butt; stroke-linejoin:miter; stroke-miterlimit:4; stroke-dashoffset:0; stroke-opacity:1"
+     d="M 362.5,25.625 C 177.05768,25.625 25.625,177.05768 25.625,362.5 C 25.625,547.94232 177.05768,699.375 362.5,699.375 C 547.94232,699.375 699.375,547.94232 699.375,362.5 C 699.375,177.05768 547.94232,25.625 362.5,25.625 z M 362.5,119.375 C 497.21768,119.375 605.625,227.78232 605.625,362.5 C 605.625,497.21768 497.21768,605.625 362.5,605.625 C 227.78232,605.625 119.375,497.21768 119.375,362.5 C 119.375,227.78232 227.78232,119.375 362.5,119.375 z " />
+
+  <path style="fill:#003399; fill-opacity:1; fill-rule:evenodd; stroke:none"
+     d="M 612.5,362.5 C 612.5,500.5 500.5,612.5 362.5,612.5 C 224.5,612.5 112.5,500.5 112.5,362.5 C 112.5,224.5 224.5,112.5 362.5,112.5 C 500.5,112.5 612.5,224.5 612.5,362.5 z " />
+
+  <path style="fill:none; stroke:#CC0000; stroke-width:87.5; stroke-linecap:butt; stroke-linejoin:miter; stroke-opacity:1; stroke-dasharray:none; stroke-miterlimit:4"
+     d="M 180.31265,180.31267 L 544.68736,544.68733" />
+  <path style="fill:none; stroke:#CC0000; stroke-width:87.5; stroke-linecap:butt; stroke-linejoin:miter; stroke-opacity:1; stroke-dasharray:none; stroke-miterlimit:4"
+     d="M 180.31265,544.68733 L 544.68736,180.31267" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_286.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_286.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_286.svg	(revision 36424)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="Zeichen_286.svg"
+   inkscape:version="0.41"
+   sodipodi:version="0.32"
+   width="725"
+   height="725"
+   version="1.1">
+  <metadata>
+    <RDF>
+      <Work>
+        <format>image/svg+xml</format>
+        <type resource="http://purl.org/dc/dcmitype/StillImage" />
+      </Work>
+    </RDF>
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>MarianSigler, mariansigler@gmail.com</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  
+  <path style="fill:#FFFFFF; fill-opacity:1; fill-rule:evenodd; stroke:#000000; stroke-width:2.5; stroke-linecap:butt; stroke-linejoin:miter; stroke-miterlimit:4; stroke-dashoffset:0; stroke-opacity:1"
+     d="M 712.5,362.5 C 712.5,555.79966 555.79966,712.5 362.5,712.5 C 169.20034,712.5 12.5,555.79966 12.5,362.5 C 12.5,169.20034 169.20034,12.5 362.5,12.5 C 555.79966,12.5 712.5,169.20034 712.5,362.5 L 712.5,362.5 z " />
+
+  <path style="fill:#CC0000; fill-opacity:1; fill-rule:evenodd; stroke:none; stroke-width:93.75; stroke-linecap:butt; stroke-linejoin:miter; stroke-miterlimit:4; stroke-dashoffset:0; stroke-opacity:1"
+     d="M 362.5,25.625 C 177.05768,25.625 25.625,177.05768 25.625,362.5 C 25.625,547.94232 177.05768,699.375 362.5,699.375 C 547.94232,699.375 699.375,547.94232 699.375,362.5 C 699.375,177.05768 547.94232,25.625 362.5,25.625 z M 362.5,119.375 C 497.21768,119.375 605.625,227.78232 605.625,362.5 C 605.625,497.21768 497.21768,605.625 362.5,605.625 C 227.78232,605.625 119.375,497.21768 119.375,362.5 C 119.375,227.78232 227.78232,119.375 362.5,119.375 z " />
+
+  <path style="fill:#003399; fill-opacity:1; fill-rule:evenodd; stroke:none"
+     d="M 612.5,362.5 C 612.5,500.5 500.5,612.5 362.5,612.5 C 224.5,612.5 112.5,500.5 112.5,362.5 C 112.5,224.5 224.5,112.5 362.5,112.5 C 500.5,112.5 612.5,224.5 612.5,362.5 z " />
+
+  <path style="fill:none; stroke:#CC0000; stroke-width:87.5; stroke-linecap:butt; stroke-linejoin:miter; stroke-opacity:1; stroke-dasharray:none; stroke-miterlimit:4"
+     d="M 180.31265,180.31267 L 544.68736,544.68733" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_290.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_290.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_290.svg	(revision 36424)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="600"
+   height="600"
+   id="svg1961">
+  <defs
+     id="defs1963" />
+  <path
+     d="M 46.33899,592.51787 C 37.64007,592.49001 24.67178,587.49632 18.75874,580.81716 L 15.83356,577.4741 L 13.32627,573.71315 L 10.81897,569.53433 L 9.14744,564.93762 L 8.31168,560.34091 L 7.47591,555.7442 L 7.47591,46.34529 C 8.2072,33.72524 10.97219,28.46688 18.75874,18.76504 L 22.51968,15.83986 L 26.28063,13.33257 L 30.45945,10.82527 L 35.05616,9.15374 L 44.24958,7.48221 L 553.23061,7.48221 C 564.994,7.9767 572.09104,10.79741 580.81086,18.76504 L 584.15392,22.52598 L 586.66122,26.28693 L 588.75063,30.46575 L 590.42216,35.06246 L 591.67581,39.65917 L 592.51157,44.25588 L 592.51157,553.23691 C 592.81802,561.03738 587.46912,576.10901 580.81086,580.81716 L 577.4678,584.16022 L 573.70685,586.66752 L 569.52803,588.75693 L 564.93132,590.42846 L 560.33461,591.68211 L 555.7379,592.51787 L 46.33899,592.51787"
+     style="fill:#fffefe;fill-rule:evenodd;stroke:black;stroke-opacity:1"
+     id="path46" />
+  <path
+     d="M 52.971361,575.52467 C 45.58591,575.61969 38.343001,572.41571 33.014348,567.37894 L 30.570626,564.93522 L 28.534199,561.67693 L 27.312339,558.82592 L 26.090477,555.56764 L 25.27591,552.30935 L 24.868617,549.05106 L 24.461334,547.01463 L 24.461334,52.976521 C 25.61531,46.181634 27.142634,37.526799 33.014348,33.019507 L 35.458059,30.575785 L 38.309063,28.539358 L 44.82564,26.095637 L 48.083929,25.28107 L 51.342216,24.873776 L 52.971361,24.473276 L 547.00947,24.473276 C 554.25916,25.484711 562.37772,27.168152 567.37377,33.02629 L 569.4102,35.470012 L 571.44663,38.314223 L 573.07577,41.572511 L 574.29763,44.8308 L 575.11221,48.089087 L 575.5195,51.347376 L 575.5195,547.01463 C 575.83175,554.60372 572.29514,561.79912 567.37377,567.37894 L 564.93005,569.41537 L 561.67177,571.4518 L 558.82076,573.08094 L 555.56247,574.3028 L 552.30418,575.11738 L 549.04589,575.52467 L 52.971361,575.52467"
+     style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path50" />
+  <g
+     transform="matrix(0.550473,0,0,0.550473,333.9396,72.41625)"
+     style="opacity:1"
+     id="g1923">
+    <path
+       d="M -61.9048,-21.00199 C -247.34712,-21.00199 -398.7798,130.43069 -398.7798,315.87301 C -398.7798,501.31533 -247.34712,652.74801 -61.9048,652.74801 C 123.53752,652.74801 274.9702,501.31533 274.9702,315.87301 C 274.9702,130.43069 123.53752,-21.00199 -61.9048,-21.00199 z M -61.9048,72.74801 C 72.81288,72.74801 181.2202,181.15533 181.2202,315.87301 C 181.2202,450.59069 72.81288,558.99801 -61.9048,558.99801 C -196.62248,558.99801 -305.0298,450.59069 -305.0298,315.87301 C -305.0298,181.15533 -196.62248,72.74801 -61.9048,72.74801 z "
+       style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:93.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1904" />
+    <path
+       d="M 188.0952,315.87301 C 188.0952,453.87301 76.0952,565.87301 -61.9048,565.87301 C -199.9048,565.87301 -311.9048,453.87301 -311.9048,315.87301 C -311.9048,177.87301 -199.9048,65.87301 -61.9048,65.87301 C 76.0952,65.87301 188.0952,177.87301 188.0952,315.87301 z "
+       style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path1906" />
+    <path
+       d="M -244.09215,133.68568 L 120.28256,498.06034"
+       style="fill:none;stroke:#c00;stroke-width:87.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path1908" />
+  </g>
+  <path
+     d="M 46.33899,592.51787 L 44.24958,592.51787 M 44.24958,592.51787 L 39.65287,591.68211 M 39.65287,591.68211 L 35.05616,590.42846 M 35.05616,590.42846 L 30.45945,588.75693 M 30.45945,588.75693 L 26.28063,586.66752 M 26.28063,586.66752 L 22.51968,584.16022 M 22.51968,584.16022 L 18.75874,580.81716 M 18.75874,580.81716 L 15.83356,577.4741 M 15.83356,577.4741 L 13.32627,573.71315 M 13.32627,573.71315 L 10.81897,569.53433 M 10.81897,569.53433 L 9.14744,564.93762 M 9.14744,564.93762 L 8.31168,560.34091 M 8.31168,560.34091 L 7.47591,555.7442 M 7.47591,555.7442 L 7.47591,553.23691 L 7.47591,46.34529 L 7.47591,44.25588 M 7.47591,44.25588 L 8.31168,39.65917 M 8.31168,39.65917 L 9.14744,35.06246 M 9.14744,35.06246 L 10.81897,30.46575 M 10.81897,30.46575 L 13.32627,26.28693 M 13.32627,26.28693 L 15.83356,22.52598 M 15.83356,22.52598 L 18.75874,18.76504 M 18.75874,18.76504 L 22.51968,15.83986 M 22.51968,15.83986 L 26.28063,13.33257 M 26.28063,13.33257 L 30.45945,10.82527 M 30.45945,10.82527 L 35.05616,9.15374 M 35.05616,9.15374 L 39.65287,8.31798 L 44.24958,7.48221 M 44.24958,7.48221 L 46.33899,7.48221 L 553.23061,7.48221 L 555.7379,7.48221 M 555.7379,7.48221 L 560.33461,8.31798 L 564.93132,9.15374 M 564.93132,9.15374 L 569.52803,10.82527 M 569.52803,10.82527 L 573.70685,13.33257 M 573.70685,13.33257 L 577.4678,15.83986 M 577.4678,15.83986 L 580.81086,18.76504 M 580.81086,18.76504 L 584.15392,22.52598 M 584.15392,22.52598 L 586.66122,26.28693 M 586.66122,26.28693 L 588.75063,30.46575 M 588.75063,30.46575 L 590.42216,35.06246 M 590.42216,35.06246 L 591.67581,39.65917 M 591.67581,39.65917 L 592.51157,44.25588 M 592.51157,44.25588 L 592.51157,46.34529 L 592.51157,553.23691 L 592.51157,555.7442 M 592.51157,555.7442 L 591.67581,560.34091 M 591.67581,560.34091 L 590.42216,564.93762 M 590.42216,564.93762 L 588.75063,569.53433 M 588.75063,569.53433 L 586.66122,573.71315 M 586.66122,573.71315 L 584.15392,577.4741 M 584.15392,577.4741 L 580.81086,580.81716 L 577.4678,584.16022 M 577.4678,584.16022 L 573.70685,586.66752 M 573.70685,586.66752 L 569.52803,588.75693 M 569.52803,588.75693 L 564.93132,590.42846 M 564.93132,590.42846 L 560.33461,591.68211 M 560.33461,591.68211 L 555.7379,592.51787 M 555.7379,592.51787 L 553.23061,592.51787 M 553.23061,592.51787 L 46.33899,592.51787"
+     id="path48" />
+  <path
+     d="M 164.18189,540.70043 L 164.18189,530.25336 L 201.37344,469.66038 L 165.43554,469.66038 L 165.43554,458.79543 L 216.8351,458.79543 L 216.8351,467.98885 L 179.22567,528.99971 L 216.8351,528.99971 L 216.8351,540.70043 L 164.18189,540.70043 z M 228.53581,511.86653 C 226.31407,489.76054 226.30014,461.89473 254.02665,458.37755 C 262.17536,457.08212 271.99561,459.96551 277.84596,465.89944 C 285.38178,474.04815 285.29124,476.74349 287.03938,487.21145 C 288.89896,510.02088 288.89896,536.54946 261.13066,541.11831 C 243.92086,543.26344 227.8881,529.33402 228.53581,511.86653 z M 240.65441,511.86653 C 242.12396,494.98407 234.19812,475.55949 255.2803,470.49615 C 265.2677,469.38179 274.55165,476.90368 274.5029,487.21145 C 274.93471,500.30511 279.56625,526.00489 259.87701,528.58183 C 249.82693,530.2464 240.5569,522.02804 240.65441,511.86653 z M 302.91892,540.70043 L 302.91892,458.79543 L 314.61963,458.79543 L 351.81119,517.299 L 351.81119,458.79543 L 364.34766,458.79543 L 364.34766,540.70043 L 352.64695,540.70043 L 315.4554,482.19686 L 315.4554,540.70043 L 302.91892,540.70043 z M 383.15238,540.70043 L 383.15238,458.79543 L 435.80559,458.79543 L 435.80559,470.49615 L 395.68886,470.49615 L 395.68886,493.89757 L 429.95523,493.89757 L 429.95523,504.76252 L 395.68886,504.76252 L 395.68886,528.99971 L 435.80559,528.99971 L 435.80559,540.70043 L 383.15238,540.70043"
+     style="fill:black;fill-rule:evenodd;stroke:none"
+     id="path62" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_325.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_325.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_325.svg	(revision 36424)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="1250"
+   height="840"
+   id="svg2">
+  <defs
+     id="defs9" />
+  <path
+     d="M 4.9628067,51.943165 L 4.6368247,783.36624 C 4.6368247,802.5473 28.351504,833.79315 60.07416,833.79315 L 1195.3067,833.79315 C 1217.9248,833.79315 1244.8933,805.77757 1244.8933,783.00108 L 1245.3632,58.713816 C 1245.3632,31.512403 1218.2476,6.206847 1192.5377,6.206847 L 55.460194,6.676638 C 26.798206,6.676638 4.9628067,36.996606 4.9628067,51.943165 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2.12588739;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3829" />
+  <path
+     d="M 29.179051,60.080509 L 28.872378,775.82864 C 28.872378,793.87387 41.774315,809.1568 66.620238,809.1568 L 1192.2551,809.1568 C 1208.2416,809.1568 1220.3825,795.14877 1220.3825,773.72102 L 1220.8245,65.862201 C 1220.8245,40.271544 1207.0752,30.57716 1182.8877,30.57716 L 58.457319,31.01913 C 39.138544,31.01913 29.179051,46.019031 29.179051,60.080509 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:18;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2057" />
+  <path
+     d="M 475.47976 658.95959 A 41.778557 41.778557 0 1 1  391.92265,658.95959 A 41.778557 41.778557 0 1 1  475.47976 658.95959 z"
+     transform="matrix(1.051806,0,0,1.051806,-201.3939,-448.1237)"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:28;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8192" />
+  <path
+     d="M 433.89547,229.1218 C 433.242,180.9521 430.62814,222.40045 459.66066,150.98606 C 480.66489,102.44295 459.3806,115.51225 568.04249,113.73856 C 664.7553,115.69896 645.2447,101.69614 667.46251,153.22652 C 695.28145,219.22648 693.13435,184.68618 692.94765,227.72152 C 691.92077,274.9577 709.37763,262.82192 563.00147,264.40891 C 417.74555,262.44852 434.92234,274.771 433.89547,229.1218 z M 463.30139,182.63244 L 483.1854,136.70319 C 486.89528,128.54467 485.71167,129.74903 494.38765,129.70178 L 633.40627,129.68679 C 640.93207,129.71445 639.82798,129.2258 642.92819,136.40815 L 662.70155,182.07232 L 463.30139,182.63244 z M 449.08075,269.67812 L 486.26602,269.59514 C 486.15192,316.28158 490.02085,313.6781 469.74269,313.9789 C 445.5956,313.88554 449.41267,316.32307 449.08075,269.67812 z M 640.5771,270.01004 L 677.8246,270.01004 C 677.57566,316.76909 680.97783,313.57437 659.90099,313.69884 C 638.10845,313.40841 640.8779,316.85207 640.5771,270.01004 z "
+     style="fill:white;fill-rule:evenodd;stroke:none"
+     id="Car" />
+  <circle
+     cx="150"
+     cy="412"
+     r="66.5"
+     transform="matrix(0.273055,0,0,0.273055,426.614,104.4967)"
+     style="fill:#039;fill-opacity:1;stroke:none"
+     id="LeftLamp" />
+  <circle
+     cx="850"
+     cy="412"
+     r="66.5"
+     transform="matrix(0.273055,0,0,0.273055,426.614,104.4967)"
+     style="fill:#039;fill-opacity:1;stroke:none"
+     id="RightLamp" />
+  <path
+     d="M 787.24555,312.33107 C 788.07711,329.36618 789.03645,345.2083 792.23376,359.76884 C 820.14617,486.88209 878.11579,519.96831 1042.197,635.75173 C 1083.6019,664.96891 1109.7541,692.0881 1121.9681,690.11364"
+     style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:white;stroke-width:28;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3695" />
+  <path
+     d="M 895.53178,436.18679 C 895.53178,436.18679 895.34351,201.55669 895.34351,201.55669 L 835.28136,201.36842 L 942.95641,130.67204 L 942.76813,94.009639 L 977.61549,93.821365 L 977.61549,108.02538 L 1010.2184,85.183019 L 1186.0291,201.55669 L 1125.0933,201.55669 L 1124.905,435.92337 L 895.53178,436.18679 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path6352" />
+  <path
+     d="M 1010.4044,106.71839 L 916.46889,182.65132 L 915.93636,415.04813 L 984.09907,415.58065 L 984.09907,315.46667 L 1036.2861,315.46667 L 1036.2861,415.79824 L 1104.4546,416.43956 L 1104.7752,184.14581 L 1010.4044,106.71839 z "
+     style="opacity:1;fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path6354" />
+  <path
+     d="M 942.7342,200.08063 L 942.7342,268.00838 L 996.92539,268.00838 L 996.92539,200.37026 L 942.7342,200.08063 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path8126" />
+  <path
+     d="M 1022.9936,200.2513 L 1022.9936,268.17905 L 1077.1848,268.17905 L 1077.1848,200.54093 L 1022.9936,200.2513 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path8128" />
+  <path
+     d="M 475.47976 658.95959 A 41.778557 41.778557 0 1 1  391.92265,658.95959 A 41.778557 41.778557 0 1 1  475.47976 658.95959 z"
+     transform="matrix(0.784946,0,0,0.784946,158.2151,209.7381)"
+     style="opacity:1;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:28;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path8130" />
+  <g
+     transform="matrix(1.441028,0,0,1.441028,-581.7626,-346.2043)"
+     style="fill:white"
+     id="g8166">
+    <path
+       d="M 884.3916,771.02487 L 879.2194,653.21517 L 846.4626,679.65057 C 839.301,679.08287 831.7315,679.07627 827.8493,673.99947 L 879.0279,624.00227 C 890.6471,627.25517 901.6341,626.29387 911.9763,621.03307 L 948.7559,628.50387 L 966.571,665.28347 C 961.0569,666.32917 958.1253,671.47647 945.8825,661.83537 L 936.6876,643.44557 L 921.7459,642.87097 L 934.9635,695.74157 L 969.4444,699.76437 C 978.6192,700.88517 979.1902,709.09157 981.5127,715.85547 L 925.7686,716.43017 L 915.999,702.63777 L 899.908,707.23527 L 900.4826,760.10597 C 895.6684,767.59167 890.0384,769.36727 884.3916,771.02487 z "
+       style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5675" />
+    <path
+       d="M 916.2679,592.77679 C 916.2679,605.81157 905.7011,616.37837 892.6663,616.37837 C 879.6315,616.37837 869.0647,605.81157 869.0647,592.77679 C 869.0647,579.74198 879.6315,569.17519 892.6663,569.17519 C 905.7011,569.17519 916.2679,579.74198 916.2679,592.77679 z "
+       style="fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path5679" />
+  </g>
+  <path
+     d="M 124.81368,503.31128 C 106.15606,502.01002 105.7106,475.35302 105.30778,460.18057 L 192.81314,318.78254 C 210.20009,293.87442 272.4526,303.43431 272.42631,339.92979 L 272.42631,398.39571 L 357.0153,450.64185 C 343.82646,462.27796 332.03327,476.70536 309.32687,469.30636 L 271.60046,446.07377 L 271.18753,495.01133 L 181.61754,495.42426 L 181.61754,417.05505 L 124.81368,503.31128 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path8188" />
+  <path
+     d="M 118.1758,737.99563 L 226.39477,563.0108 L 225.57927,726.80003 C 235.68997,753.97726 254.75484,757.59539 271.61081,761.2334 L 271.19789,504.13195 L 181.61754,504.13195 L 181.61754,546.42644 L 100.76559,675.39527 C 83.130331,724.534 112.57152,731.05473 118.1758,737.99563 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path8190" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_327.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_327.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_327.svg	(revision 36424)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 16.93511,474.30807 5.0927831,462.751 5.0927831,449.14373 L 5.691934,30.936364 C 5.691934,17.424109 14.494985,5.7720243 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 393.71875,16.71875 L 393.71875,16.75 L 84.75,16.75 L 84.75,16.78125 L 35.1875,16.78125 C 23.426887,16.266334 16.714331,24.30046 17.15625,37.15625 L 17.15625,443.5625 C 17.202803,452.2297 20.884421,462.63293 32.84375,462.84375 L 84.15625,462.84375 L 393.71875,462.78125 L 393.71875,462.8125 L 447.28125,462.8125 C 459.24058,462.6017 462.95345,452.19845 463,443.53125 L 463,37.09375 C 463.44191,24.237959 456.72937,16.20383 444.96875,16.71875 L 393.71875,16.71875 z M 393.71875,83.21875 L 393.71875,396.125 L 86.4375,396.34375 L 86.4375,83.28125 L 393.71875,83.21875 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:#039;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3661" />
+  <g
+     id="g8184">
+    <path
+       d="M 240.1875,155.15625 C 167.33571,155.15625 118.40625,219.03071 118.40625,256.3125 C 118.40625,256.3125 118.5,256.65625 118.5,256.65625 L 118.5,347.5625 L 359.34375,345.75 L 359.34375,256.65625 L 359.75,256.4375 C 359.75,219.53516 311.81302,156.59041 240.1875,155.3125 L 240.1875,155.15625 z "
+       style="opacity:1;color:black;fill:black;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path3703" />
+    <path
+       d="M 381.915,346.95341 L 93.845366,347.54736 L 95.62724,241.82284 L 118.7916,196.08807 L 157.99283,156.29288 L 210.85509,133.72248 L 264.31132,133.72248 L 318.3615,156.29288 L 361.42345,196.97901 L 382.21198,243.01076 L 381.915,346.95341 z "
+       style="opacity:1;color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path1882" />
+    <path
+       d="M 97.438084,244.21377 L 117.87656,256.01393"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2780" />
+    <path
+       d="M 119.27765,196.38505 L 136.49732,209.94531"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3667" />
+    <path
+       d="M 158.75688,156.29288 L 170.51665,175.92598"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3670" />
+    <path
+       d="M 212.09583,133.92681 L 213.7758,156.29288"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3672" />
+    <path
+       d="M 96.178108,301.50351 L 116.33771,301.50351"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3674" />
+    <path
+       d="M 380.09252,244.84375 L 359.65404,256.64391"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3685" />
+    <path
+       d="M 358.25295,197.01503 L 341.03328,210.57529"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3687" />
+    <path
+       d="M 318.77372,156.92286 L 307.01395,176.55596"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3689" />
+    <path
+       d="M 265.43477,134.55679 L 263.7548,156.92286"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3691" />
+    <path
+       d="M 381.35249,302.13349 L 361.19289,302.13349"
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3693" />
+  </g>
+  <path
+     d="M 117.65052,255.56477 C 118.1501,255.56477 118.1501,255.56477 117.65052,255.56477 z "
+     style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path3709" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_380.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_380.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_380.svg	(revision 36424)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 16.93511,474.30807 5.0927831,462.751 5.0927831,449.14373 L 5.691934,30.936364 C 5.691934,17.424109 14.494985,5.7720243 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 35.1875,16.78125 C 23.426887,16.266334 16.714331,24.30046 17.15625,37.15625 L 17.15625,443.5625 C 17.202803,452.2297 20.884421,462.63293 32.84375,462.84375 L 447.28125,462.8125 C 459.24058,462.6017 462.95345,452.19845 463,443.53125 L 463,37.09375 C 463.44191,24.237959 456.72937,16.20383 444.96875,16.71875 L 35.1875,16.78125 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:#039;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3661" />
+  <path
+     d="M 128.33805,186.63996 C 128.33801,197.81717 131.83761,206.28133 138.83688,212.03247 C 145.83603,217.78391 153.67624,220.65955 162.35751,220.65942 C 171.03862,220.65955 178.87882,217.78391 185.87814,212.03247 C 192.87724,206.28133 196.37685,197.81717 196.37696,186.63996 C 196.37685,175.57161 192.87724,167.13458 185.87814,161.32884 C 178.87882,155.52349 171.03862,152.62071 162.35751,152.62051 C 153.67624,152.62071 145.83603,155.52349 138.83688,161.32884 C 131.83761,167.13458 128.33801,175.57161 128.33805,186.63996 L 128.33805,186.63996 z M 90.086515,288.69832 C 90.086507,265.58472 99.418788,247.78828 118.08339,235.30894 C 111.02988,229.0152 105.30572,222.04312 100.91089,214.39268 C 96.516015,206.74252 94.318588,197.70865 94.3186,187.29105 C 94.318588,168.1926 100.85661,151.96962 113.93269,138.62207 C 127.0087,125.27496 143.15029,118.60129 162.35751,118.60106 C 181.56456,118.60129 197.70615,125.27496 210.78233,138.62207 C 223.85824,151.96962 230.39627,168.1926 230.39642,187.29105 C 230.39627,197.70865 228.17171,206.74252 223.72274,214.39268 C 219.27349,222.04312 213.63072,229.0152 206.7944,235.30894 C 225.35032,247.89679 234.62835,265.69324 234.6285,288.69832 C 234.62835,309.75028 227.49349,326.86851 213.22392,340.05305 C 198.95408,353.23763 181.99862,359.82991 162.35751,359.82991 C 142.60772,359.82991 125.62514,353.23763 111.40971,340.05305 C 97.194233,326.86851 90.086507,309.75028 90.086515,288.69832 L 90.086515,288.69832 z M 124.10597,288.37278 C 124.10593,299.22434 127.93108,308.20395 135.58143,315.31163 C 143.23168,322.4194 152.15703,325.97326 162.35751,325.97323 C 172.44931,325.97326 181.37466,322.4194 189.13359,315.31163 C 196.89229,308.20395 200.7717,299.22434 200.77182,288.37278 C 200.7717,277.52136 196.89229,268.51462 189.13359,261.35254 C 181.37466,254.19066 172.44931,250.60967 162.35751,250.60956 C 152.15703,250.60967 143.23168,254.19066 135.58143,261.35254 C 127.93108,268.51462 124.10593,277.52136 124.10597,288.37278 L 124.10597,288.37278 z M 355.89402,289.67496 L 355.89402,188.91878 C 355.89391,177.52488 352.82836,168.62666 346.69738,162.22409 C 340.56618,155.8219 332.50895,152.62071 322.52566,152.62051 C 312.43369,152.62071 304.34933,155.8219 298.27256,162.22409 C 292.19567,168.62666 289.15725,177.52488 289.1573,188.91878 L 289.1573,289.67496 C 289.15725,301.17761 292.19567,310.10296 298.27256,316.45104 C 304.34933,322.7992 312.43369,325.97326 322.52566,325.97323 C 332.50895,325.97326 340.56618,322.7992 346.69738,316.45104 C 352.82836,310.10296 355.89391,301.17761 355.89402,289.67496 L 355.89402,289.67496 z M 255.13784,291.62823 L 255.13784,186.96551 C 255.13783,165.15418 261.97427,148.30725 275.64718,136.42464 C 289.32002,124.54248 304.94617,118.60129 322.52566,118.60106 C 339.99648,118.60129 355.59549,124.54248 369.32276,136.42464 C 383.04976,148.30725 389.91333,165.15418 389.91348,186.96551 L 389.91348,291.62823 C 389.91333,313.43979 383.04976,330.2596 369.32276,342.08771 C 355.59549,353.91585 339.99648,359.82991 322.52566,359.82991 C 304.94617,359.82991 289.32002,353.91585 275.64718,342.08771 C 261.97427,330.2596 255.13783,313.43979 255.13784,291.62823 L 255.13784,291.62823 z "
+     style="font-size:333.35809326px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:white;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text2891" />
+</svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/DE_Kraftfahrzeuge-frei.svg
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/DE_Kraftfahrzeuge-frei.svg	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/DE_Kraftfahrzeuge-frei.svg	(revision 36424)
@@ -0,0 +1,111 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="490"
+   height="360"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.1 r9760"
+   sodipodi:docname="DE_1026-34.svg">
+  <metadata
+     id="metadata10">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="973"
+     inkscape:window-width="1400"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.74246212"
+     inkscape:cx="245"
+     inkscape:cy="73.530541"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:current-layer="svg2"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 38.78125,4.6190618 C 20.35689,4.6190483 9.96875,14.244672 9.96875,42.683954 L 9.65625,317.31604 C 9.65625,345.75531 20.04439,355.38094 38.46875,355.38094 L 451.21875,355.33878 C 469.64311,355.33878 480.03124,345.71316 480.03125,317.27389 L 480.34375,42.726108 C 480.34375,14.286826 469.95561,4.6612021 451.53125,4.6612156 L 38.78125,4.6190618 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path1881" />
+  <path
+     d="M 453.23342,19.074797 L 36.79782,19.117707 C 28.375505,19.117707 23.425891,27.356247 23.425891,39.539027 L 23.425891,320.50387 C 23.425891,332.68661 28.375515,340.9252 36.79782,340.9252 L 453.20218,340.88229 C 461.62449,340.88228 466.57411,332.64373 466.57411,320.46097 L 466.57411,39.496127 C 466.57411,27.313347 461.65573,19.074797 453.23342,19.074797 z "
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3976" />
+  <path
+     inkscape:connector-curvature="0"
+     style="font-size:91.01569366px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN 1451 Mittelschrift"
+     d="m 190.22615,304.89475 0,-39.01943 -4.66633,0 0,-7.1106 4.66633,0 0,-6.08845 c 0,-4.29593 1.18509,-7.45867 3.5553,-9.48821 2.37019,-2.02942 5.36257,-3.04416 8.97714,-3.04423 l 5.99957,0 0,8.71049 -5.24407,0 c -2.69612,6e-5 -4.04417,1.27404 -4.04415,3.82195 l 0,6.08845 9.28822,0 0,7.1106 -9.28822,0 0,39.01943 -9.24379,0 z m 23.77608,0 0,-46.13003 9.28822,0 0,4.93298 0.17776,0 c 2.87385,-3.64414 6.87356,-5.46623 11.99914,-5.46627 3.37751,4e-5 6.59209,1.18514 9.64375,3.5553 l -6.71062,7.99942 c -2.0147,-1.51096 -4.059,-2.26646 -6.1329,-2.2665 -2.28134,4e-5 -4.34785,0.76294 -6.19955,2.28872 -1.85174,1.52585 -2.7776,3.97753 -2.77758,7.35503 l 0,27.73135 -9.28822,0 z m 71.10601,-19.55416 -28.70906,0 c -10e-6,3.79234 1.02955,6.63658 3.08867,8.53272 2.0591,1.89617 4.68853,2.84425 7.88832,2.84424 3.82193,10e-6 7.19946,-1.48136 10.13261,-4.44412 l 6.71063,5.73292 c -2.28135,2.66648 -4.85154,4.57005 -7.71056,5.7107 -2.85908,1.14066 -5.84405,1.71099 -8.95491,1.71099 -4.74042,0 -9.33268,-1.53322 -13.77679,-4.59967 -4.44413,-3.06644 -6.66619,-9.34006 -6.66619,-18.82087 0,-8.9771 2.0517,-15.18406 6.15512,-18.62089 4.10339,-3.43674 8.39197,-5.15514 12.86574,-5.15518 5.06628,4e-5 9.49558,1.75547 13.28793,5.26629 3.79229,3.51089 5.68845,8.24388 5.68849,14.19898 l 0,7.64389 z m -28.70906,-7.64389 19.46528,0 c -0.14817,-3.46639 -1.12588,-6.11805 -2.93313,-7.95499 -1.8073,-1.83687 -4.07381,-2.75532 -6.79951,-2.75536 -2.75538,4e-5 -5.0441,0.91849 -6.86617,2.75536 -1.82211,1.83694 -2.7776,4.4886 -2.86647,7.95499 l 0,0 z m 38.75278,27.19805 0,-46.13003 9.28822,0 0,46.13003 -9.28822,0 z m 0,-55.46269 0,-9.28823 9.28822,0 0,9.28823 -9.28822,0 z"
+     id="text4949" />
+  <path
+     inkscape:connector-curvature="0"
+     style="font-size:91.01599884px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN 1451 Mittelschrift"
+     d="m 61.67922,210.36432 0,-39.01955 -4.66635,0 0,-7.11063 4.66635,0 0,-6.08847 c -1e-5,-4.29595 1.1851,-7.45869 3.55531,-9.48824 2.3702,-2.02943 5.36258,-3.04417 8.97717,-3.04424 l 5.99959,0 0,8.71052 -5.24409,0 c -2.69613,5e-5 -4.04418,1.27404 -4.04417,3.82196 l 0,6.08847 9.28826,0 0,7.11063 -9.28826,0 0,39.01955 -9.24381,0 z m 47.99672,0 0,-4.08861 -0.22221,0 c -1.86657,3.08127 -5.65889,4.62191 -11.377,4.62191 -5.15521,0 -9.15494,-1.34065 -11.99918,-4.02195 -2.84425,-2.68129 -4.26637,-6.03662 -4.26637,-10.06598 0,-3.64418 1.25917,-6.82914 3.77752,-9.5549 2.51833,-2.72571 6.26622,-4.08858 11.24367,-4.08861 l 12.84357,0 0,-4.79967 c -3e-5,-3.94044 -3.15537,-5.91067 -9.46602,-5.91071 -4.3849,4e-5 -7.30322,1.17033 -8.75496,3.51087 l -7.28839,-5.51073 c 3.2294,-4.50335 8.41423,-6.75505 15.55449,-6.7551 5.68848,5e-5 10.31038,1.11108 13.86572,3.33311 3.55528,2.22211 5.33293,6.17739 5.33297,11.86585 l 0,31.46452 -9.24381,0 z m 0,-16.17667 0,-3.37755 -11.11035,0 c -5.36261,2e-5 -8.04391,1.85174 -8.0439,5.55518 -1e-5,1.57027 0.67402,2.93314 2.02209,4.08861 1.34804,1.15548 3.59233,1.73322 6.73287,1.73321 3.85156,1e-5 6.54767,-0.42959 8.08834,-1.2888 1.5406,-0.85919 2.31092,-3.09607 2.31095,-6.71065 l 0,0 z m 21.28743,16.17667 0,-64.75113 9.28826,0 0,23.55395 0.17776,0 c 2.87386,-3.64415 6.87358,-5.46625 11.99918,-5.4663 3.58491,5e-5 7.04393,1.36292 10.37707,4.08861 3.33306,2.72578 4.99962,6.69588 4.99966,11.9103 l 0,30.66457 -9.28826,0 0,-27.46479 c -3e-5,-3.11087 -0.86664,-5.54033 -2.59982,-7.28839 -1.73324,-1.74799 -3.88865,-2.622 -6.46622,-2.62204 -2.66651,4e-5 -4.86636,0.87405 -6.59955,2.62204 -1.73323,1.74806 -2.59984,4.17752 -2.59982,7.28839 l 0,27.46479 -9.28826,0 z m 48.88555,0 0,-46.13018 9.28825,0 0,4.933 0.17777,0 c 2.87386,-3.64415 6.87358,-5.46625 11.99918,-5.4663 3.37751,5e-5 6.5921,1.18515 9.64378,3.55532 l -6.71065,7.99945 c -2.01471,-1.51097 -4.05901,-2.26647 -6.13292,-2.26651 -2.28134,4e-5 -4.34787,0.76295 -6.19957,2.28873 -1.85174,1.52586 -2.77761,3.97754 -2.77759,7.35505 l 0,27.73144 -9.28825,0 z m 32.35335,0 0,-7.33283 23.10953,-30.57569 -21.82073,0 0,-8.22166 33.10885,0 0,7.37727 -23.10954,30.04239 23.10954,0 0,8.71052 -34.39765,0 z m 79.10569,-19.55422 -28.70915,0 c -2e-5,3.79235 1.02954,6.6366 3.08868,8.53275 2.0591,1.89618 4.68854,2.84426 7.88835,2.84425 3.82193,1e-5 7.19947,-1.48137 10.13264,-4.44414 l 6.71065,5.73294 c -2.28137,2.66649 -4.85156,4.57006 -7.71059,5.71072 -2.85909,1.14067 -5.84407,1.711 -8.95494,1.711 -4.74044,0 -9.33271,-1.53323 -13.77684,-4.59969 -4.44414,-3.06645 -6.66621,-9.34009 -6.66621,-18.82093 0,-8.97714 2.05171,-15.18411 6.15514,-18.62095 4.10341,-3.43676 8.392,-5.15516 12.86578,-5.15521 5.0663,5e-5 9.49562,1.75548 13.28799,5.26631 3.79229,3.51091 5.68845,8.24391 5.6885,14.19903 l 0,7.64392 z m -28.70915,-7.64392 19.46533,0 c -0.14817,-3.4664 -1.12588,-6.11807 -2.93313,-7.95501 -1.80731,-1.83688 -4.07382,-2.75533 -6.79954,-2.75537 -2.75538,4e-5 -5.04411,0.91849 -6.86619,2.75537 -1.82211,1.83694 -2.7776,4.48861 -2.86647,7.95501 l 0,0 z m 38.48627,11.73253 0,-30.66457 9.28825,0 0,27.50923 c -1e-5,3.14054 0.86659,5.57741 2.59982,7.31061 1.7332,1.73323 3.93305,2.59983 6.59955,2.59982 2.57758,1e-5 4.73298,-0.86659 6.46623,-2.59982 1.73318,-1.7332 2.59978,-4.17007 2.59982,-7.31061 l 0,-27.50923 9.28825,0 0,46.13018 -9.28825,0 0,-4.88855 -0.17777,0 c -2.87391,3.61456 -6.844,5.42185 -11.91029,5.42185 -3.64422,0 -7.13286,-1.35547 -10.46596,-4.06639 -3.33311,-2.71092 -4.99966,-6.68842 -4.99965,-11.93252 l 0,0 z m 74.79488,15.42117 0,-4.75523 c -3.22944,3.55531 -7.19953,5.33297 -11.9103,5.33297 -3.02203,0 -5.54778,-0.59996 -7.57726,-1.79988 -2.0295,-1.19992 -3.56272,-2.46649 -4.59968,-3.79974 -1.33325,-1.71839 -2.2443,-3.54049 -2.73315,-5.46629 -0.48886,-1.92579 -0.73329,-6.08846 -0.73328,-12.48804 -10e-6,-6.39953 0.24442,-10.56221 0.73328,-12.48803 0.48885,-1.92576 1.3999,-3.76267 2.73315,-5.51074 1.03696,-1.30357 2.57018,-2.57015 4.59968,-3.79974 2.02948,-1.2295 4.55523,-1.84427 7.57726,-1.84432 4.50337,5e-5 8.47347,1.82215 11.9103,5.4663 l 0,-4.933 9.28825,0 0,45.06359 c -4e-5,6.93285 -2.02212,12.04361 -6.06625,15.33228 -4.0442,3.28865 -8.68832,4.93298 -13.93238,4.933 -2.96278,-2e-5 -5.86628,-0.71108 -8.71051,-2.13319 -2.84426,-1.42214 -5.28854,-3.28868 -7.33284,-5.59962 l 7.19951,-5.73294 c 1.12584,1.12584 2.46648,2.10355 4.02195,2.93313 1.55543,0.82957 3.22198,1.24435 4.99966,1.24436 3.08124,-1e-5 5.60699,-0.85921 7.57726,-2.5776 1.9702,-1.7184 2.95532,-4.17749 2.95535,-7.37727 l 0,0 z m -18.26542,-22.97621 c -10e-6,3.70347 0.0963,6.16256 0.28887,7.37728 0.19257,1.21474 0.70364,2.34059 1.53323,3.37754 0.62216,0.82959 1.54062,1.62953 2.75537,2.39984 1.21471,0.77032 2.75534,1.15548 4.6219,1.15547 1.80726,1e-5 3.31086,-0.38515 4.51081,-1.15547 1.19988,-0.77031 2.12575,-1.57025 2.77758,-2.39984 0.79992,-1.03695 1.29618,-2.1628 1.48879,-3.37754 0.19255,-1.21472 0.28884,-3.67381 0.28887,-7.37728 -3e-5,-3.70342 -0.0963,-6.16251 -0.28887,-7.37727 -0.19261,-1.2147 -0.68887,-2.35536 -1.48879,-3.42199 -0.65183,-0.79991 -1.5777,-1.59245 -2.77758,-2.37762 -1.19995,-0.78509 -2.70355,-1.17765 -4.51081,-1.17769 -1.86656,4e-5 -3.40719,0.3926 -4.6219,1.17769 -1.21475,0.78517 -2.13321,1.57771 -2.75537,2.37762 -0.82959,1.06663 -1.34066,2.20729 -1.53323,3.42199 -0.19259,1.21476 -0.28888,3.67385 -0.28887,7.37727 l 0,0 z m 75.37261,3.46643 -28.70914,0 c -2e-5,3.79235 1.02954,6.6366 3.08867,8.53275 2.0591,1.89618 4.68855,2.84426 7.88835,2.84425 3.82194,1e-5 7.19948,-1.48137 10.13264,-4.44414 l 6.71066,5.73294 c -2.28137,2.66649 -4.85156,4.57006 -7.71059,5.71072 -2.85909,1.14067 -5.84407,1.711 -8.95494,1.711 -4.74044,0 -9.33271,-1.53323 -13.77684,-4.59969 -4.44414,-3.06645 -6.66621,-9.34009 -6.66621,-18.82093 0,-8.97714 2.05171,-15.18411 6.15514,-18.62095 4.10341,-3.43676 8.392,-5.15516 12.86578,-5.15521 5.0663,5e-5 9.49562,1.75548 13.28798,5.26631 3.7923,3.51091 5.68846,8.24391 5.6885,14.19903 l 0,7.64392 z m -28.70914,-7.64392 19.46533,0 c -0.14817,-3.4664 -1.12588,-6.11807 -2.93313,-7.95501 -1.80731,-1.83688 -4.07382,-2.75533 -6.79954,-2.75537 -2.75538,4e-5 -5.04411,0.91849 -6.86619,2.75537 -1.82211,1.83694 -2.7776,4.48861 -2.86647,7.95501 l 0,0 z"
+     id="text1969" />
+  <g
+     style="font-size:90px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:FreeSans;-inkscape-font-specification:FreeSans"
+     id="text3010">
+    <path
+       d="m 154.20762,97.307133 0,22.949997 -8.37,0 0,-65.609997 8.37,0 0,33.21 32.67,-33.21 10.8,0 -26.73,26.73 27,38.879997 -9.9,0 -23.13,-33.659997 -10.71,10.71"
+       style="line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans"
+       id="path3023" />
+    <path
+       d="m 224.21918,79.667133 c -5.04003,0.120041 -8.82002,1.29004 -11.34,3.51 -2.52002,2.220035 -3.78002,6.420031 -3.78,12.6 l 0,24.479997 -7.56,0 0,-47.159997 6.93,0 0,8.55 c 2.15998,-3.539957 4.22998,-6.059955 6.21,-7.56 2.03998,-1.559952 4.25997,-2.339951 6.66,-2.34 0.65997,4.9e-5 1.61997,0.09005 2.88,0.27 l 0,7.65"
+       style="line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans"
+       id="path3025" />
+    <path
+       d="m 229.47996,87.047133 c 0.35999,-10.199956 6.65999,-15.299951 18.9,-15.3 5.81997,4.9e-5 10.22996,1.110048 13.23,3.33 2.99996,2.160044 4.49996,5.34004 4.5,9.54 l 0,27.719997 c -4e-5,2.46001 1.34996,3.69001 4.05,3.69 0.53995,1e-5 1.07995,-0.06 1.62,-0.18 l 0,5.67 c -2.10005,0.54 -3.81005,0.81 -5.13,0.81 -2.40004,0 -4.23004,-0.57 -5.49,-1.71 -1.20004,-1.08 -1.95004,-2.81999 -2.25,-5.22 -5.04003,4.62 -10.38003,6.93 -16.02,6.93 -4.74002,0 -8.52001,-1.26 -11.34,-3.78 -2.76001,-2.51999 -4.14,-5.90999 -4.14,-10.17 0,-1.37998 0.12,-2.63998 0.36,-3.78 0.29999,-1.13998 0.59999,-2.12998 0.9,-2.97 0.35999,-0.89998 0.95999,-1.709976 1.8,-2.429997 0.83999,-0.779978 1.52999,-1.409977 2.07,-1.89 0.59999,-0.479976 1.55999,-0.929976 2.88,-1.35 1.37999,-0.479975 2.42998,-0.809974 3.15,-0.99 0.71998,-0.239974 1.97998,-0.509974 3.78,-0.81 1.79998,-0.299973 3.11998,-0.509973 3.96,-0.63 0.83998,-0.119973 2.33997,-0.329972 4.5,-0.63 2.93997,-0.359972 4.97997,-0.929971 6.12,-1.71 1.13996,-0.77997 1.70996,-1.949968 1.71,-3.51 l 0,-1.98 c -4e-5,-2.279963 -0.93003,-4.019961 -2.79,-5.22 -1.80003,-1.199959 -4.38003,-1.799958 -7.74,-1.8 -3.48002,4.2e-5 -6.12002,0.690041 -7.92,2.07 -1.80002,1.320039 -2.85001,3.420037 -3.15,6.3 l -7.56,0 m 15.03,28.709997 c 4.13997,1e-5 7.52997,-1.07999 10.17,-3.24 2.63997,-2.21999 3.95996,-4.58998 3.96,-7.11 l 0,-8.459997 c -1.50003,0.720023 -3.78003,1.320022 -6.84,1.8 -3.00003,0.480022 -5.61002,0.900021 -7.83,1.259997 -2.22002,0.36002 -4.23002,1.23002 -6.03,2.61 -1.80001,1.32002 -2.70001,3.18002 -2.7,5.58 -1e-5,2.40001 0.80999,4.26001 2.43,5.58 1.61998,1.32001 3.89998,1.98001 6.84,1.98"
+       style="line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans"
+       id="path3027" />
+    <path
+       d="m 296.06871,73.097133 0,6.12 -7.83,0 0,41.039997 -7.47,0 0,-41.039997 -6.3,0 0,-6.12 6.3,0 0,-8.01 c -10e-6,-3.359941 0.95999,-5.969938 2.88,-7.83 1.97999,-1.919935 4.70998,-2.879934 8.19,-2.88 1.37998,6.6e-5 2.78998,0.150066 4.23,0.45 l 0,6.21 c -1.14002,-0.05994 -2.01002,-0.08994 -2.61,-0.09 -3.48002,6e-5 -5.22002,1.590058 -5.22,4.77 l 0,7.38 7.83,0"
+       style="line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans"
+       id="path3029" />
+    <path
+       d="m 320.66965,73.097133 0,6.12 -7.74,0 0,32.309997 c -2e-5,1.68001 0.26998,2.82001 0.81,3.42 0.59998,0.54001 1.70998,0.81001 3.33,0.81 1.49998,1e-5 2.69997,-0.11999 3.6,-0.36 l 0,6.3 c -2.34002,0.42 -4.38002,0.63 -6.12,0.63 -2.94002,0 -5.19001,-0.66 -6.75,-1.98 -1.56001,-1.26 -2.34001,-3.08999 -2.34,-5.49 l 0,-35.639997 -6.39,0 0,-6.12 6.39,0 0,-12.96 7.47,0 0,12.96 7.74,0"
+       style="line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans"
+       id="path3031" />
+    <path
+       d="m 348.33058,92.177133 0,6.48 -21.42,0 0,-6.48 21.42,0"
+       style="line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans"
+       id="path3033" />
+  </g>
+  <flowRoot
+     xml:space="preserve"
+     id="flowRoot3014"
+     style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:40px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+       id="flowRegion3016"><rect
+         id="rect3018"
+         width="56.568542"
+         height="70.037247"
+         x="-387.89859"
+         y="-101.97643" /></flowRegion><flowPara
+       id="flowPara3020"></flowPara></flowRoot></svg>
Index: /applications/editors/josm/plugins/RoadSigns/images_src/convert.pl
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/images_src/convert.pl	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/images_src/convert.pl	(revision 36424)
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Getopt::Std;
+
+my %val;
+getopts('h:', \%val);
+
+# helper script to convert svg file to png and move them to the right place
+#
+# usage:
+# cd plugins/roadsigns/images_src/
+# ./convert.pl -h 36 foo.svg
+
+my $h = $val{"h"};
+if (!$h) {
+    $h = "40";
+}
+
+foreach my $i (0..$#ARGV) {
+    my $f = $ARGV[$i];
+    my $f2 = $f;
+    $f2 =~ s/\.svg$/.png/;
+    system("inkscape", "-f", $f, "-e", "../images/$f2", "-h", "$h");
+}
Index: /applications/editors/josm/plugins/RoadSigns/pom.xml
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/pom.xml	(revision 36424)
@@ -0,0 +1,45 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>RoadSigns</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Paul Hartmann</name>
+        </developer>
+    </developers>
+    <properties>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+
+        <plugin.author>Paul Hartmann</plugin.author>
+        <plugin.class>org.openstreetmap.josm.plugins.roadsigns.RoadSignsPlugin</plugin.class>
+        <plugin.description>Plugin for tagging of objects based on a selection of road signs. The dialog can be opened by clicking a small icon in the upper right corner of the properties window. Available country presets: Belgium, Czech Republic, Germany, Poland, Slovakia, Spain.</plugin.description>
+        <plugin.icon>images/pref/roadsigns.png</plugin.icon>
+        <plugin.link>https://wiki.openstreetmap.org/wiki/JOSM/Plugins/RoadSigns</plugin.link>
+        <plugin.canloadatruntime>true</plugin.canloadatruntime>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                            <Plugin-Canloadatruntime>${plugin.canloadatruntime}</Plugin-Canloadatruntime>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/ParametrizedString.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/ParametrizedString.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/ParametrizedString.java	(revision 36424)
@@ -0,0 +1,146 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.roadsigns;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.openstreetmap.josm.plugins.roadsigns.javacc.ParamStringScanner;
+import org.openstreetmap.josm.plugins.roadsigns.javacc.ParseException;
+import org.openstreetmap.josm.plugins.roadsigns.javacc.TokenMgrError;
+import org.openstreetmap.josm.tools.Logging;
+
+/**
+ * A parametrized string is a string that contains identifiers that can
+ * be substituted when the values of the parameters are known.
+ * The syntax is in perl style, e.g.
+ *  "Up to $val% in ${num}th row costs 12 \$.".
+ *
+ * This class represent a parsed string (parameters are identified).
+ * It can be constructed from a String. Given a parameter environment,
+ * the String value can be determined.
+ *
+ */
+public class ParametrizedString {
+    final List<StringOrParameter> token = new ArrayList<>();
+
+    /**
+     * Describes the union of String and Parameter type. Both
+     * types have a single String object as their backing data.
+     */
+    public interface StringOrParameter {
+    }
+
+    public static class Prm implements StringOrParameter {
+        public final String ident;
+        public Prm(String ident) {
+            this.ident = ident;
+        }
+
+        @Override
+        public String toString() {
+            return "<Prm="+ident+">";
+        }
+    }
+
+    public static class Str implements StringOrParameter {
+        String value;
+        public Str(String stringValue) {
+            this.value = stringValue;
+        }
+
+        @Override
+        public String toString() {
+            return "<Str="+value+">";
+        }
+    }
+
+    protected ParametrizedString(String input) throws ParseException, TokenMgrError {
+        scan(input);
+    }
+
+    /**
+     * Constructor that returns a null value for null value input.
+     * Once it is created, the list of token is immutable.
+     */
+    public static ParametrizedString create(String input) throws ParseException, TokenMgrError {
+        if (input == null)
+            return null;
+        return new ParametrizedString(input);
+    }
+
+    /**
+     * The tokenizer. Creates the list of tokens
+     * from the input string.
+     */
+    protected void scan(String input) throws ParseException, TokenMgrError {
+        List<StringOrParameter> tmp = null;
+        tmp = ParamStringScanner.parseIt(input);
+        StringBuilder curString = new StringBuilder();
+        for (StringOrParameter sp : tmp) {
+            if (sp instanceof Prm) {
+                if (curString.length() > 0) {
+                    token.add(new Str(curString.toString()));
+                    curString = new StringBuilder();
+                }
+                token.add(sp);
+            } else if (sp instanceof Str) {
+                curString.append(((Str) sp).value);
+            }
+        }
+        if (curString.length() > 0) {
+            token.add(new Str(curString.toString()));
+        }
+    }
+
+    /**
+     * Evaluates the string value, given an environment of
+     * parameter mappings.
+     */
+    public String evaluate(Map<String, String> env) {
+        StringBuilder sb = new StringBuilder();
+        for (StringOrParameter t : token) {
+            if (t instanceof Str) {
+                sb.append(((Str) t).value);
+            } else if (t instanceof Prm) {
+                String val = env.get(((Prm) t).ident);
+                if (val == null) {
+                    Logging.warn("Parameter not in environment: "+((Prm) t).ident+" ("+this.toString()+")");
+                    Thread.dumpStack();
+                    val = "<?>";
+                }
+                sb.append(val);
+            } else
+                throw new AssertionError();
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Converts to a string that could be parsed again to an equal object.
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        for (StringOrParameter t : token) {
+            if (t instanceof Str) {
+                sb.append(((Str) t).value);
+            } else if (t instanceof Prm) {
+                sb.append("${"+((Prm) t).ident+"}");
+            } else
+                throw new AssertionError();
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Creates a debug string for this object
+     */
+    public String toDebugString() {
+        StringBuilder res = new StringBuilder();
+        for (StringOrParameter sop : token) {
+            res.append(sop);
+        }
+        return res.toString();
+    }
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignInputDialog.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignInputDialog.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignInputDialog.java	(revision 36424)
@@ -0,0 +1,961 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.roadsigns;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.beans.XMLDecoder;
+import java.beans.XMLEncoder;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JEditorPane;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.Scrollable;
+import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.border.Border;
+import javax.swing.border.EtchedBorder;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.table.AbstractTableModel;
+
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.UndoRedoHandler;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
+import org.openstreetmap.josm.gui.widgets.MultiSplitLayout.Divider;
+import org.openstreetmap.josm.gui.widgets.MultiSplitLayout.Leaf;
+import org.openstreetmap.josm.gui.widgets.MultiSplitLayout.Node;
+import org.openstreetmap.josm.gui.widgets.MultiSplitLayout.Split;
+import org.openstreetmap.josm.gui.widgets.MultiSplitPane;
+import org.openstreetmap.josm.plugins.roadsigns.RoadSignsPlugin.PresetMetaData;
+import org.openstreetmap.josm.plugins.roadsigns.Sign.SignParameter;
+import org.openstreetmap.josm.plugins.roadsigns.Sign.Tag;
+import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.OpenBrowser;
+import org.openstreetmap.josm.tools.Pair;
+
+/**
+ * Input dialog for road sign.
+ *
+ * Allows selection of a combination of road signs.
+ * It tries to generate the corresponding tags for the object.
+ *
+ * As tagging schemes are under constant development, the definitions
+ * need to be updated when needed.
+ *
+ * Often there is more than one way to tag a certain situation.
+ * So easy configuration is needed (TODO).
+ *
+ */
+class RoadSignInputDialog extends ExtendedDialog {
+    protected SignSelection sel;
+    protected List<Sign> signs;
+    protected JTable previewTable;
+    protected JCheckBox addTrafficSignTag;
+
+    protected PreviewTableModel previewModel;
+    protected JPanel pnlSignSelection;
+    protected JPanel pnlPossibleSigns;
+    protected JPanel pnlPossibleSupplements;
+    protected JEditorPane info;
+    protected JScrollPane scrollInfo;
+
+    private MultiSplitPane multiSplitPane;
+
+    RoadSignInputDialog() {
+        super(MainApplication.getMainFrame(), tr("Road Sign Plugin"), new String[] {tr("OK"), tr("Cancel")}, false /* modal */);
+        setRememberWindowGeometry(getClass().getName() + ".geometry",
+            WindowGeometry.centerInWindow(MainApplication.getMainFrame(), new Dimension(750, 550)));
+
+        this.signs = RoadSignsPlugin.signs;
+        sel = new SignSelection();
+        setButtonIcons("ok", "cancel");
+        final JTabbedPane tabs = new JTabbedPane();
+        tabs.add(tr("signs"), buildSignsPanel());
+        Action updateAction = new AbstractAction() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                RoadSignInputDialog.this.signs = RoadSignsPlugin.signs;
+                sel = new SignSelection();
+                tabs.setComponentAt(0, buildSignsPanel());
+            }
+        };
+        tabs.add(tr("settings"), new SettingsPanel(false, updateAction));
+        setContent(tabs, false);
+    }
+
+    @Override
+    protected void buttonAction(int i, ActionEvent evt) {
+        if (i == 0) { // OK Button
+            Collection<OsmPrimitive> selPrim = MainApplication.getLayerManager().getEditDataSet().getSelected();
+            if (!selPrim.isEmpty()) {
+                Config.getPref().putBoolean("plugin.roadsigns.addTrafficSignTag", addTrafficSignTag.isSelected());
+
+                Command cmd = createCommand(selPrim);
+                if (cmd != null) {
+                    UndoRedoHandler.getInstance().add(cmd);
+                }
+            }
+        }
+        super.buttonAction(i, evt);
+    }
+
+    @Override
+    public void setVisible(boolean visible) {
+        if (!visible) {
+            if (multiSplitPane != null) {
+                Node model = multiSplitPane.getMultiSplitLayout().getModel();
+                File f = new File(RoadSignsPlugin.pluginDir(), "roadsigns-layout.xml");
+                try (
+                    XMLEncoder xmlenc = new XMLEncoder(
+                            new BufferedOutputStream(new FileOutputStream(f))
+                    )) {
+                    xmlenc.writeObject(model);
+                } catch (FileNotFoundException ex) {
+                    Logging.warn("unable to write dialog layout: "+ex);
+                }
+            }
+        }
+        super.setVisible(visible);
+    }
+
+    private Command createCommand(Collection<OsmPrimitive> selPrim) {
+        List<Command> cmds = new LinkedList<>();
+        for (int i = 0; i < previewModel.getRowCount(); i++) {
+            String key = (String) previewModel.getValueAt(i, 0);
+            String value = (String) previewModel.getValueAt(i, 1);
+            cmds.add(new ChangePropertyCommand(selPrim, key, value));
+        }
+        if (cmds.isEmpty())
+            return null;
+        else if (cmds.size() == 1)
+            return cmds.get(0);
+        else
+            return new SequenceCommand(tr("Change Properties"), cmds);
+    }
+
+    private JComponent buildSignsPanel() {
+        FlowLayout fLayout = new FlowLayout(FlowLayout.LEFT);
+        fLayout.setAlignOnBaseline(true);
+
+        pnlSignSelection = new JPanel();
+        pnlSignSelection.setLayout(fLayout);
+
+        pnlPossibleSigns = new FixedWidthPanel();
+        pnlPossibleSupplements = new FixedWidthPanel();
+        fillSigns();
+
+        multiSplitPane = new MultiSplitPane();
+        File f = new File(RoadSignsPlugin.pluginDir(), "roadsigns-layout.xml");
+        try (XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(new FileInputStream(f)))) {
+            Node model = (Node) decoder.readObject();
+            multiSplitPane.getMultiSplitLayout().setModel(model);
+            multiSplitPane.getMultiSplitLayout().setFloatingDividers(false);
+        } catch (IOException | ArrayIndexOutOfBoundsException ex) {
+            // (COLUMN
+            //    (ROW weight=0.3 (LEAF name=upperleft weight=1.0) upperright)
+            //    (ROW weight=0.5 (LEAF name=middleleft weight=0.5) (LEAF name=middleright weight=0.5))
+            //    (LEAF name=bottom weight=0.2))
+
+            Split modelRoot = new Split();
+            modelRoot.setRowLayout(false);
+
+            Split row1 = new Split();
+            row1.setWeight(0.3);
+            Leaf upperleft = new Leaf("upperleft");
+            upperleft.setWeight(1.0);
+            row1.setChildren(Arrays.asList(upperleft, new Divider(), new Leaf("upperright")));
+
+            Split row2 = new Split();
+            row2.setWeight(0.5);
+            Leaf middleleft = new Leaf("middleleft");
+            middleleft.setWeight(0.5);
+            Leaf middleright = new Leaf("middleright");
+            middleright.setWeight(0.5);
+            row2.setChildren(Arrays.asList(middleleft, new Divider(), middleright));
+
+            Leaf bottom = new Leaf("bottom");
+            bottom.setWeight(0.2);
+
+            modelRoot.setChildren(Arrays.asList(row1, new Divider(), row2, new Divider(), bottom));
+
+            multiSplitPane.getMultiSplitLayout().setModel(modelRoot);
+        }
+        multiSplitPane.add(new JScrollPane(pnlSignSelection), "upperleft");
+        multiSplitPane.add(buildPreviewPanel(), "upperright");
+        JScrollPane scroll1 = new JScrollPane(pnlPossibleSigns,
+                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+        scroll1.setPreferredSize(new Dimension(10, 10));
+        multiSplitPane.add(scroll1, "middleleft");
+
+        JScrollPane scroll2 = new JScrollPane(pnlPossibleSupplements,
+                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+        scroll2.setPreferredSize(new Dimension(10, 10));
+        multiSplitPane.add(scroll2, "middleright");
+        info = new JEditorPane();
+        info.setEditable(false);
+        info.setContentType("text/html");
+        info.setText(" ");
+        info.setBackground(this.getBackground());
+        info.addHyperlinkListener(e -> {
+            if (e == null || e.getURL() == null)
+                return;
+            if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+                OpenBrowser.displayUrl(e.getURL().toString());
+            }
+        });
+
+        scrollInfo = new JScrollPane(info, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+        multiSplitPane.add(scrollInfo, "bottom");
+
+        return multiSplitPane;
+    }
+
+    /**
+     * Add the possible signs to the panel for selection
+     */
+    private void fillSigns() {
+        pnlPossibleSigns.removeAll();
+        pnlPossibleSupplements.removeAll();
+        for (Sign s : signs) {
+            JLabel lbl = new JLabel(s.getIcon());
+            String tt = "<html>"+s.name;
+            String ref = s.getDefaultRef();
+            if (ref != null) {
+                tt += "  <i><small>("+ref+")</small></i>";
+            }
+            tt += "</html>";
+            lbl.setToolTipText(tt);
+            s.label = lbl;
+            lbl.addMouseListener(new SignClickListener(s));
+            if (s.isSupplementing) {
+                pnlPossibleSupplements.add(lbl);
+            } else {
+                pnlPossibleSigns.add(lbl);
+            }
+        }
+    }
+
+    /**
+     * Represents a certain selection of signs by the user.
+     *
+     * Manages the update of gui elements when the selection changes.
+     */
+    public class SignSelection {
+        private final LinkedList<SignCombination> combos = new LinkedList<>();
+
+        public void remove(SignCombination sc) {
+            int i = findIndex(sc);
+            combos.remove(i);
+            previewModel.update();
+            updatePanel(pnlSignSelection);
+        }
+
+        public void remove(SignWrapper sw) {
+            Pair<Integer, Integer> tmp = findIndex(sw);
+            int i = tmp.a;
+            int j = tmp.b;
+            if (j == 0) {
+                combos.remove(i);
+                previewModel.update();
+                updateSelectableSignsEnabledState();
+                updatePanel(pnlSignSelection);
+            } else {
+                combos.get(i).remove(j);
+                previewModel.update();
+                updateSelectableSignsEnabledState();
+                updatePanel(pnlSignSelection);
+            }
+        }
+
+        public void add(Sign sAdd) {
+            if (!sAdd.isSupplementing || combos.isEmpty()) {
+                SignCombination combo = new SignCombination();
+                combos.add(combo);
+                combo.add(sAdd);
+
+                previewModel.update();
+                updateSelectableSignsEnabledState();
+                updatePanel(pnlSignSelection);
+            } else {
+                SignCombination last = combos.getLast();
+                last.add(sAdd);
+
+                previewModel.update();
+                updatePanel(pnlSignSelection);
+            }
+        }
+
+        private int findIndex(SignCombination scFind) {
+            int i = 0;
+            for (SignCombination sc : combos) {
+                if (sc == scFind) {
+                    return i;
+                }
+                i++;
+            }
+            throw new AssertionError("Could not find sign combination.");
+        }
+
+        private Pair<Integer, Integer> findIndex(SignWrapper swFind) {
+            int selIdx = 0;
+            for (SignCombination sc : combos) {
+                int combIdx = 0;
+                for (SignWrapper sw : sc.signs) {
+                    if (swFind == sw) {
+                        return new Pair<>(selIdx, combIdx);
+                    }
+                    combIdx++;
+                }
+                selIdx++;
+            }
+            throw new AssertionError("Could not find sign");
+        }
+
+        public void updatePanel(JPanel panel) {
+            panel.removeAll();
+            panel.setLayout(new GridBagLayout());
+            GridBagConstraints gbc = new GridBagConstraints();
+            gbc.anchor = GridBagConstraints.NORTHWEST;
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.weightx = 0;
+            gbc.weighty = 1.0;
+            gbc.insets = new Insets(10, 10, 0, 10);
+
+            for (SignCombination sc : combos) {
+                JPanel pnlCombo = new JPanel(new GridBagLayout());
+                sc.updatePanel(pnlCombo);
+                panel.add(pnlCombo, gbc);
+                gbc.gridx++;
+                gbc.insets = new Insets(10, 0, 0, 10);
+            }
+            gbc.weightx = 1.0;
+            panel.add(new JLabel(""), gbc); /* filler */
+            panel.revalidate();
+            panel.repaint();
+        }
+    }
+
+    /**
+     * Describes a list of selected signs where the
+     * first sign is a normal or supplementary sign and the
+     * rest are all supplementary signs.
+     *
+     * It can fill a Panel with the necessary gui elements.
+     */
+    public class SignCombination {
+        public LinkedList<SignWrapper> signs;
+
+        SignCombination() {
+            signs = new LinkedList<>();
+        }
+
+        public void updatePanel(JPanel panel) {
+            panel.removeAll();
+            panel.setLayout(new GridBagLayout());
+
+            Border etched = BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
+            Border empty = BorderFactory.createEmptyBorder(3, 3, 3, 3);
+            panel.setBorder(BorderFactory.createCompoundBorder(etched, empty));
+
+            int i = 0;
+            for (SignWrapper sw : signs) {
+                GridBagConstraints gbc = new GridBagConstraints();
+                gbc.gridx = 0;
+                gbc.gridy = i;
+                gbc.anchor = GridBagConstraints.NORTH;
+                panel.add(sw.getSignIcon(), gbc);
+
+                gbc.gridx = 1;
+                gbc.anchor = GridBagConstraints.WEST;
+                panel.add(sw.getParamsPanel(), gbc);
+
+                i++;
+            }
+        }
+
+        public void remove(int index) {
+            signs.remove(index);
+        }
+
+        public void add(final Sign sign) {
+            if (!signs.isEmpty() && !sign.isSupplementing)
+                throw new IllegalArgumentException("any sign but the first must be a supplement sign"); //FIXME
+            final SignWrapper signWrp = new SignWrapper(sign);
+            signs.add(signWrp);
+        }
+    }
+
+    /**
+     * Describes a single selected sign, including the parameters entered by
+     * the user.
+     *
+     * It provides the necessary gui elements.
+     */
+    public class SignWrapper {
+        Sign sign;
+        JLabel signIcon;
+        String signRef;
+        JPanel paramsPanel;
+        Map<String, String> paramValues = new HashMap<>();
+
+        SignWrapper(Sign sign) {
+            this.sign = sign;
+            for (final SignParameter p : this.sign.params) {
+                paramValues.put(p.ident, p.getDefault());
+            }
+        }
+
+        @Override
+        public String toString() {
+            return sign.toString();
+        }
+
+        public JLabel getSignIcon() {
+            if (signIcon != null)
+                return signIcon;
+            signIcon = new JLabel(sign.getIcon());
+            signIcon.addMouseListener(new MouseAdapter() {
+                @Override
+                public void mouseClicked(MouseEvent e) {
+                    sel.remove(SignWrapper.this);
+                }
+            });
+            return signIcon;
+        }
+
+        public JPanel getParamsPanel() {
+            if (paramsPanel != null)
+                return paramsPanel;
+            paramsPanel = new JPanel(new GridBagLayout());
+            int i = 0;
+            for (final SignParameter p : this.sign.params) {
+                JPanel pnlInput = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
+                switch (p.input) {
+                    case COMBO: // TODO
+//                        create_gui_elements();
+//                        break;
+                    case TEXTFIELD:
+                        final JTextField tf;
+                        if (p.fieldWidth != null) {
+                            tf = new JTextField(p.getDefault(), p.fieldWidth);
+                        } else {
+                            tf = new JTextField(p.getDefault());
+                        }
+                        class TFDocumentListener implements DocumentListener {
+                            @Override
+                            public void insertUpdate(DocumentEvent e) {
+                                update();
+                            }
+
+                            @Override
+                            public void removeUpdate(DocumentEvent e) {
+                                update();
+                            }
+
+                            @Override
+                            public void changedUpdate(DocumentEvent e) {
+                                update();
+                            }
+
+                            public void update() {
+                                paramValues.put(p.ident, tf.getText());
+                                previewModel.update();
+                            }
+                        }
+
+                        TFDocumentListener listener = new TFDocumentListener();
+                        tf.getDocument().addDocumentListener(listener);
+                        JLabel lblPrefix = new JLabel(p.getPrefix());
+                        JLabel lblSuffix = new JLabel(p.getSuffix());
+                        pnlInput.add(lblPrefix);
+                        pnlInput.add(tf);
+                        pnlInput.add(lblSuffix);
+                        break;
+                    default:
+                        throw new RuntimeException();
+                }
+                GridBagConstraints gbc = new GridBagConstraints();
+                gbc.gridy = i;
+                gbc.anchor = GridBagConstraints.WEST;
+                paramsPanel.add(pnlInput, gbc);
+                i++;
+            }
+            if (i > 0) {
+                paramsPanel.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 0));
+            }
+            return paramsPanel;
+        }
+    }
+
+    /**
+     * Give the user a hint, which supplementary signs fit the current selection.
+     * Disabled signs can still be clicked.
+     */
+    private void updateSelectableSignsEnabledState() {
+        if (sel.combos.isEmpty()) {
+            for (Sign s : signs) {
+                if (s.isSupplementing) {
+                    // TODO: only those that have no free parameter
+                    s.label.setEnabled(true);
+                }
+            }
+        } else {
+            Sign main = sel.combos.getLast().signs.getFirst().sign;
+            for (Sign s : signs) {
+                if (s.isSupplementing) {
+                    s.label.setEnabled(main.supplements.contains(s));
+                }
+            }
+        }
+    }
+
+    public JComponent buildPreviewPanel() {
+        JPanel previewPanel = new JPanel(new GridBagLayout());
+
+        String[] columnNames = {tr("Key"), tr("Value")};
+        String[][] data = {{}};
+        previewTable = new JTable(data, columnNames) {
+            @Override
+            public String getToolTipText(MouseEvent e) {
+                int rowIndex = rowAtPoint(e.getPoint());
+                int colIndex = columnAtPoint(e.getPoint());
+                if (rowIndex == -1 || colIndex == -1)
+                    return null;
+                //int realColumnIndex = convertColumnIndexToModel(colIndex);
+                return (String) getValueAt(rowIndex, colIndex);
+            }
+        };
+        previewTable.setFillsViewportHeight(true);
+        previewTable.setRowSelectionAllowed(false);
+        previewTable.setColumnSelectionAllowed(false);
+
+        previewModel = new PreviewTableModel();
+        previewTable.setModel(previewModel);
+
+        JScrollPane scroll = new JScrollPane(previewTable);
+        Dimension dim = new Dimension(336, 10);
+        scroll.setPreferredSize(dim);
+        scroll.setMinimumSize(dim); /* minimum size is relevant for multisplit layout */
+
+        addTrafficSignTag = new JCheckBox(tr("{0} tag", "traffic_sign"));
+        addTrafficSignTag.setSelected(Config.getPref().getBoolean("plugin.roadsigns.addTrafficSignTag"));
+        addTrafficSignTag.addActionListener(e -> previewModel.update());
+
+        previewPanel.add(scroll, GBC.eol().fill());
+        previewPanel.add(addTrafficSignTag, GBC.eol());
+        return previewPanel;
+    }
+
+    public class PreviewTableModel extends AbstractTableModel {
+        private List<String> keys = new ArrayList<>();
+        private List<String> values = new ArrayList<>();
+
+        int rows = 3;
+        String[] header = {tr("Key"), tr("Value")};
+
+        @Override
+        public int getRowCount() {
+            return keys.size();
+        }
+
+        @Override
+        public int getColumnCount() {
+            return 2;
+        }
+
+        @Override
+        public Object getValueAt(int rowIndex, int columnIndex) {
+            if (columnIndex == 0) {
+                return keys.get(rowIndex);
+            } else if (columnIndex == 1) {
+                return values.get(rowIndex);
+            } else
+                throw new IllegalArgumentException();
+        }
+
+        @Override
+        public String getColumnName(int col) {
+            return header[col];
+        }
+
+        /**
+         * Analyse the selection and derive corresponding tags.
+         */
+        public void update() {
+            final TreeMap<String, String> map = new TreeMap<>();
+            String traffic_sign = "";
+
+            for (SignCombination sc : sel.combos) {
+                final Map<String, String> env = new HashMap<>();
+                String combo_traffic_sign = "";
+
+                /**
+                 * Keep track of a named tag. It may be changed by
+                 * adding values or conditions.
+                 */
+                class TagEvaluater {
+                    String key;
+                    String default_value;
+                    List<String> values = new ArrayList<>();
+                    List<String> conditions = new ArrayList<>();
+                    TagEvaluater(Tag t) {
+                        key = t.key.evaluate(env);
+                        default_value = t.value.evaluate(env);
+                    }
+
+                    public void append_value(String v) {
+                        values.add(v);
+                    }
+
+                    public void condition(String c) {
+                        conditions.add(c);
+                    }
+
+                    public Map<String, String> evaluate() {
+                        String value = "";
+                        if (values.isEmpty()) {
+                            value = default_value;
+                        } else {
+                            String sep = "";
+                            for (String v : values) {
+                                value += sep+v;
+                                sep = ";";
+                            }
+                        }
+
+                        if (conditions.isEmpty())
+                            return Collections.singletonMap(key, value);
+                        else {
+                            Map<String, String> result = new HashMap<>();
+                            for (String c : conditions) {
+                                result.put(key+":"+c, value);
+                            }
+                            return result;
+                        }
+                    }
+                }
+
+                Map<String, TagEvaluater> tags = new LinkedHashMap<>();
+                for (SignWrapper sw : sc.signs) {
+                    for (Map.Entry<String, String> entry : sw.paramValues.entrySet()) {
+                        env.put(entry.getKey(), entry.getValue());
+                    }
+                    if (sw.sign.ref != null) {
+                        sw.signRef = sw.sign.ref.evaluate(env);
+                        if (combo_traffic_sign.length() != 0) {
+                            combo_traffic_sign += ",";
+                        }
+                        if (sw.sign.traffic_sign_tag != null) {
+                            combo_traffic_sign += sw.sign.traffic_sign_tag.evaluate(env);
+                        } else {
+                            combo_traffic_sign += sw.signRef;
+                        }
+                    }
+                    for (Tag t : sw.sign.tags) {
+                        if (t.tag_ref != null) {
+                            if (t.ident != null) {
+                                env.put(t.ident+"_key", t.key.evaluate(env));
+                                env.put(t.ident+"_value", t.value.evaluate(env));
+                            }
+                            if (t.append_value != null) {
+                                TagEvaluater te = tags.get(t.tag_ref);
+                                if (te == null) {
+                                    Logging.warn(String.format("referenced tag with ident '%s' not found for appending tag %s.",
+                                            t.tag_ref, t.toString()));
+                                } else {
+                                    te.append_value(t.append_value.evaluate(env));
+                                }
+                            } else if (t.condition != null) {
+                                TagEvaluater te = tags.get(t.tag_ref);
+                                if (te == null) {
+                                    Logging.warn(String.format("referenced tag with ident '%s' not found for condition tag %s.",
+                                            t.tag_ref, t.toString()));
+                                } else {
+                                    te.condition(t.condition.evaluate(env));
+                                }
+                            } else {
+                                Logging.warn(String.format("found tag_ref but neither append_value nor condition for tag %s.",
+                                        t.toString()));
+                            }
+                        } else if (t.ident != null) {
+                            env.put(t.ident+"_key", t.key.evaluate(env));
+                            env.put(t.ident+"_value", t.value.evaluate(env));
+
+                            if (tags.get(t.ident) != null) {
+                                Logging.warn(String.format("tag identifier %s for %s already in use. ", t.ident, t.toString()));
+                            }
+                            tags.put(t.ident, new TagEvaluater(t));
+                        } else {
+                            map.put(t.key.evaluate(env), t.value.evaluate(env));
+                        }
+                    }
+                }
+                for (TagEvaluater te : tags.values()) {
+                    Map<String, String> result = te.evaluate();
+                    map.putAll(result);
+                }
+
+                if (combo_traffic_sign.length() != 0) {
+                    if (traffic_sign.length() != 0) {
+                        traffic_sign += ";";
+                    }
+                    traffic_sign += combo_traffic_sign;
+                }
+            }
+            if (addTrafficSignTag.isSelected()) {
+                map.put("traffic_sign", traffic_sign);
+            }
+
+            keys.clear();
+            values.clear();
+            for (Map.Entry<String, String> entry : map.entrySet()) {
+                if (!entry.getKey().isEmpty() && !entry.getValue().isEmpty()) {
+                    keys.add(entry.getKey());
+                    values.add(entry.getValue());
+                }
+            }
+            fireTableDataChanged();
+        }
+    }
+
+    /**
+     * Mouse events for the possible signs.
+     * Click selects it.
+     * MouseOver shows info.
+     */
+    private class SignClickListener extends MouseAdapter {
+        private Sign sign;
+        SignClickListener(Sign sign) {
+            this.sign = sign;
+        }
+
+        @Override
+        public void mouseClicked(MouseEvent e) {
+            info.setText(longText());
+            /* scroll up again */
+            SwingUtilities.invokeLater(() -> scrollInfo.getVerticalScrollBar().setValue(0));
+            sel.add(sign);
+        }
+
+        private String longText() {
+            StringBuilder txt = new StringBuilder();
+            txt.append(sign.long_name == null ? sign.name : sign.long_name);
+            String ref = sign.getDefaultRef();
+            if (ref != null) {
+                txt.append("  <i><small>("+ref+")</small></i>");
+            }
+
+            if (sign.help != null) {
+                txt.append("<p>");
+                txt.append(sign.help);
+                txt.append("</p>");
+            }
+
+            if (sign.wiki != null || sign.loc_wiki != null) {
+                String wikiPrefix = Config.getPref().get("plugin.roadsigns.wikiprefix", "https://wiki.openstreetmap.org/wiki/");
+                txt.append("<p>");
+                if (sign.loc_wiki != null) {
+                    String link = wikiPrefix+sign.loc_wiki;
+                    txt.append("<a href=\""+link+"\">"+link+"</a>");
+                    txt.append("<br>");
+                }
+                if (sign.wiki != null && !sign.wiki.equals(sign.loc_wiki)) {
+                    String link = wikiPrefix+sign.wiki;
+                    txt.append("<a href=\""+link+"\">"+link+"</a>");
+                }
+                txt.append("</p>");
+            }
+            return txt.toString();
+        }
+    }
+
+    /**
+     * Panel with FlowLayout that can be put inside a JScrollPane.
+     * (Normally it would not flow, but put all its children
+     * in a single row. This implementation respects the width of the parent
+     * component.)
+     */
+    public static class FixedWidthPanel extends JPanel implements Scrollable {
+        FixedWidthPanel() {
+            super(new FlowLayout(FlowLayout.LEFT));
+        }
+
+        @Override
+        public void setBounds(int x, int y, int width, int height) {
+            super.setBounds(x, y, getParent().getWidth(), height);
+        }
+
+        @Override
+        public Dimension getPreferredSize() {
+            return new Dimension(getWidth(), getPreferredHeight());
+        }
+
+        @Override
+        public Dimension getPreferredScrollableViewportSize() {
+            return super.getPreferredSize();
+        }
+
+        @Override
+        public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
+            final int FRAC = 20;
+            int inc = (orientation == SwingConstants.VERTICAL ? getParent().getHeight() : getParent().getWidth()) / FRAC;
+            return Math.max(inc, 1);
+        }
+
+        @Override
+        public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
+            return orientation == SwingConstants.VERTICAL ? getParent().getHeight() : getParent().getWidth();
+        }
+
+        @Override
+        public boolean getScrollableTracksViewportWidth() {
+            return true;
+        }
+
+        @Override
+        public boolean getScrollableTracksViewportHeight() {
+            return false;
+        }
+
+        private int getPreferredHeight() {
+            int prefH = 0;
+            int num = getComponentCount();
+            for (int i = 0; i < num; ++i) {
+                Rectangle rect = getComponent(i).getBounds();
+                int h = rect.y + rect.height;
+                if (h > prefH) {
+                    prefH = h;
+                }
+            }
+            prefH += ((FlowLayout) getLayout()).getVgap();
+            return prefH;
+        }
+    }
+
+    public static class SettingsPanel extends JPanel {
+
+        private List<PresetMetaData> presetsData;
+        private JComboBox<PresetMetaData> selectionBox;
+        JRadioButton rbAll, rbUseful;
+
+        SettingsPanel(boolean standalone, final Action update) {
+            super(new GridBagLayout());
+            presetsData = RoadSignsPlugin.getAvailablePresetsMetaData();
+
+            selectionBox = new JComboBox<>(presetsData.toArray(new PresetMetaData[0]));
+            String code = Config.getPref().get("plugin.roadsigns.preset.selection", null);
+            if (code != null) {
+                for (PresetMetaData data : presetsData) {
+                    if (code.equals(data.code)) {
+                        selectionBox.setSelectedItem(data);
+                    }
+                }
+            }
+            this.add(new JLabel(tr("Country preset:")), GBC.std().insets(5, 5, 5, 5));
+            this.add(selectionBox, GBC.eol().insets(0, 5, 5, 5));
+            if (!standalone) {
+                //String snd = "Hide signs that do not have an OSM tag assigned";
+
+                rbAll = new JRadioButton(tr("Show all signs"));
+                rbUseful = new JRadioButton(tr("Show a selection of the most useful signs"));
+
+                ButtonGroup grp = new ButtonGroup();
+                grp.add(rbAll);
+                grp.add(rbUseful);
+
+                String filterPref = Config.getPref().get("plugin.roadsigns.preset.filter");
+                if (filterPref.equals("useful")) {
+                    rbUseful.setSelected(true);
+                } else {
+                    rbAll.setSelected(true);
+                }
+
+                JPanel pnFilter = new JPanel(new GridBagLayout());
+                pnFilter.setBorder(BorderFactory.createTitledBorder(tr("Filter")));
+                pnFilter.add(rbAll, GBC.eop());
+                pnFilter.add(rbUseful, GBC.eop());
+
+                this.add(pnFilter, GBC.eol().insets(5, 0, 5, 5));
+
+                JButton apply = new JButton(new AbstractAction(tr("Apply")) {
+                    @Override
+                    public void actionPerformed(ActionEvent e) {
+                        try {
+                            apply();
+                        } catch (IOException ex) {
+                            return;
+                        }
+                        update.actionPerformed(null);
+                    }
+                });
+                this.add(apply, GBC.eol().insets(5, 0, 5, 5));
+            }
+            this.add(Box.createVerticalGlue(), GBC.eol().fill());
+        }
+
+        public void apply() throws IOException {
+            String filter = null;
+            if (rbAll != null) {
+                if (rbAll.isSelected()) {
+                    filter = "all";
+                } else if (rbUseful.isSelected()) {
+                    filter = "useful";
+                }
+            }
+            if (filter != null) {
+                Config.getPref().put("plugin.roadsigns.preset.filter", filter);
+            }
+            RoadSignsPlugin.setSelectedPreset(presetsData.get(selectionBox.getSelectedIndex()));
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsPlugin.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsPlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsPlugin.java	(revision 36424)
@@ -0,0 +1,299 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.roadsigns;
+
+import static org.openstreetmap.josm.tools.I18n.marktr;
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JOptionPane;
+
+import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.StructUtils;
+import org.openstreetmap.josm.data.StructUtils.StructEntry;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.dialogs.properties.PropertiesDialog;
+import org.openstreetmap.josm.io.CachedFile;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginInformation;
+import org.openstreetmap.josm.plugins.roadsigns.RoadSignInputDialog.SettingsPanel;
+import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Shortcut;
+import org.xml.sax.SAXException;
+
+/**
+ * The entry point for the {@link RoadSignsPlugin}
+ */
+public class RoadSignsPlugin extends Plugin {
+    private static final String SELECTION_PREFERENCE = "plugin.roadsigns.preset.selection";
+    private static final String SOURCES_PREFERENCE = "plugin.roadsigns.sources";
+    private static final String LAST_SOURCES_PREFERENCE = "plugin.roadsigns.sources.last";
+    private static final String CUSTOM = marktr("custom");
+    static PresetMetaData selectedPreset;
+    static List<Sign> signs;
+    static List<String> iconDirs;
+
+    private static RoadSignsPlugin plugin;
+    
+    private static final PresetMetaData PRESET_AT = new PresetMetaData(
+            "AT", tr("Austria"), "resource://data/roadsignpresetAT.xml", "resource://images/AT/");
+    private static final PresetMetaData PRESET_BE = new PresetMetaData(
+            "BE", tr("Belgium"), "resource://data/roadsignpresetBE.xml", "resource://images/BE/");
+    private static final PresetMetaData PRESET_CZ = new PresetMetaData(
+            "CZ", tr("Czech Republic"), "resource://data/roadsignpresetCZ.xml", "resource://images/CZ/");
+    private static final PresetMetaData PRESET_ES = new PresetMetaData(
+            "ES", tr("Spain"), "resource://data/roadsignpresetES.xml", "resource://images/ES/");
+    private static final PresetMetaData PRESET_DE = new PresetMetaData(
+            "DE", tr("Germany"), "resource://data/roadsignpresetDE.xml", "resource://images/DE/");
+    private static final PresetMetaData PRESET_PL = new PresetMetaData(
+            "PL", tr("Poland"), "resource://data/roadsignpresetPL.xml", "resource://images/PL/");
+    private static final PresetMetaData PRESET_SK = new PresetMetaData(
+            "SK", tr("Slovakia"), "resource://data/roadsignpresetSK.xml", "resource://images/SK/");
+    private static final Collection<PresetMetaData> DEFAULT_PRESETS = Arrays.asList(
+            PRESET_AT, PRESET_BE, PRESET_CZ, PRESET_ES, PRESET_DE, PRESET_PL, PRESET_SK);
+
+    private static void setPluginInstance(RoadSignsPlugin plugin) {
+        RoadSignsPlugin.plugin = plugin;
+    }
+
+    /**
+     * Create a new plugin instance
+     * @param info The info to use when creating this instance
+     */
+    public RoadSignsPlugin(PluginInformation info) {
+        super(info);
+        setPluginInstance(this);
+        registerAction();
+    }
+
+    /**
+     * Get the plugin directory
+     * @return The plugin directory
+     */
+    static File pluginDir() {
+        File dir = plugin.getPluginDirs().getUserDataDirectory(false);
+        if (!dir.exists() && !dir.mkdirs()) {
+            throw new UncheckedIOException(new IOException("Could not create directory: " + dir.getAbsolutePath()));
+        }
+        return dir;
+    }
+
+    private static void registerAction() {
+        JButton btn = new JButton(new RoadSignAction());
+        btn.setText(null);
+        btn.setBorder(BorderFactory.createEmptyBorder());
+        btn.setPreferredSize(new Dimension(18, 18));
+        PropertiesDialog.pluginHook.add(btn);
+        PropertiesDialog.pluginHook.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+        PropertiesDialog.pluginHook.revalidate();
+    }
+
+    private static class RoadSignAction extends JosmAction {
+        RoadSignAction() {
+            super(tr("Roadsign tagging"), "pref/roadsigns-small", tr("Add tags by clicking on road signs"),
+                    Shortcut.registerShortcut("plugin:roadsigns:dialog", tr("Roadsigns plugin: open dialog"),
+                            KeyEvent.VK_Q, Shortcut.ALT_SHIFT), false);
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            String code = Config.getPref().get(SELECTION_PREFERENCE, null);
+            if (code == null) {
+                ExtendedDialog ed = new ExtendedDialog(MainApplication.getMainFrame(), tr("Settings"), tr("Ok"), tr("Cancel"));
+                ed.setButtonIcons("ok", "cancel");
+                SettingsPanel settings = new SettingsPanel(true, null);
+                ed.setContent(settings);
+                ed.showDialog();
+                if (ed.getValue() != 1) return;
+                try {
+                    settings.apply();
+                } catch (IOException ex) {
+                    Logging.trace(ex);
+                    return;
+                }
+            }
+            try {
+                loadSignPreset();
+            } catch (IOException ex) {
+                Logging.trace(ex);
+                return;
+            }
+            RoadSignInputDialog input = new RoadSignInputDialog();
+            input.showDialog();
+        }
+
+    }
+
+    /**
+     * A struct class for storing metadata
+     */
+    public static class PresetMetaData {
+        /** The country code */
+        @StructEntry public String code;
+        /** The display name */
+        @StructEntry public String display_name;
+        /** The path to the preset */
+        @StructEntry public String preset_path;
+        /** The path to the icons */
+        @StructEntry public String icon_path;
+
+        public PresetMetaData() {
+        }
+
+        /**
+         * Create a new record with the specified data
+         * @param countryCode The country code to use
+         * @param displayName The display name
+         * @param presetPath The path to the preset
+         * @param iconsPath The path to the icons
+         */
+        public PresetMetaData(String countryCode, String displayName, String presetPath, String iconsPath) {
+            this.code = countryCode;
+            this.display_name = displayName;
+            this.preset_path = presetPath;
+            this.icon_path = iconsPath;
+        }
+
+        @Override
+        public String toString() {
+            return display_name;
+        }
+    }
+
+    public static void setSelectedPreset(PresetMetaData preset) throws IOException {
+        Config.getPref().put(SELECTION_PREFERENCE, preset.code);
+        loadSignPreset();
+    }
+
+    public static List<PresetMetaData> getAvailablePresetsMetaData() {
+        List<PresetMetaData> presetsData = Objects.requireNonNull(StructUtils.getListOfStructs(
+                Config.getPref(), "plugin.roadsigns.presets", DEFAULT_PRESETS, PresetMetaData.class));
+
+        String customFile = Config.getPref().get(SOURCES_PREFERENCE, null);
+        if (customFile == null) {
+            // for legacy reasons, try both string and collection preference type
+            List<String> customFiles = Config.getPref().getList(SOURCES_PREFERENCE, null);
+            if (customFiles != null && !customFiles.isEmpty()) {
+                customFile = customFiles.iterator().next();
+            }
+        }
+
+        if (customFile != null) {
+            presetsData.add(readCustomFile(customFile));
+        } else {
+            Config.getPref().put(LAST_SOURCES_PREFERENCE, null);
+        }
+
+        return presetsData;
+    }
+
+    /**
+     * Read the custom preset file
+     * @param customFile The file to read
+     * @return The metadata for that custom file
+     */
+    private static PresetMetaData readCustomFile(String customFile) {
+        // first check, if custom file preference has changed. If yes,
+        // change the current preset selection to custom directly
+        String lastCustomFile = Config.getPref().get(LAST_SOURCES_PREFERENCE, null);
+        if (!Objects.equals(customFile, lastCustomFile)) {
+            Config.getPref().put(LAST_SOURCES_PREFERENCE, customFile);
+            Config.getPref().put(SELECTION_PREFERENCE, CUSTOM);
+        }
+
+        String customIconDirsStr = Config.getPref().get("plugin.roadsigns.icon.sources", null);
+        List<String> customIconDirs = null;
+        if (customIconDirsStr != null) {
+            customIconDirs = new ArrayList<>(Arrays.asList(customIconDirsStr.split(",")));
+        } else {
+            customIconDirs = Config.getPref().getList("plugin.roadsigns.icon.sources", null);
+        }
+        if (customIconDirs != null) {
+            customIconDirs = new ArrayList<>(customIconDirs);
+        } else {
+            customIconDirs = new ArrayList<>();
+        }
+        // add icon directory relative to preset file
+        if (!customFile.startsWith("resource:")) {
+            String parentDir;
+            try {
+                parentDir = new URI(customFile).getPath();
+            } catch (URISyntaxException ex) {
+                Logging.trace(ex);
+                File f = new File(customFile);
+                parentDir = f.getParent();
+            }
+            if (parentDir != null && !parentDir.isEmpty()) {
+                customIconDirs.add(parentDir);
+            }
+        }
+        if (Config.getPref().getBoolean("plugin.roadsigns.use_default_icon_source", true)) {
+            customIconDirs.add("resource://images/");
+        }
+        return new PresetMetaData(CUSTOM, tr(CUSTOM), customFile,
+                String.join(",", customIconDirs));
+    }
+
+    protected static void loadSignPreset() throws IOException {
+        List<PresetMetaData> presetsData = getAvailablePresetsMetaData();
+        String code = Config.getPref().get(SELECTION_PREFERENCE, null);
+
+        for (PresetMetaData data : presetsData) {
+            if (data.code.equals(code)) {
+                selectedPreset = data;
+                break;
+            }
+        }
+        if (selectedPreset == null) {
+            if (!presetsData.isEmpty()) {
+                selectedPreset = presetsData.get(0);
+            } else {
+                selectedPreset = PRESET_DE;
+            }
+        }
+        iconDirs = Arrays.asList(selectedPreset.icon_path.split(","));
+        String source = selectedPreset.preset_path;
+
+        try (CachedFile cachedFile = new CachedFile(source);
+            InputStream in = cachedFile.getInputStream()) {
+            RoadSignsReader reader = new RoadSignsReader(in);
+            signs = reader.parse();
+        } catch (IOException ex) {
+            Logging.error(ex);
+            JOptionPane.showMessageDialog(
+                    MainApplication.getMainFrame(),
+                    tr("Could not read tagging preset source: ''{0}''", source),
+                    tr("Error"),
+                    JOptionPane.ERROR_MESSAGE
+            );
+            throw ex;
+        } catch (SAXException ex) {
+            Logging.error(ex);
+            JOptionPane.showMessageDialog(
+                    MainApplication.getMainFrame(),
+                    tr("Error parsing tagging preset from ''{0}'':\n", source)+ex.getMessage(),
+                    tr("Error"),
+                    JOptionPane.ERROR_MESSAGE
+            );
+            throw new IOException(ex);
+        }
+    }
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsReader.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsReader.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsReader.java	(revision 36424)
@@ -0,0 +1,335 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.roadsigns;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.openstreetmap.josm.plugins.roadsigns.Sign.SignParameter;
+import org.openstreetmap.josm.plugins.roadsigns.Sign.Tag;
+import org.openstreetmap.josm.plugins.roadsigns.javacc.ParseException;
+import org.openstreetmap.josm.plugins.roadsigns.javacc.TokenMgrError;
+import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.XmlParsingException;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Parses a road sign preset file.
+ *
+ */
+public class RoadSignsReader {
+    public static final String lang = LanguageInfo.getLanguageCodeXML();
+
+    private InputSource inputSource;
+    private final boolean debug = false;
+    /* counts the nesting level when we step into unknown elements */
+    private int unknownLevel;
+
+    public RoadSignsReader(InputStream source) throws IOException {
+        this.inputSource = new InputSource(new InputStreamReader(source, "UTF-8"));
+    }
+
+    private class SignParser extends DefaultHandler {
+        public List<Sign> allSigns;
+        public Map<Sign, List<String>> supplementIds;
+
+        String characters = "";
+        //List<Sign> folders = new ArrayList<Sign>();
+        Sign curSign;
+        Tag curTag;
+
+        private Locator locator;
+
+        @Override
+        public void setDocumentLocator(Locator locator) {
+            this.locator = locator;
+        }
+
+        @Override public void startElement(String ns, String lname, String qname, Attributes atts) throws SAXException {
+            if (debug) System.err.println("<"+qname+">: ");
+
+            if (unknownLevel > 0) {
+                unknownLevel++;
+            } else if (qname.equals("roadsignpreset")) {
+
+            } else if (qname.equals("sign")) {
+                if (curSign != null)
+                    throwException("found sign inside sign");
+                curSign = new Sign();
+                supplementIds.put(curSign, new ArrayList<String>());
+                try {
+                    curSign.ref = ParametrizedString.create(atts.getValue("ref"));
+                    curSign.traffic_sign_tag = ParametrizedString.create(atts.getValue("traffic_sign_tag"));
+                } catch (ParseException ex) {
+                    throw new SAXException(ex);
+                } catch (TokenMgrError ex) {
+                    throwException(ex.toString());
+                }
+                curSign.id = atts.getValue("id");
+
+                if (curSign.id == null) {
+                    if (curSign.ref == null)
+                        throwException("Both id and ref attribute missing.");
+                    curSign.id = curSign.ref.toString();
+                }
+
+                curSign.name = getLocalized(atts, "name");
+                if (curSign.name == null)
+                    throwException("missing attribute: name");
+
+                curSign.long_name = getLocalized(atts, "long_name");
+
+                String iconURL = atts.getValue("icon");
+                if (iconURL == null) {
+                    iconURL = curSign.id;
+                    iconURL = iconURL.replace(':', '_');
+                    iconURL = iconURL.replace('.', '_');
+                }
+                curSign.iconURL = iconURL;
+
+                if ("yes".equals(atts.getValue("supplementary"))) {
+                    curSign.isSupplementing = true;
+                }
+
+                curSign.wiki = atts.getValue("wiki");
+                curSign.loc_wiki = getLocalized(atts, "wiki");
+
+                curSign.help = getLocalized(atts, "help");
+
+                String useful = atts.getValue("useful");
+                if (useful != null) {
+                    curSign.useful = Boolean.parseBoolean(useful);
+                }
+
+            } else if (curSign != null && qname.equals("tag")) {
+                if (curSign == null) {
+                    throwException("found tag outside sign");
+                }
+                if (curTag != null) {
+                    throwException("found tag inside tag");
+                }
+                curTag = new Tag();
+                curTag.ident = atts.getValue("ident");
+                curTag.tag_ref = atts.getValue("tag_ref");
+                try {
+                    curTag.key = ParametrizedString.create(atts.getValue("key"));
+                    curTag.value = ParametrizedString.create(atts.getValue("value"));
+                    curTag.append_value = ParametrizedString.create(atts.getValue("append_value"));
+                    curTag.condition = ParametrizedString.create(atts.getValue("condition"));
+                } catch (ParseException ex) {
+                    throw new SAXException(ex);
+                } catch (TokenMgrError ex) {
+                    throw new SAXException(ex.toString());
+                }
+
+            } else if (curSign != null && qname.equals("supplementary")) {
+                supplementIds.get(curSign).add(getMandatoryAttribute(atts, "id"));
+
+            } else if (curSign != null && qname.equals("parameter")) {
+                String inputType = getMandatoryAttribute(atts, "input");
+                SignParameter p = new SignParameter(inputType);
+                p.ident = getMandatoryAttribute(atts, "ident");
+                p.deflt = getMandatoryAttribute(atts, "default");
+                p.prefix = atts.getValue("prefix");
+                p.suffix = atts.getValue("suffix");
+                String width = atts.getValue("field_width");
+                if (width != null) {
+                    p.fieldWidth = Integer.parseInt(width);
+                }
+                curSign.params.add(p);
+            } else {
+                warning("unknown element: "+qname);
+                unknownLevel++;
+            }
+
+            if (debug) {
+                for (int i = 0; i < atts.getLength(); ++i) {
+                    System.err.println("  "+atts.getQName(i)+": "+atts.getValue(i));
+                }
+            }
+        }
+
+        @Override public void endElement(String ns, String lname, String qname) throws SAXException {
+            if (debug) System.err.print("</"+qname+"> |");
+            if (unknownLevel > 0) {
+                unknownLevel--;
+            } else if (qname.equals("sign")) {
+                allSigns.add(curSign);
+                curSign = null;
+
+            } else if (qname.equals("tag")) {
+                curSign.tags.add(curTag);
+                curTag = null;
+            }
+
+            characters = characters.trim();
+            if (!characters.equals("")) {
+                if (debug) System.err.print(characters);
+                characters = "";
+            }
+            if (debug) System.err.println("|");
+        }
+
+        @Override public void characters(char[] ch, int start, int length) {
+            String s = new String(ch, start, length);
+            characters += s;
+        }
+
+        private String getLocalized(Attributes atts, String ident) {
+            String result = atts.getValue(lang+ident);
+            if (result == null) {
+                result = atts.getValue(ident);
+                if (result == null)
+                    return null;
+                result = tr(result);
+            }
+            return result;
+        }
+
+        private String getMandatoryAttribute(Attributes atts, String ident) throws XmlParsingException {
+            String result = atts.getValue(ident);
+            if (result == null) {
+                throwException("missing attribute: "+ident);
+            }
+            return result;
+        }
+
+        @Override
+        public void error(SAXParseException e) throws SAXException {
+            throwException(e);
+        }
+
+        @Override
+        public void fatalError(SAXParseException e) throws SAXException {
+            throwException(e);
+        }
+
+        protected void throwException(Exception e) throws ExtendedParsingException {
+            throw new ExtendedParsingException(e).rememberLocation(locator);
+        }
+
+        protected void throwException(String msg) throws XmlParsingException {
+            throw new XmlParsingException(msg).rememberLocation(locator);
+        }
+
+        private void warning(String s) {
+            try {
+                throwException(s);
+            } catch (XmlParsingException ex) {
+                System.err.println("Warning: "+ex.getMessage());
+            }
+        }
+
+        public void wireSupplements() throws XmlParsingException {
+            Map<String, Sign> map = new HashMap<>();
+            for (Sign sign : allSigns) {
+                if (map.get(sign.id) != null)
+                    throwException("Found 2 signs with same ref "+sign.ref);
+                map.put(sign.id, sign);
+            }
+            for (Sign sign : allSigns) {
+                for (String id : supplementIds.get(sign)) {
+                    Sign supp = map.get(id);
+                    if (supp == null)
+                        throwException("Missing supplement definition "+id+" for sign "+sign.id+".");
+                    sign.supplements.add(supp);
+                }
+            }
+        }
+    }
+
+    public static class ExtendedParsingException extends SAXException {
+        private int columnNumber;
+        private int lineNumber;
+
+        public ExtendedParsingException() {
+            super();
+        }
+
+        public ExtendedParsingException(Exception e) {
+            super(e);
+        }
+
+        public ExtendedParsingException(String message, Exception e) {
+            super(message, e);
+        }
+
+        public ExtendedParsingException(String message) {
+            super(message);
+        }
+
+        public ExtendedParsingException rememberLocation(Locator locator) {
+            if (locator == null) return this;
+            this.columnNumber = locator.getColumnNumber();
+            this.lineNumber = locator.getLineNumber();
+            return this;
+        }
+
+        @Override
+        public String getMessage() {
+            String msg = super.getMessage();
+            if (lineNumber == 0 && columnNumber == 0)
+                return msg;
+            System.err.println(".");
+            if (msg == null) {
+                msg = getClass().getName();
+            }
+            msg = msg + " " + tr("(at line {0}, column {1})", lineNumber, columnNumber);
+            return msg;
+        }
+
+        public int getColumnNumber() {
+            return columnNumber;
+        }
+
+        public int getLineNumber() {
+            return lineNumber;
+        }
+    }
+
+    /**
+     *
+     * @return True if file was properly parsed, false if there was error during parsing but some data were parsed anyway
+     */
+    public List<Sign> parse() throws SAXException, IOException {
+        SignParser parser = new SignParser();
+        parser.allSigns = new ArrayList<>();
+        parser.supplementIds = new HashMap<>();
+        try {
+            SAXParserFactory factory = SAXParserFactory.newInstance();
+            factory.setNamespaceAware(true);
+            factory.newSAXParser().parse(inputSource, parser);
+            parser.wireSupplements();
+            String filterPref = Config.getPref().get("plugin.roadsigns.preset.filter");
+            if (filterPref.equals("useful")) {
+                List<Sign> filtered = new ArrayList<>();
+                for (Sign s : parser.allSigns) {
+                    if (s.isUseful()) {
+                        filtered.add(s);
+                    }
+                }
+                return filtered;
+            } else {
+                return parser.allSigns;
+            }
+        } catch (ParserConfigurationException e) {
+            e.printStackTrace(); // broken SAXException chaining
+            throw new SAXException(e);
+        }
+    }
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/Sign.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/Sign.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/Sign.java	(revision 36424)
@@ -0,0 +1,132 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.roadsigns;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+
+import org.openstreetmap.josm.tools.ImageProvider;
+
+/**
+ * Information about one road sign.
+ *
+ */
+public class Sign {
+    public String id;
+    public ParametrizedString ref;
+    public ParametrizedString traffic_sign_tag;
+    public String iconURL;
+    public ImageIcon icon;
+    public ImageIcon disabledIcon;
+    public String name;
+    public String long_name;
+    public List<Tag> tags = new ArrayList<>();
+    public List<Sign> supplements = new ArrayList<>();
+    public List<SignParameter> params = new ArrayList<>();
+    public boolean isSupplementing;
+    public String loc_wiki;
+    public String wiki;
+    public String help;
+    public Boolean useful;
+
+    public JLabel label; // FIXME: don't put gui stuff here
+
+    public static class Tag {
+        public ParametrizedString key;
+        public ParametrizedString value;
+        public String ident;
+        public String tag_ref;
+        public ParametrizedString append_value;
+        public ParametrizedString condition;
+        @Override
+        public String toString() {
+            return "<TAG key="+key+" value="+value+" ident="+ident+" tag_ref="+tag_ref+
+                    " append_value="+append_value+" condition="+condition+">";
+        }
+    }
+
+    public static class SignParameter {
+        public enum Input { TEXTFIELD, COMBO }
+
+        public String ident;
+        public Input input;
+        String deflt;
+        String prefix;
+        String suffix;
+        Integer fieldWidth;
+
+        public SignParameter(String inputType) {
+            if (inputType.equals("textfield")) {
+                input = Input.TEXTFIELD;
+            } else if (inputType.equals("combo")) {
+                input = Input.COMBO;
+            } else
+                throw new IllegalArgumentException("unknown input type: "+inputType);
+        }
+
+        public String getDefault() {
+            return deflt == null ? "" : deflt;
+        }
+
+        public String getPrefix() {
+            return prefix == null ? "" : prefix;
+        }
+
+        public String getSuffix() {
+            return suffix == null ? "" : suffix;
+        }
+    }
+
+    public ImageIcon getIcon() {
+        if (icon == null) {
+            icon = new ImageProvider(iconURL).setDirs(RoadSignsPlugin.iconDirs).setId("plugin.sign."+id).setOptional(true).get();
+        }
+        return icon;
+    }
+
+    /**
+     * Creates a generic form of the traffic sign ref.
+     * It strips osm specific syntax so it can be
+     * used in documentation and help texts.
+     * @return null if the format is unknown
+     */
+    public String getDefaultRef() {
+        if (ref == null)
+            return null;
+        String r = ref.toString();
+        /* strip parameters */
+        r = r.replaceAll("\\[.*\\]", "");
+        if (r.startsWith("DE:")) {
+            r = r.replaceAll("DE:", "");
+            /* normal sign: starts with 3 digits, then a non-digit */
+            Pattern p1 = Pattern.compile("^\\d{3}(\\D|$)");
+            Matcher m1 = p1.matcher(r);
+            if (m1.find())
+                return tr("Sign {0}", r);
+            /* supplementary sign: starts with 4 digits, then a non-digit */
+            Pattern p2 = Pattern.compile("^\\d{4}(\\D|$)");
+            Matcher m2 = p2.matcher(r);
+            if (m2.find())
+                return tr("Additional sign {0}", r);
+            return null;
+        }
+        return null;
+    }
+
+    public boolean isUseful() {
+        if (useful != null) return useful;
+        return !tags.isEmpty();
+    }
+
+    @Override
+    public String toString() {
+        return id+" - "+name;
+    }
+
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamString.jj
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamString.jj	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamString.jj	(revision 36424)
@@ -0,0 +1,113 @@
+//License: GPL (v2 or later)
+
+/*
+
+ This is a source file for javacc. It generates a parser for strings 
+ with parameters (in perl style). It returns a list of
+ tokens of type String (Str) or Parameter (Prm). Sub-strings of the
+ form "$ident" or "${ident}" are identified as a parameter.
+ '$' or '\' signs have to be quoted.
+ 
+ There can be multiple consecutive string tokens in the output list.
+ The client most likely wants the merge these, but it is not done
+ here to keep the parser as simple as possible.
+ 
+ Examples:
+ "up to $x%"            --> "up to ", <x>, "%"
+ "$int_val2 \$ and \\ or"    --> <int_val2>, " ", "$", " and ", "\", " or"
+ "In ${num}th row"      --> "In ", <num>, "th row"
+ 
+*/
+
+options {
+  STATIC = false;
+}
+
+PARSER_BEGIN(ParamStringScanner)
+package org.openstreetmap.josm.plugins.roadsigns.javacc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.openstreetmap.josm.plugins.roadsigns.ParametrizedString.Prm;
+import org.openstreetmap.josm.plugins.roadsigns.ParametrizedString.Str;
+import org.openstreetmap.josm.plugins.roadsigns.ParametrizedString.StringOrParameter;
+
+public class ParamStringScanner {
+	public static List<StringOrParameter> parseIt(String s) throws ParseException {
+		ParamStringScanner parser = new ParamStringScanner(new java.io.StringReader(s));
+		return parser.parse();
+	}
+}
+PARSER_END(ParamStringScanner)
+
+TOKEN :
+{
+  < ID: "$" ( ( ["a"-"z","A"-"Z","_"] ( ["a"-"z","A"-"Z","_","0"-"9"] )* ) | ( "{" ["a"-"z","A"-"Z","_"] ( ["a"-"z","A"-"Z","_","0"-"9"] )* "}" ) ) >
+|
+  < ESC : "\\\\" | "\\$" >
+|
+  < REST: ( ~["\\","$"] )+ >
+}
+
+
+List<StringOrParameter> parse() : 
+{
+    String val;
+    Token t;
+    List<StringOrParameter> lst = new ArrayList<StringOrParameter>();
+}
+{
+    (
+    val=id()
+        {
+            lst.add(new Prm(val));
+        }
+| 
+    val=esc()
+        {
+            lst.add(new Str(val));
+        }
+| 
+    t=<REST>
+        {
+            lst.add(new Str(t.image));
+        }
+    )*
+        {
+            return lst;
+        }
+}
+
+String id() :
+{
+    Token t;
+    String ret;
+}
+{
+    t=<ID>
+    {
+        ret = t.image;
+        ret = ret.substring(1);
+        if (ret.startsWith("{")) {
+            ret = ret.substring(1, ret.length()-1);
+        }
+        return ret;
+    }
+}
+
+String esc() :
+{
+    Token t;
+}
+{
+    t=<ESC>
+    {
+        if (t.image.equals("\\\\")) {
+            return "\\";
+        } else if (t.image.equals("\\$")) {
+            return "$";
+        } else
+            throw new AssertionError();
+    }
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScanner.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScanner.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScanner.java	(revision 36424)
@@ -0,0 +1,249 @@
+/* Generated By:JavaCC: Do not edit this line. ParamStringScanner.java */
+package org.openstreetmap.josm.plugins.roadsigns.javacc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.openstreetmap.josm.plugins.roadsigns.ParametrizedString.Prm;
+import org.openstreetmap.josm.plugins.roadsigns.ParametrizedString.Str;
+import org.openstreetmap.josm.plugins.roadsigns.ParametrizedString.StringOrParameter;
+
+public class ParamStringScanner implements ParamStringScannerConstants {
+        public static List<StringOrParameter> parseIt(String s) throws ParseException {
+                ParamStringScanner parser = new ParamStringScanner(new java.io.StringReader(s));
+                return parser.parse();
+        }
+
+  final public List<StringOrParameter> parse() throws ParseException {
+    String val;
+    Token t;
+    List<StringOrParameter> lst = new ArrayList<>();
+    label_1:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ID:
+      case ESC:
+      case REST:
+        ;
+        break;
+      default:
+        jj_la1[0] = jj_gen;
+        break label_1;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ID:
+        val = id();
+            lst.add(new Prm(val));
+        break;
+      case ESC:
+        val = esc();
+            lst.add(new Str(val));
+        break;
+      case REST:
+        t = jj_consume_token(REST);
+            lst.add(new Str(t.image));
+        break;
+      default:
+        jj_la1[1] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+            {if (true) return lst;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public String id() throws ParseException {
+    Token t;
+    String ret;
+    t = jj_consume_token(ID);
+        ret = t.image;
+        ret = ret.substring(1);
+        if (ret.startsWith("{")) {
+            ret = ret.substring(1, ret.length()-1);
+        }
+        {if (true) return ret;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public String esc() throws ParseException {
+    Token t;
+    t = jj_consume_token(ESC);
+        if (t.image.equals("\\\\")) {
+            {if (true) return "\\";}
+        } else if (t.image.equals("\\$")) {
+            {if (true) return "$";}
+        } else
+            {if (true) throw new AssertionError();}
+    throw new Error("Missing return statement in function");
+  }
+
+  /** Generated Token Manager. */
+  public ParamStringScannerTokenManager token_source;
+  SimpleCharStream jj_input_stream;
+  /** Current token. */
+  public Token token;
+  /** Next token. */
+  public Token jj_nt;
+  private int jj_ntk;
+  private int jj_gen;
+  final private int[] jj_la1 = new int[2];
+  static private int[] jj_la1_0;
+  static {
+      jj_la1_init_0();
+   }
+   private static void jj_la1_init_0() {
+      jj_la1_0 = new int[] {0xe,0xe,};
+   }
+
+  /** Constructor with InputStream. */
+  public ParamStringScanner(java.io.InputStream stream) {
+     this(stream, null);
+  }
+  /** Constructor with InputStream and supplied encoding */
+  public ParamStringScanner(java.io.InputStream stream, String encoding) {
+    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+    token_source = new ParamStringScannerTokenManager(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 2; i++) jj_la1[i] = -1;
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.InputStream stream) {
+     ReInit(stream, null);
+  }
+  /** Reinitialise. */
+  public void ReInit(java.io.InputStream stream, String encoding) {
+    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+    token_source.ReInit(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 2; i++) jj_la1[i] = -1;
+  }
+
+  /** Constructor. */
+  public ParamStringScanner(java.io.Reader stream) {
+    jj_input_stream = new SimpleCharStream(stream, 1, 1);
+    token_source = new ParamStringScannerTokenManager(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 2; i++) jj_la1[i] = -1;
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.Reader stream) {
+    jj_input_stream.ReInit(stream, 1, 1);
+    token_source.ReInit(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 2; i++) jj_la1[i] = -1;
+  }
+
+  /** Constructor with generated Token Manager. */
+  public ParamStringScanner(ParamStringScannerTokenManager tm) {
+    token_source = tm;
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 2; i++) jj_la1[i] = -1;
+  }
+
+  /** Reinitialise. */
+  public void ReInit(ParamStringScannerTokenManager tm) {
+    token_source = tm;
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 2; i++) jj_la1[i] = -1;
+  }
+
+  private Token jj_consume_token(int kind) throws ParseException {
+    Token oldToken;
+    if ((oldToken = token).next != null) token = token.next;
+    else token = token.next = token_source.getNextToken();
+    jj_ntk = -1;
+    if (token.kind == kind) {
+      jj_gen++;
+      return token;
+    }
+    token = oldToken;
+    jj_kind = kind;
+    throw generateParseException();
+  }
+
+
+/** Get the next Token. */
+  final public Token getNextToken() {
+    if (token.next != null) token = token.next;
+    else token = token.next = token_source.getNextToken();
+    jj_ntk = -1;
+    jj_gen++;
+    return token;
+  }
+
+/** Get the specific Token. */
+  final public Token getToken(int index) {
+    Token t = token;
+    for (int i = 0; i < index; i++) {
+      if (t.next != null) t = t.next;
+      else t = t.next = token_source.getNextToken();
+    }
+    return t;
+  }
+
+  private int jj_ntk() {
+    if ((jj_nt=token.next) == null)
+      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+    else
+      return (jj_ntk = jj_nt.kind);
+  }
+
+  private java.util.List<int[]> jj_expentries = new java.util.ArrayList<>();
+  private int[] jj_expentry;
+  private int jj_kind = -1;
+
+  /** Generate ParseException. */
+  public ParseException generateParseException() {
+    jj_expentries.clear();
+    boolean[] la1tokens = new boolean[4];
+    if (jj_kind >= 0) {
+      la1tokens[jj_kind] = true;
+      jj_kind = -1;
+    }
+    for (int i = 0; i < 2; i++) {
+      if (jj_la1[i] == jj_gen) {
+        for (int j = 0; j < 32; j++) {
+          if ((jj_la1_0[i] & (1<<j)) != 0) {
+            la1tokens[j] = true;
+          }
+        }
+      }
+    }
+    for (int i = 0; i < 4; i++) {
+      if (la1tokens[i]) {
+        jj_expentry = new int[1];
+        jj_expentry[0] = i;
+        jj_expentries.add(jj_expentry);
+      }
+    }
+    int[][] exptokseq = new int[jj_expentries.size()][];
+    for (int i = 0; i < jj_expentries.size(); i++) {
+      exptokseq[i] = (int[])jj_expentries.get(i);
+    }
+    return new ParseException(token, exptokseq, tokenImage);
+  }
+
+  /** Enable tracing. */
+  final public void enable_tracing() {
+  }
+
+  /** Disable tracing. */
+  final public void disable_tracing() {
+  }
+
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScannerConstants.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScannerConstants.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScannerConstants.java	(revision 36424)
@@ -0,0 +1,31 @@
+/* Generated By:JavaCC: Do not edit this line. ParamStringScannerConstants.java */
+package org.openstreetmap.josm.plugins.roadsigns.javacc;
+
+
+/**
+ * Token literal values and constants.
+ * Generated by org.javacc.parser.OtherFilesGen#start()
+ */
+public interface ParamStringScannerConstants {
+
+  /** End of File. */
+  int EOF = 0;
+  /** RegularExpression Id. */
+  int ID = 1;
+  /** RegularExpression Id. */
+  int ESC = 2;
+  /** RegularExpression Id. */
+  int REST = 3;
+
+  /** Lexical state. */
+  int DEFAULT = 0;
+
+  /** Literal token values. */
+  String[] tokenImage = {
+    "<EOF>",
+    "<ID>",
+    "<ESC>",
+    "<REST>",
+  };
+
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScannerTokenManager.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScannerTokenManager.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParamStringScannerTokenManager.java	(revision 36424)
@@ -0,0 +1,328 @@
+/* Generated By:JavaCC: Do not edit this line. ParamStringScannerTokenManager.java */
+package org.openstreetmap.josm.plugins.roadsigns.javacc;
+
+/** Token Manager. */
+public class ParamStringScannerTokenManager implements ParamStringScannerConstants
+{
+
+  /** Debug output. */
+  public  java.io.PrintStream debugStream = System.out;
+  /** Set debug output. */
+  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private int jjMoveStringLiteralDfa0_0()
+{
+   return jjMoveNfa_0(0, 0);
+}
+static final long[] jjbitVec0 = {
+   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+private int jjMoveNfa_0(int startState, int curPos)
+{
+   int startsAt = 0;
+   jjnewStateCnt = 11;
+   int i = 1;
+   jjstateSet[0] = startState;
+   int kind = 0x7fffffff;
+   for (;;)
+   {
+      if (++jjround == 0x7fffffff)
+         ReInitRounds();
+      if (curChar < 64)
+      {
+         long l = 1L << curChar;
+         do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 0:
+                  if ((0xffffffefffffffffL & l) != 0L)
+                  {
+                     if (kind > 3)
+                        kind = 3;
+                     jjCheckNAdd(7);
+                  }
+                  else if (curChar == 36)
+                     jjAddStates(0, 1);
+                  break;
+               case 2:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 1)
+                     kind = 1;
+                  jjstateSet[jjnewStateCnt++] = 2;
+                  break;
+               case 5:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjAddStates(2, 3);
+                  break;
+               case 7:
+                  if ((0xffffffefffffffffL & l) == 0L)
+                     break;
+                  if (kind > 3)
+                     kind = 3;
+                  jjCheckNAdd(7);
+                  break;
+               case 10:
+                  if (curChar == 36 && kind > 2)
+                     kind = 2;
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else if (curChar < 128)
+      {
+         long l = 1L << (curChar & 077);
+         do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 0:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                  {
+                     if (kind > 3)
+                        kind = 3;
+                     jjCheckNAdd(7);
+                  }
+                  else if (curChar == 92)
+                     jjAddStates(4, 5);
+                  break;
+               case 1:
+               case 2:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 1)
+                     kind = 1;
+                  jjCheckNAdd(2);
+                  break;
+               case 3:
+                  if (curChar == 123)
+                     jjstateSet[jjnewStateCnt++] = 4;
+                  break;
+               case 4:
+               case 5:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddTwoStates(5, 6);
+                  break;
+               case 6:
+                  if (curChar == 125 && kind > 1)
+                     kind = 1;
+                  break;
+               case 7:
+                  if ((0xffffffffefffffffL & l) == 0L)
+                     break;
+                  if (kind > 3)
+                     kind = 3;
+                  jjCheckNAdd(7);
+                  break;
+               case 8:
+                  if (curChar == 92)
+                     jjAddStates(4, 5);
+                  break;
+               case 9:
+                  if (curChar == 92 && kind > 2)
+                     kind = 2;
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else
+      {
+         int i2 = (curChar & 0xff) >> 6;
+         long l2 = 1L << (curChar & 077);
+         do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 0:
+               case 7:
+                  if ((jjbitVec0[i2] & l2) == 0L)
+                     break;
+                  if (kind > 3)
+                     kind = 3;
+                  jjCheckNAdd(7);
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      if (kind != 0x7fffffff)
+      {
+         jjmatchedKind = kind;
+         jjmatchedPos = curPos;
+         kind = 0x7fffffff;
+      }
+      ++curPos;
+      if ((i = jjnewStateCnt) == (startsAt = 11 - (jjnewStateCnt = startsAt)))
+         return curPos;
+      try { curChar = input_stream.readChar(); }
+      catch(java.io.IOException e) { return curPos; }
+   }
+}
+static final int[] jjnextStates = {
+   1, 3, 5, 6, 9, 10,
+};
+
+/** Token literal values. */
+public static final String[] jjstrLiteralImages = {
+"", null, null, null, };
+
+/** Lexer state names. */
+public static final String[] lexStateNames = {
+   "DEFAULT",
+};
+protected SimpleCharStream input_stream;
+private final int[] jjrounds = new int[11];
+private final int[] jjstateSet = new int[22];
+protected char curChar;
+/** Constructor. */
+public ParamStringScannerTokenManager(SimpleCharStream stream){
+   if (SimpleCharStream.staticFlag)
+      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
+   input_stream = stream;
+}
+
+/** Constructor. */
+public ParamStringScannerTokenManager(SimpleCharStream stream, int lexState){
+   this(stream);
+   SwitchTo(lexState);
+}
+
+/** Reinitialise parser. */
+public void ReInit(SimpleCharStream stream)
+{
+   jjmatchedPos = jjnewStateCnt = 0;
+   curLexState = defaultLexState;
+   input_stream = stream;
+   ReInitRounds();
+}
+private void ReInitRounds()
+{
+   int i;
+   jjround = 0x80000001;
+   for (i = 11; i-- > 0;)
+      jjrounds[i] = 0x80000000;
+}
+
+/** Reinitialise parser. */
+public void ReInit(SimpleCharStream stream, int lexState)
+{
+   ReInit(stream);
+   SwitchTo(lexState);
+}
+
+/** Switch to specified lex state. */
+public void SwitchTo(int lexState)
+{
+   if (lexState >= 1 || lexState < 0)
+      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+   else
+      curLexState = lexState;
+}
+
+protected Token jjFillToken()
+{
+   final Token t;
+   final String curTokenImage;
+   final int beginLine;
+   final int endLine;
+   final int beginColumn;
+   final int endColumn;
+   String im = jjstrLiteralImages[jjmatchedKind];
+   curTokenImage = (im == null) ? input_stream.GetImage() : im;
+   beginLine = input_stream.getBeginLine();
+   beginColumn = input_stream.getBeginColumn();
+   endLine = input_stream.getEndLine();
+   endColumn = input_stream.getEndColumn();
+   t = Token.newToken(jjmatchedKind, curTokenImage);
+
+   t.beginLine = beginLine;
+   t.endLine = endLine;
+   t.beginColumn = beginColumn;
+   t.endColumn = endColumn;
+
+   return t;
+}
+
+int curLexState = 0;
+int defaultLexState = 0;
+int jjnewStateCnt;
+int jjround;
+int jjmatchedPos;
+int jjmatchedKind;
+
+/** Get the next Token. */
+public Token getNextToken()
+{
+  Token matchedToken;
+  int curPos = 0;
+
+  EOFLoop :
+  for (;;)
+  {
+   try
+   {
+      curChar = input_stream.BeginToken();
+   }
+   catch(java.io.IOException e)
+   {
+      jjmatchedKind = 0;
+      matchedToken = jjFillToken();
+      return matchedToken;
+   }
+
+   jjmatchedKind = 0x7fffffff;
+   jjmatchedPos = 0;
+   curPos = jjMoveStringLiteralDfa0_0();
+   if (jjmatchedKind != 0x7fffffff)
+   {
+      if (jjmatchedPos + 1 < curPos)
+         input_stream.backup(curPos - jjmatchedPos - 1);
+         matchedToken = jjFillToken();
+         return matchedToken;
+   }
+   int error_line = input_stream.getEndLine();
+   int error_column = input_stream.getEndColumn();
+   String error_after = null;
+   boolean EOFSeen = false;
+   try { input_stream.readChar(); input_stream.backup(1); }
+   catch (java.io.IOException e1) {
+      EOFSeen = true;
+      error_after = curPos <= 1 ? "" : input_stream.GetImage();
+      if (curChar == '\n' || curChar == '\r') {
+         error_line++;
+         error_column = 0;
+      }
+      else
+         error_column++;
+   }
+   if (!EOFSeen) {
+      input_stream.backup(1);
+      error_after = curPos <= 1 ? "" : input_stream.GetImage();
+   }
+   throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+  }
+}
+
+private void jjCheckNAdd(int state)
+{
+   if (jjrounds[state] != jjround)
+   {
+      jjstateSet[jjnewStateCnt++] = state;
+      jjrounds[state] = jjround;
+   }
+}
+private void jjAddStates(int start, int end)
+{
+   do {
+      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+   } while (start++ != end);
+}
+private void jjCheckNAddTwoStates(int state1, int state2)
+{
+   jjCheckNAdd(state1);
+   jjCheckNAdd(state2);
+}
+
+}
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParseException.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParseException.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/ParseException.java	(revision 36424)
@@ -0,0 +1,199 @@
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 4.1 */
+/* JavaCCOptions:KEEP_LINE_COL=null */
+package org.openstreetmap.josm.plugins.roadsigns.javacc;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+  /**
+   * This constructor is used by the method "generateParseException"
+   * in the generated parser.  Calling this constructor generates
+   * a new object of this type with the fields "currentToken",
+   * "expectedTokenSequences", and "tokenImage" set.  The boolean
+   * flag "specialConstructor" is also set to true to indicate that
+   * this constructor was used to create this object.
+   * This constructor calls its super class with the empty string
+   * to force the "toString" method of parent class "Throwable" to
+   * print the error message in the form:
+   *     ParseException: <result of getMessage>
+   */
+  public ParseException(Token currentTokenVal,
+                        int[][] expectedTokenSequencesVal,
+                        String[] tokenImageVal
+                       )
+  {
+    super("");
+    specialConstructor = true;
+    currentToken = currentTokenVal;
+    expectedTokenSequences = expectedTokenSequencesVal;
+    tokenImage = tokenImageVal;
+  }
+
+  /**
+   * The following constructors are for use by you for whatever
+   * purpose you can think of.  Constructing the exception in this
+   * manner makes the exception behave in the normal way - i.e., as
+   * documented in the class "Throwable".  The fields "errorToken",
+   * "expectedTokenSequences", and "tokenImage" do not contain
+   * relevant information.  The JavaCC generated code does not use
+   * these constructors.
+   */
+
+  public ParseException() {
+    super();
+    specialConstructor = false;
+  }
+
+  /** Constructor with message. */
+  public ParseException(String message) {
+    super(message);
+    specialConstructor = false;
+  }
+
+  /**
+   * This variable determines which constructor was used to create
+   * this object and thereby affects the semantics of the
+   * "getMessage" method (see below).
+   */
+  protected boolean specialConstructor;
+
+  /**
+   * This is the last token that has been consumed successfully.  If
+   * this object has been created due to a parse error, the token
+   * followng this token will (therefore) be the first error token.
+   */
+  public Token currentToken;
+
+  /**
+   * Each entry in this array is an array of integers.  Each array
+   * of integers represents a sequence of tokens (by their ordinal
+   * values) that is expected at this point of the parse.
+   */
+  public int[][] expectedTokenSequences;
+
+  /**
+   * This is a reference to the "tokenImage" array of the generated
+   * parser within which the parse error occurred.  This array is
+   * defined in the generated ...Constants interface.
+   */
+  public String[] tokenImage;
+
+  /**
+   * This method has the standard behavior when this object has been
+   * created using the standard constructors.  Otherwise, it uses
+   * "currentToken" and "expectedTokenSequences" to generate a parse
+   * error message and returns it.  If this object has been created
+   * due to a parse error, and you do not catch it (it gets thrown
+   * from the parser), then this method is called during the printing
+   * of the final stack trace, and hence the correct error message
+   * gets displayed.
+   */
+  @Override
+  public String getMessage() {
+    if (!specialConstructor) {
+      return super.getMessage();
+    }
+    StringBuffer expected = new StringBuffer();
+    int maxSize = 0;
+    for (int i = 0; i < expectedTokenSequences.length; i++) {
+      if (maxSize < expectedTokenSequences[i].length) {
+        maxSize = expectedTokenSequences[i].length;
+      }
+      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
+      }
+      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+        expected.append("...");
+      }
+      expected.append(eol).append("    ");
+    }
+    String retval = "Encountered \"";
+    Token tok = currentToken.next;
+    for (int i = 0; i < maxSize; i++) {
+      if (i != 0) retval += " ";
+      if (tok.kind == 0) {
+        retval += tokenImage[0];
+        break;
+      }
+      retval += " " + tokenImage[tok.kind];
+      retval += " \"";
+      retval += add_escapes(tok.image);
+      retval += " \"";
+      tok = tok.next;
+    }
+    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+    retval += "." + eol;
+    if (expectedTokenSequences.length == 1) {
+      retval += "Was expecting:" + eol + "    ";
+    } else {
+      retval += "Was expecting one of:" + eol + "    ";
+    }
+    retval += expected.toString();
+    return retval;
+  }
+
+  /**
+   * The end of line string for this machine.
+   */
+  protected String eol = System.getProperty("line.separator", "\n");
+
+  /**
+   * Used to convert raw characters to their escaped version
+   * when these raw version cannot be used as part of an ASCII
+   * string literal.
+   */
+  protected String add_escapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
+        }
+      }
+      return retval.toString();
+   }
+
+}
+/* JavaCC - OriginalChecksum=5d829dd89956099ab39643f43523a8ca (do not edit this line) */
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/SimpleCharStream.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/SimpleCharStream.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/SimpleCharStream.java	(revision 36424)
@@ -0,0 +1,472 @@
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.1 */
+/* JavaCCOptions:STATIC=false */
+package org.openstreetmap.josm.plugins.roadsigns.javacc;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (without unicode processing).
+ */
+
+public class SimpleCharStream
+{
+/** Whether parser is static. */
+  public static final boolean staticFlag = false;
+  int bufsize;
+  int available;
+  int tokenBegin;
+/** Position in buffer. */
+  public int bufpos = -1;
+  protected int bufline[];
+  protected int bufcolumn[];
+
+  protected int column = 0;
+  protected int line = 1;
+
+  protected boolean prevCharIsCR = false;
+  protected boolean prevCharIsLF = false;
+
+  protected java.io.Reader inputStream;
+
+  protected char[] buffer;
+  protected int maxNextCharInd = 0;
+  protected int inBuf = 0;
+  protected int tabSize = 8;
+
+  protected void setTabSize(int i) { tabSize = i; }
+  protected int getTabSize(int i) { return tabSize; }
+
+
+  protected void ExpandBuff(boolean wrapAround)
+  {
+     char[] newbuffer = new char[bufsize + 2048];
+     int newbufline[] = new int[bufsize + 2048];
+     int newbufcolumn[] = new int[bufsize + 2048];
+
+     try
+     {
+        if (wrapAround)
+        {
+           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+           System.arraycopy(buffer, 0, newbuffer,
+                                             bufsize - tokenBegin, bufpos);
+           buffer = newbuffer;
+
+           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+           bufline = newbufline;
+
+           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+           bufcolumn = newbufcolumn;
+
+           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
+        }
+        else
+        {
+           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+           buffer = newbuffer;
+
+           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+           bufline = newbufline;
+
+           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+           bufcolumn = newbufcolumn;
+
+           maxNextCharInd = (bufpos -= tokenBegin);
+        }
+     }
+     catch (Throwable t)
+     {
+        throw new Error(t.getMessage());
+     }
+
+
+     bufsize += 2048;
+     available = bufsize;
+     tokenBegin = 0;
+  }
+
+  protected void FillBuff() throws java.io.IOException
+  {
+     if (maxNextCharInd == available)
+     {
+        if (available == bufsize)
+        {
+           if (tokenBegin > 2048)
+           {
+              bufpos = maxNextCharInd = 0;
+              available = tokenBegin;
+           }
+           else if (tokenBegin < 0)
+              bufpos = maxNextCharInd = 0;
+           else
+              ExpandBuff(false);
+        }
+        else if (available > tokenBegin)
+           available = bufsize;
+        else if ((tokenBegin - available) < 2048)
+           ExpandBuff(true);
+        else
+           available = tokenBegin;
+     }
+
+     int i;
+     try {
+        if ((i = inputStream.read(buffer, maxNextCharInd,
+                                    available - maxNextCharInd)) == -1)
+        {
+           inputStream.close();
+           throw new java.io.IOException();
+        }
+        else
+           maxNextCharInd += i;
+        return;
+     }
+     catch(java.io.IOException e) {
+        --bufpos;
+        backup(0);
+        if (tokenBegin == -1)
+           tokenBegin = bufpos;
+        throw e;
+     }
+  }
+
+/** Start. */
+  public char BeginToken() throws java.io.IOException
+  {
+     tokenBegin = -1;
+     char c = readChar();
+     tokenBegin = bufpos;
+
+     return c;
+  }
+
+  protected void UpdateLineColumn(char c)
+  {
+     column++;
+
+     if (prevCharIsLF)
+     {
+        prevCharIsLF = false;
+        line += (column = 1);
+     }
+     else if (prevCharIsCR)
+     {
+        prevCharIsCR = false;
+        if (c == '\n')
+        {
+           prevCharIsLF = true;
+        }
+        else
+           line += (column = 1);
+     }
+
+     switch (c)
+     {
+        case '\r' :
+           prevCharIsCR = true;
+           break;
+        case '\n' :
+           prevCharIsLF = true;
+           break;
+        case '\t' :
+           column--;
+           column += (tabSize - (column % tabSize));
+           break;
+        default :
+           break;
+     }
+
+     bufline[bufpos] = line;
+     bufcolumn[bufpos] = column;
+  }
+
+/** Read a character. */
+  public char readChar() throws java.io.IOException
+  {
+     if (inBuf > 0)
+     {
+        --inBuf;
+
+        if (++bufpos == bufsize)
+           bufpos = 0;
+
+        return buffer[bufpos];
+     }
+
+     if (++bufpos >= maxNextCharInd)
+        FillBuff();
+
+     char c = buffer[bufpos];
+
+     UpdateLineColumn(c);
+     return c;
+  }
+
+  /**
+   * @deprecated
+   * @see #getEndColumn
+   */
+  @Deprecated
+  public int getColumn() {
+     return bufcolumn[bufpos];
+  }
+
+  /**
+   * @deprecated
+   * @see #getEndLine
+   */
+  @Deprecated
+  public int getLine() {
+     return bufline[bufpos];
+  }
+
+  /** Get token end column number. */
+  public int getEndColumn() {
+     return bufcolumn[bufpos];
+  }
+
+  /** Get token end line number. */
+  public int getEndLine() {
+     return bufline[bufpos];
+  }
+
+  /** Get token beginning column number. */
+  public int getBeginColumn() {
+     return bufcolumn[tokenBegin];
+  }
+
+  /** Get token beginning line number. */
+  public int getBeginLine() {
+     return bufline[tokenBegin];
+  }
+
+/** Backup a number of characters. */
+  public void backup(int amount) {
+
+    inBuf += amount;
+    if ((bufpos -= amount) < 0)
+       bufpos += bufsize;
+  }
+
+  /** Constructor. */
+  public SimpleCharStream(java.io.Reader dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    available = bufsize = buffersize;
+    buffer = new char[buffersize];
+    bufline = new int[buffersize];
+    bufcolumn = new int[buffersize];
+  }
+
+  /** Constructor. */
+  public SimpleCharStream(java.io.Reader dstream, int startline,
+                          int startcolumn)
+  {
+     this(dstream, startline, startcolumn, 4096);
+  }
+
+  /** Constructor. */
+  public SimpleCharStream(java.io.Reader dstream)
+  {
+     this(dstream, 1, 1, 4096);
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.Reader dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    if (buffer == null || buffersize != buffer.length)
+    {
+      available = bufsize = buffersize;
+      buffer = new char[buffersize];
+      bufline = new int[buffersize];
+      bufcolumn = new int[buffersize];
+    }
+    prevCharIsLF = prevCharIsCR = false;
+    tokenBegin = inBuf = maxNextCharInd = 0;
+    bufpos = -1;
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.Reader dstream, int startline,
+                     int startcolumn)
+  {
+     ReInit(dstream, startline, startcolumn, 4096);
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.Reader dstream)
+  {
+     ReInit(dstream, 1, 1, 4096);
+  }
+  /** Constructor. */
+  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+     this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+  }
+
+  /** Constructor. */
+  public SimpleCharStream(java.io.InputStream dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+     this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+  }
+
+  /** Constructor. */
+  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+                          int startcolumn) throws java.io.UnsupportedEncodingException
+  {
+     this(dstream, encoding, startline, startcolumn, 4096);
+  }
+
+  /** Constructor. */
+  public SimpleCharStream(java.io.InputStream dstream, int startline,
+                          int startcolumn)
+  {
+     this(dstream, startline, startcolumn, 4096);
+  }
+
+  /** Constructor. */
+  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+  {
+     this(dstream, encoding, 1, 1, 4096);
+  }
+
+  /** Constructor. */
+  public SimpleCharStream(java.io.InputStream dstream)
+  {
+     this(dstream, 1, 1, 4096);
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, int startline,
+                          int startcolumn, int buffersize)
+  {
+     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+  {
+     ReInit(dstream, encoding, 1, 1, 4096);
+  }
+
+  /** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream)
+  {
+     ReInit(dstream, 1, 1, 4096);
+  }
+  /** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+                     int startcolumn) throws java.io.UnsupportedEncodingException
+  {
+     ReInit(dstream, encoding, startline, startcolumn, 4096);
+  }
+  /** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, int startline,
+                     int startcolumn)
+  {
+     ReInit(dstream, startline, startcolumn, 4096);
+  }
+  /** Get token literal value. */
+  public String GetImage()
+  {
+     if (bufpos >= tokenBegin)
+        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+     else
+        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+                              new String(buffer, 0, bufpos + 1);
+  }
+
+  /** Get the suffix. */
+  public char[] GetSuffix(int len)
+  {
+     char[] ret = new char[len];
+
+     if ((bufpos + 1) >= len)
+        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+     else
+     {
+        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+                                                          len - bufpos - 1);
+        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+     }
+
+     return ret;
+  }
+
+  /** Reset buffer when finished. */
+  public void Done()
+  {
+     buffer = null;
+     bufline = null;
+     bufcolumn = null;
+  }
+
+  /**
+   * Method to adjust line and column numbers for the start of a token.
+   */
+  public void adjustBeginLineColumn(int newLine, int newCol)
+  {
+     int start = tokenBegin;
+     int len;
+
+     if (bufpos >= tokenBegin)
+     {
+        len = bufpos - tokenBegin + inBuf + 1;
+     }
+     else
+     {
+        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+     }
+
+     int i = 0, j = 0, k = 0;
+     int nextColDiff = 0, columnDiff = 0;
+
+     while (i < len &&
+            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+     {
+        bufline[j] = newLine;
+        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+        bufcolumn[j] = newCol + columnDiff;
+        columnDiff = nextColDiff;
+        i++;
+     }
+
+     if (i < len)
+     {
+        bufline[j] = newLine++;
+        bufcolumn[j] = newCol + columnDiff;
+
+        while (i++ < len)
+        {
+           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+              bufline[j] = newLine++;
+           else
+              bufline[j] = newLine;
+        }
+     }
+
+     line = bufline[j];
+     column = bufcolumn[j];
+  }
+
+}
+/* JavaCC - OriginalChecksum=32e760d96f0c150b8b52bb559d21c905 (do not edit this line) */
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/Token.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/Token.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/Token.java	(revision 36424)
@@ -0,0 +1,125 @@
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 4.1 */
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null */
+package org.openstreetmap.josm.plugins.roadsigns.javacc;
+
+/**
+ * Describes the input token stream.
+ */
+
+public class Token {
+
+  /**
+   * An integer that describes the kind of this token.  This numbering
+   * system is determined by JavaCCParser, and a table of these numbers is
+   * stored in the file ...Constants.java.
+   */
+  public int kind;
+
+  /** The line number of the first character of this Token. */
+  public int beginLine;
+  /** The column number of the first character of this Token. */
+  public int beginColumn;
+  /** The line number of the last character of this Token. */
+  public int endLine;
+  /** The column number of the last character of this Token. */
+  public int endColumn;
+
+  /**
+   * The string image of the token.
+   */
+  public String image;
+
+  /**
+   * A reference to the next regular (non-special) token from the input
+   * stream.  If this is the last token from the input stream, or if the
+   * token manager has not read tokens beyond this one, this field is
+   * set to null.  This is true only if this token is also a regular
+   * token.  Otherwise, see below for a description of the contents of
+   * this field.
+   */
+  public Token next;
+
+  /**
+   * This field is used to access special tokens that occur prior to this
+   * token, but after the immediately preceding regular (non-special) token.
+   * If there are no such special tokens, this field is set to null.
+   * When there are more than one such special token, this field refers
+   * to the last of these special tokens, which in turn refers to the next
+   * previous special token through its specialToken field, and so on
+   * until the first special token (whose specialToken field is null).
+   * The next fields of special tokens refer to other special tokens that
+   * immediately follow it (without an intervening regular token).  If there
+   * is no such token, this field is null.
+   */
+  public Token specialToken;
+
+  /**
+   * An optional attribute value of the Token.
+   * Tokens which are not used as syntactic sugar will often contain
+   * meaningful values that will be used later on by the compiler or
+   * interpreter. This attribute value is often different from the image.
+   * Any subclass of Token that actually wants to return a non-null value can
+   * override this method as appropriate.
+   */
+  public Object getValue() {
+    return null;
+  }
+
+  /**
+   * No-argument constructor
+   */
+  public Token() {}
+
+  /**
+   * Constructs a new token for the specified Image.
+   */
+  public Token(int kind)
+  {
+     this(kind, null);
+  }
+
+  /**
+   * Constructs a new token for the specified Image and Kind.
+   */
+  public Token(int kind, String image)
+  {
+     this.kind = kind;
+     this.image = image;
+  }
+
+  /**
+   * Returns the image.
+   */
+  @Override
+  public String toString()
+  {
+     return image;
+  }
+
+  /**
+   * Returns a new Token object, by default. However, if you want, you
+   * can create and return subclass objects based on the value of ofKind.
+   * Simply add the cases to the switch for all those special cases.
+   * For example, if you have a subclass of Token called IDToken that
+   * you want to create if ofKind is ID, simply add something like :
+   *
+   *    case MyParserConstants.ID : return new IDToken(ofKind, image);
+   *
+   * to the following switch statement. Then you can cast matchedToken
+   * variable to the appropriate type and use sit in your lexical actions.
+   */
+  public static Token newToken(int ofKind, String image)
+  {
+     switch(ofKind)
+     {
+       default : return new Token(ofKind, image);
+     }
+  }
+
+  public static Token newToken(int ofKind)
+  {
+     return newToken(ofKind, null);
+  }
+
+}
+/* JavaCC - OriginalChecksum=021f885cf82ce1cc84671f9a48141523 (do not edit this line) */
Index: /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/TokenMgrError.java
===================================================================
--- /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/TokenMgrError.java	(revision 36424)
+++ /applications/editors/josm/plugins/RoadSigns/src/org/openstreetmap/josm/plugins/roadsigns/javacc/TokenMgrError.java	(revision 36424)
@@ -0,0 +1,141 @@
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 4.1 */
+/* JavaCCOptions: */
+package org.openstreetmap.josm.plugins.roadsigns.javacc;
+
+/** Token Manager Error. */
+public class TokenMgrError extends Error
+{
+
+   /*
+    * Ordinals for various reasons why an Error of this type can be thrown.
+    */
+
+   /**
+    * Lexical error occurred.
+    */
+   static final int LEXICAL_ERROR = 0;
+
+   /**
+    * An attempt was made to create a second instance of a static token manager.
+    */
+   static final int STATIC_LEXER_ERROR = 1;
+
+   /**
+    * Tried to change to an invalid lexical state.
+    */
+   static final int INVALID_LEXICAL_STATE = 2;
+
+   /**
+    * Detected (and bailed out of) an infinite loop in the token manager.
+    */
+   static final int LOOP_DETECTED = 3;
+
+   /**
+    * Indicates the reason why the exception is thrown. It will have
+    * one of the above 4 values.
+    */
+   int errorCode;
+
+   /**
+    * Replaces unprintable characters by their escaped (or unicode escaped)
+    * equivalents in the given string
+    */
+   protected static final String addEscapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
+        }
+      }
+      return retval.toString();
+   }
+
+   /**
+    * Returns a detailed message for the Error when it is thrown by the
+    * token manager to indicate a lexical error.
+    * Parameters :
+    *    EOFSeen     : indicates if EOF caused the lexical error
+    *    curLexState : lexical state in which this error occurred
+    *    errorLine   : line number when the error occurred
+    *    errorColumn : column number when the error occurred
+    *    errorAfter  : prefix that was seen before this error occurred
+    *    curchar     : the offending character
+    * Note: You can customize the lexical error message by modifying this method.
+    */
+   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+      return("Lexical error at line " +
+           errorLine + ", column " +
+           errorColumn + ".  Encountered: " +
+           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+           "after : \"" + addEscapes(errorAfter) + "\"");
+   }
+
+   /**
+    * You can also modify the body of this method to customize your error messages.
+    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+    * of end-users concern, so you can return something like :
+    *
+    *     "Internal Error : Please file a bug report .... "
+    *
+    * from this method for such cases in the release version of your parser.
+    */
+   @Override
+   public String getMessage() {
+      return super.getMessage();
+   }
+
+   /*
+    * Constructors of various flavors follow.
+    */
+
+   /** No arg constructor. */
+   public TokenMgrError() {
+   }
+
+   /** Constructor with message and reason. */
+   public TokenMgrError(String message, int reason) {
+      super(message);
+      errorCode = reason;
+   }
+
+   /** Full Constructor. */
+   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+   }
+}
+/* JavaCC - OriginalChecksum=3b46b91d4b831d370c179f923feba7d9 (do not edit this line) */
Index: /applications/editors/josm/plugins/SeaChart/.checkstyle
===================================================================
--- /applications/editors/josm/plugins/SeaChart/.checkstyle	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/.checkstyle	(revision 36424)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="JOSM" location="/JOSM/tools/checkstyle/josm_checks.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="JOSM" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+</fileset-config>
Index: /applications/editors/josm/plugins/SeaChart/GPL-v2.0.txt
===================================================================
--- /applications/editors/josm/plugins/SeaChart/GPL-v2.0.txt	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/GPL-v2.0.txt	(revision 36424)
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/SeaChart/GPL-v3.0.txt
===================================================================
--- /applications/editors/josm/plugins/SeaChart/GPL-v3.0.txt	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/GPL-v3.0.txt	(revision 36424)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: /applications/editors/josm/plugins/SeaChart/README
===================================================================
--- /applications/editors/josm/plugins/SeaChart/README	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/README	(revision 36424)
@@ -0,0 +1,7 @@
+README 
+======
+
+Author: Malcolm Herring, malcolm.herring@btinternet.com
+
+License: GPL v2 or later
+
Index: /applications/editors/josm/plugins/SeaChart/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/build.xml	(revision 36424)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="SeaChart" default="dist" basedir=".">
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="[Seachart] Publish new release"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+
+    <property name="plugin.author" value="Malcolm Herring"/>
+    <property name="plugin.class" value="seachart.Seachart"/>
+    <property name="plugin.description" value="Imagery Layer for Sea Charts"/>
+    <property name="plugin.icon" value="images/SC.png"/>
+    <property name="plugin.link" value="https://openseamap.org/"/>
+
+    <property name="josm" location="../../core/dist/josm-custom.jar"/>
+    <property name="plugin.dist.dir" value="../../dist"/>
+    
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>                
+
+</project>
+
Index: /applications/editors/josm/plugins/SeaChart/jbasemap/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jbasemap/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jbasemap/build.xml	(revision 36424)
@@ -0,0 +1,38 @@
+<project name="jbasemap" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./jbasemap.jar"/>
+  <property name="batik.dir" value="../libs/"/>
+  <path id="classpath">
+    <fileset dir="${batik.dir}" includes="**/batik*.jar"/>
+  </path>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source " >
+    <javac includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}" classpathref="classpath" encoding="UTF-8" />
+  </target>
+
+  <target name="dist" depends="compile" description="generate the distribution" >
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <manifest>
+        <attribute name="Main-Class" value="jbasemap.Jbasemap"/>
+        <attribute name="Class-Path" value="$jarfile"/>
+      </manifest>
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-svggen-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-dom-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-util-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-awt-util-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-ext-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-xml-1.8.jar" />
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up" >
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/jbasemap/src/jbasemap/Jbasemap.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jbasemap/src/jbasemap/Jbasemap.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jbasemap/src/jbasemap/Jbasemap.java	(revision 36424)
@@ -0,0 +1,147 @@
+// License: GPL. For details, see LICENSE file.
+package jbasemap;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.batik.dom.GenericDOMImplementation;
+import org.apache.batik.svggen.SVGGraphics2D;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+
+import render.ChartContext;
+import render.Renderer;
+import s57.S57map;
+import s57.S57map.Feature;
+import s57.S57map.GeomIterator;
+import s57.S57map.Pflag;
+import s57.S57map.Snode;
+import s57.S57obj.Obj;
+import s57.S57osm;
+import symbols.Symbols;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Jbasemap {
+    private Jbasemap() {
+        // Hide default constructor for utilities classes
+    }
+
+    static String src;
+    static String dst;
+    static Context context;
+    static S57map map;
+    static int zoom;
+    static double z2;
+
+    static class Context implements ChartContext {
+
+        static double top = 0;
+        static double mile = 0;
+
+        Context() {
+            top = (1.0 - Math.log(Math.tan(map.bounds.maxlat) + 1.0 / Math.cos(map.bounds.maxlat)) / Math.PI) / 2.0 * 256.0 * z2;
+            mile = 256 / ((Math.toDegrees(map.bounds.maxlat) - Math.toDegrees(map.bounds.minlat)) * 60);
+        }
+
+        @Override
+        public Point2D getPoint(Snode coord) {
+            double x = (Math.toDegrees(coord.lon) - Math.toDegrees(map.bounds.minlon)) * 256.0 * (z2 / 2) / 180.0;
+            double y = ((1.0 - Math.log(Math.tan(coord.lat) + 1.0 / Math.cos(coord.lat)) / Math.PI) / 2.0 * 256.0 * z2) - top;
+            return new Point2D.Double(x, y);
+        }
+
+        @Override
+        public double mile(Feature feature) {
+            return mile;
+        }
+
+        @Override
+        public int grid() {
+            return 0;
+        }
+
+        @Override
+        public boolean clip() {
+            return true;
+        }
+
+        @Override
+        public Color background(S57map map) {
+            if (map.features.containsKey(Obj.COALNE)) {
+                for (Feature feature : map.features.get(Obj.COALNE)) {
+                    if (feature.geom.prim == Pflag.POINT) {
+                        break;
+                    }
+                    GeomIterator git = map.new GeomIterator(feature.geom);
+                    git.nextComp();
+                    while (git.hasEdge()) {
+                        git.nextEdge();
+                        while (git.hasNode()) {
+                            Snode node = git.next();
+                            if (node == null)
+                                continue;
+                            if ((node.lat >= map.bounds.minlat) && (node.lat <= map.bounds.maxlat)
+                             && (node.lon >= map.bounds.minlon) && (node.lon <= map.bounds.maxlon)) {
+                                return Symbols.Bwater;
+                            }
+                        }
+                    }
+                }
+                return Symbols.Yland;
+            } else {
+                if (map.features.containsKey(Obj.ROADWY) || map.features.containsKey(Obj.RAILWY) || map.features.containsKey(Obj.LAKARE) ||
+                    map.features.containsKey(Obj.RIVERS) || map.features.containsKey(Obj.CANALS)) {
+                    return Symbols.Yland;
+                } else {
+                    return Symbols.Bwater;
+                }
+            }
+        }
+
+        @Override
+        public RuleSet ruleset() {
+            return RuleSet.BASE;
+        }
+    }
+
+    public static void main(String[] args) throws IOException {
+        if (args.length < 5) {
+            System.err.println("Usage: java -jar jbasemap.jar OSM_file SVG_file zoom xtile ytile");
+            System.exit(-1);
+        }
+        src = args[0];
+        dst = args[1];
+        zoom = Integer.parseInt(args[2]);
+        z2 = Math.pow(2, zoom);
+        double scale = 0.1;
+        File in = new File(src);
+        map = new S57map(false);
+        try {
+            S57osm.OSMmap(in, map, true);
+        } catch (Exception e) {
+            System.err.println("Input data error");
+            System.exit(-1);
+        }
+        map.bounds.maxlat = Math.atan(Math.sinh(Math.PI * (1 - 2 * Double.parseDouble(args[4]) / z2)));
+        map.bounds.minlat = Math.atan(Math.sinh(Math.PI * (1 - 2 * (Double.parseDouble(args[4]) + 1) / z2)));
+        map.bounds.minlon = Math.toRadians(Double.parseDouble(args[3]) / z2 * 360.0 - 180.0);
+        map.bounds.maxlon = Math.toRadians((Double.parseDouble(args[3]) + 1) / z2 * 360.0 - 180.0);
+        context = new Context();
+        Rectangle rect = new Rectangle(256, 256);
+        DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
+        Document document = domImpl.createDocument("http://www.w3.org/2000/svg", "svg", null);
+        SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
+        svgGenerator.clearRect(rect.x, rect.y, rect.width, rect.height);
+        svgGenerator.setSVGCanvasSize(rect.getSize());
+        svgGenerator.setClip(rect.x, rect.y, rect.width, rect.height);
+        Renderer.reRender(svgGenerator, rect, zoom, scale, map, context);
+        svgGenerator.stream(dst);
+        System.exit(0);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/jchart/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jchart/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jchart/build.xml	(revision 36424)
@@ -0,0 +1,38 @@
+<project name="jchart" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./jchart.jar"/>
+  <property name="batik.dir" value="../libs/"/>
+  <path id="classpath">
+    <fileset dir="${batik.dir}" includes="**/batik*.jar"/>
+  </path>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source " >
+    <javac includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}" classpathref="classpath" encoding="UTF-8" />
+  </target>
+
+  <target name="dist" depends="compile" description="generate the distribution" >
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <manifest>
+        <attribute name="Main-Class" value="jchart.Jchart"/>
+        <attribute name="Class-Path" value="$jarfile"/>
+      </manifest>
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-svggen-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-dom-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-util-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-awt-util-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-ext-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-xml-1.8.jar" />
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up" >
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/jchart/src/jchart/Jchart.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jchart/src/jchart/Jchart.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jchart/src/jchart/Jchart.java	(revision 36424)
@@ -0,0 +1,186 @@
+// License: GPL. For details, see LICENSE file.
+package jchart;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+import javax.imageio.ImageIO;
+
+import org.apache.batik.dom.GenericDOMImplementation;
+import org.apache.batik.svggen.SVGGraphics2D;
+import org.apache.batik.svggen.SVGGraphics2DIOException;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+
+import render.ChartContext;
+import render.Renderer;
+import s57.S57map;
+import s57.S57map.Feature;
+import s57.S57map.GeomIterator;
+import s57.S57map.Pflag;
+import s57.S57map.Snode;
+import s57.S57obj.Obj;
+import symbols.Symbols;
+import s57.S57osm;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Jchart {
+    private Jchart() {
+        // Hide default constructor for utilities classes
+    }
+
+    static int zoom;
+    static Context context;
+    static S57map map;
+
+    static class Context implements ChartContext {
+
+        static double mile;
+        static double xscale;
+        static double yscale;
+
+        Context() {
+            double x = map.bounds.maxlon - map.bounds.minlon;
+            double y = (map.bounds.maxlat - map.bounds.minlat) / Math.cos((map.bounds.maxlat + map.bounds.minlat) / 2.0 );
+            if (x > y) {
+                xscale = (4096.0 * x / y) / x;
+                yscale = 4096.0 / (map.bounds.maxlat - map.bounds.minlat);
+            } else {
+                xscale = 4096.0 / x;
+                yscale = (4096.0 * y / x) / (map.bounds.maxlat - map.bounds.minlat);
+            }
+            mile = yscale / (Math.toDegrees(y) * 60.0);
+        }
+
+        @Override
+        public Point2D getPoint(Snode coord) {
+            double x = (coord.lon - map.bounds.minlon) * xscale;
+            double y = (map.bounds.maxlat - coord.lat) * yscale;
+            return new Point2D.Double(x, y);
+        }
+
+        @Override
+        public double mile(Feature feature) {
+            return mile;
+        }
+
+        @Override
+        public boolean clip() {
+            return true;
+        }
+
+        @Override
+        public int grid() {
+            return 5;
+        }
+
+        @Override
+        public Color background(S57map map) {
+            if (map.features.containsKey(Obj.COALNE)) {
+                for (Feature feature : map.features.get(Obj.COALNE)) {
+                    if (feature.geom.prim == Pflag.POINT) {
+                        break;
+                    }
+                    GeomIterator git = map.new GeomIterator(feature.geom);
+                    git.nextComp();
+                    while (git.hasEdge()) {
+                        git.nextEdge();
+                        while (git.hasNode()) {
+                            Snode node = git.next();
+                            if (node == null)
+                                continue;
+                            if ((node.lat >= map.bounds.minlat) && (node.lat <= map.bounds.maxlat)
+                                    && (node.lon >= map.bounds.minlon) && (node.lon <= map.bounds.maxlon)) {
+                                return Symbols.Gdries;
+                            }
+                        }
+                    }
+                }
+                return Symbols.Yland;
+            } else {
+                if (map.features.containsKey(Obj.ROADWY) || map.features.containsKey(Obj.RAILWY)
+                        || map.features.containsKey(Obj.LAKARE) || map.features.containsKey(Obj.RIVERS) || map.features.containsKey(Obj.CANALS)) {
+                    return Symbols.Yland;
+                } else {
+                    return Symbols.Gdries;
+                }
+            }
+        }
+
+        @Override
+        public RuleSet ruleset() {
+            return RuleSet.ALL;
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        if (args.length < 4) {
+            System.err.println("Usage: java -jar jchart.jar <osm data file> <zoom> <scale> <output image file> [<bounds (S W N E)>]");
+            System.exit(-1);
+        }
+        File in = new File(args[0]);
+        zoom = Integer.parseInt(args[1]);
+        map = new S57map(false);
+        S57osm.OSMmap(in, map, false);
+        if (args.length >= 8) {
+            map.bounds.minlat = Math.toRadians(Double.parseDouble(args[4]));
+            map.bounds.minlon = Math.toRadians(Double.parseDouble(args[5]));
+            map.bounds.maxlat = Math.toRadians(Double.parseDouble(args[6]));
+            map.bounds.maxlon = Math.toRadians(Double.parseDouble(args[7]));
+        }
+        if ((map.bounds.minlat == Math.toRadians(90)) || (map.bounds.minlon == Math.toRadians(180)) ||
+            (map.bounds.maxlat == Math.toRadians(-90)) || (map.bounds.maxlon == Math.toRadians(-180))) {
+            System.err.println("Invalid map bounds");
+            System.exit(-1);
+        }
+        context = new Context();
+        Point2D size = context.getPoint(new Snode(map.bounds.minlat, map.bounds.maxlon));
+        BufferedImage img = new BufferedImage((int)size.getX(), (int)size.getY(), BufferedImage.TYPE_INT_ARGB);
+        String[] ext = args[3].split("\\.");
+        if (ext[1].equalsIgnoreCase("png")) {
+            Graphics2D g2 = img.createGraphics();
+            Renderer.reRender(g2, new Rectangle((int) size.getX(), (int) size.getY()), zoom, Double.parseDouble(args[2]), map, context);
+            
+            //Renderer.labelText("000", new Font("Arial", Font.PLAIN, 20), Color.red);
+            try {
+                ImageIO.write(img, "png", new File(args[3]));
+            } catch (Exception e) {
+                System.err.println("PNG write Exception");
+            }
+        } else if (ext[1].equalsIgnoreCase("svg")) {
+            DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
+            String svgNS = "http://www.w3.org/2000/svg";
+            Document document = domImpl.createDocument(svgNS, "svg", null);
+            SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
+            svgGenerator.setSVGCanvasSize(new Dimension((int) size.getX(), (int) size.getY()));
+            Renderer.reRender(svgGenerator, new Rectangle((int) size.getX(), (int) size.getY()), 16, Double.parseDouble(args[2]), map, context);
+            boolean useCSS = true;
+            Writer out = null;
+            try {
+                out = new OutputStreamWriter(new FileOutputStream(args[3]), "UTF-8");
+            } catch (IOException e1) {
+                System.err.println("SVG file Exception");
+            }
+            try {
+                svgGenerator.stream(out, useCSS);
+            } catch (SVGGraphics2DIOException e) {
+                System.err.println("SVG write Exception");
+            }
+        } else {
+            System.err.println("Output file not PNG nor SVG");
+        }
+        System.exit(0);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/jicons/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jicons/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jicons/build.xml	(revision 36424)
@@ -0,0 +1,38 @@
+<project name="jicons" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./jicons.jar"/>
+  <property name="batik.dir" value="../libs/"/>
+  <path id="classpath">
+    <fileset dir="${batik.dir}" includes="**/batik*.jar"/>
+  </path>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source " >
+    <javac includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}" classpathref="classpath" encoding="UTF-8" />
+  </target>
+
+  <target name="dist" depends="compile" description="generate the distribution" >
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <manifest>
+        <attribute name="Main-Class" value="jicons.Jicons"/>
+        <attribute name="Class-Path" value="$jarfile"/>
+      </manifest>
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-svggen-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-dom-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-util-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-awt-util-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-ext-1.8.jar" />
+      <zipgroupfileset dir="${batik.dir}" includes="**/batik-xml-1.8.jar" />
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up" >
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/jicons/examples.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jicons/examples.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jicons/examples.xml	(revision 36424)
@@ -0,0 +1,38 @@
+<icons>
+  <icon width="100" height="100" x="50" y="80" scale="0.25" file="red_pillar" format="PNG" >
+    <tag k="seamark:type" v="buoy_lateral" />
+    <tag k="seamark:buoy_lateral:shape" v="pillar" />
+    <tag k="seamark:buoy_lateral:colour" v="red" />
+    <tag k="seamark:topmark:colour" v="red" />
+    <tag k="seamark:topmark:shape" v="cylinder" />
+  </icon>
+  <icon width="1000" height="200" scale="1.0" file="waverider" format="SVG" >
+    <tag k="seamark:type" v="buoy_special_purpose" />
+    <tag k="seamark:buoy_special_purpose:shape" v="spherical" />
+    <tag k="seamark:buoy_special_purpose:colour" v="yellow" />
+    <tag k="seamark:buoy_special_purpose:purpose" v="odas" />
+    <tag k="seamark:light:colour" v="yellow" />
+    <tag k="seamark:light:character" v="Fl" />
+    <tag k="seamark:light:group" v="5" />
+    <tag k="seamark:light:period" v="20" />
+    <tag k="seamark:name" v="Hornsea Waverider" />
+  </icon>
+  <icon width="200" height="200" scale="0.5" file="hib" format="PNG" >
+    <tag k="seamark:type" v="beacon_special_purpose" />
+    <tag k="seamark:beacon_special_purpose:shape" v="stake" />
+    <tag k="seamark:topmark:shape" v="triangle, point up" />
+    <tag k="seamark:topmark:status" v="illuminated" />
+  </icon>
+  <icon width="100" height="100" scale="0.5" file="floodlight" format="PNG" >
+    <tag k="seamark:type" v="light" />
+    <tag k="seamark:light:category" v="floodlight" />
+  </icon>
+  <icon width="100" height="150" scale="0.5" file="beacon" format="PNG" >
+    <tag k="seamark:type" v="beacon_lateral" />
+    <tag k="seamark:beacon_lateral:shape" v="stake" />
+    <tag k="seamark:light:category" v="floodlight" />
+    <tag k="seamark:topmark:shape" v="arrow" />
+    <tag k="seamark:topmark:status" v="illuminated" />
+    <tag k="seamark:topmark:orientation" v="45" />
+  </icon>
+</icons>
Index: /applications/editors/josm/plugins/SeaChart/jicons/src/jicons/Jicons.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jicons/src/jicons/Jicons.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jicons/src/jicons/Jicons.java	(revision 36424)
@@ -0,0 +1,229 @@
+// License: GPL. For details, see LICENSE file.
+package jicons;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+import javax.imageio.ImageIO;
+
+import org.apache.batik.dom.GenericDOMImplementation;
+import org.apache.batik.svggen.SVGGraphics2D;
+import org.apache.batik.svggen.SVGGraphics2DIOException;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+
+import render.ChartContext;
+import render.Renderer;
+import s57.S57map;
+import s57.S57map.Feature;
+import s57.S57map.Snode;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Jicons {
+    private Jicons() {
+        // Hide default constructor for utilities classes
+    }
+
+    static int x = 0;
+    static int y = 0;
+    static int w = 0;
+    static int h = 0;
+    static double s = 0;
+
+    public static void main(String[] args) throws IOException {
+        Context context;
+        S57map map = null;
+        BufferedReader in;
+        int line = 0;
+        String format = "";
+        String file = "";
+        String k = "";
+        String v = "";
+
+        BufferedImage img;
+        Graphics2D g2;
+        boolean inIcons = false;
+        boolean inIcon = false;
+
+        if (args.length < 2) {
+            System.err.println("Usage: java -jar jicons.jar icon_definition_file icons_directory");
+            System.exit(-1);
+        }
+        in = new BufferedReader(new FileReader(args[0]));
+
+        context = new Context();
+        String ln;
+        while ((ln = in.readLine()) != null) {
+            line++;
+            if (inIcons) {
+                if (inIcon) {
+                    if (ln.contains("</icon")) {
+                        inIcon = false;
+                        map.tagsDone(0);
+                        // generate icon file
+                        switch (format) {
+                        case "PNG":
+                            img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+                            g2 = img.createGraphics();
+                            Renderer.reRender(g2, new Rectangle(x, y, w, h), 16, s / Renderer.symbolScale[16], map, context);
+                            try {
+                                ImageIO.write(img, "png", new File(args[1] + file + ".png"));
+                            } catch (Exception e) {
+                                System.err.println("Line " + line + ": PNG write Exception");
+                            }
+                            System.err.println(file + ".png");
+                            break;
+                        case "SVG":
+                            DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
+                            String svgNS = "http://www.w3.org/2000/svg";
+                            Document document = domImpl.createDocument(svgNS, "svg", null);
+                            SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
+                            svgGenerator.setSVGCanvasSize(new Dimension(w, h));
+                            Renderer.reRender(svgGenerator, new Rectangle(x, y, w, h), 16, s / Renderer.symbolScale[16], map, context);
+                            boolean useCSS = true;
+                            Writer out = null;
+                            try {
+                                out = new OutputStreamWriter(new FileOutputStream(args[1] + file + ".svg"), "UTF-8");
+                            } catch (IOException e1) {
+                                System.err.println("Line " + line + ": SVG file Exception");
+                            }
+                            try {
+                                svgGenerator.stream(out, useCSS);
+                            } catch (SVGGraphics2DIOException e) {
+                                System.err.println("Line " + line + ": SVG write Exception");
+                            }
+                            System.err.println(file + ".svg");
+                            break;
+                        }
+                    } else if (ln.contains("<tag")) {
+                        k = v = "";
+                        String[] token = ln.split("k=");
+                        k = token[1].split("[\"\']")[1];
+                        token = token[1].split("v=");
+                        v = token[1].split("[\"\']")[1];
+                        if (k.isEmpty()) {
+                            System.err.println("Line " + line + ": No key in tag");
+                            System.exit(-1);
+                        }
+                        if (v.isEmpty()) {
+                            System.err.println("Line " + line + ": No value in tag");
+                            System.exit(-1);
+                        }
+                        map.addTag(k, v);
+                    }
+                } else if (ln.contains("<icon")) {
+                    inIcon = true;
+                    h = w = x = y = -1;
+                    s = 0;
+                    file = format = "";
+                    map = new S57map(true);
+                    map.addNode(0, 0, 0);
+                    for (String token : ln.split("[ ]+")) {
+                        if (token.matches("^width=.+")) {
+                            w = Integer.parseInt(token.split("[\"\']")[1]);
+                        } else if (token.matches("^height=.+")) {
+                            h = Integer.parseInt(token.split("[\"\']")[1]);
+                        } else if (token.matches("^x=.+")) {
+                            x = Integer.parseInt(token.split("[\"\']")[1]);
+                        } else if (token.matches("^y=.+")) {
+                            y = Integer.parseInt(token.split("[\"\']")[1]);
+                        } else if (token.matches("^scale=.+")) {
+                            s = Double.parseDouble(token.split("[\"\']")[1]);
+                        } else if (token.matches("^file=.+")) {
+                            file = (token.split("[\"\']")[1]);
+                        } else if (token.matches("^format=.+")) {
+                            format = (token.split("[\"\']")[1]);
+                        }
+                    }
+                    if (file.isEmpty()) {
+                        System.err.println("Line " + line + ": No filename");
+                        System.exit(-1);
+                    }
+                    if (format.isEmpty()) {
+                        System.err.println("Line " + line + ": No format");
+                        System.exit(-1);
+                    }
+                    if ((h < 0) && (w < 0)) {
+                        System.err.println("Line " + line + ": No icon size");
+                        System.exit(-1);
+                    }
+                    if (w < 0) {
+                        w = h;
+                    }
+                    if (h < 0) {
+                        h = w;
+                    }
+                    if (x < 0) {
+                        x = w / 2;
+                    }
+                    if (y < 0) {
+                        y = h / 2;
+                    }
+                    if (s == 0) {
+                        s = 1;
+                    }
+                } else if (ln.contains("</icons")) {
+                    inIcons = false;
+                    break;
+                }
+            } else if (ln.contains("<icons")) {
+                inIcons = true;
+            }
+        }
+        in.close();
+        System.err.println("Finished");
+        System.exit(0);
+    }
+
+    static class Context implements ChartContext {
+
+        @Override
+        public Point2D getPoint(Snode coord) {
+            return new Point2D.Double(x, y);
+        }
+
+        @Override
+        public double mile(Feature feature) {
+            return Math.min(w, h);
+        }
+
+        @Override
+        public boolean clip() {
+            return false;
+        }
+
+        @Override
+        public int grid() {
+            return 0;
+        }
+
+        @Override
+        public Color background(S57map map) {
+            return new Color(0, true);
+        }
+
+        @Override
+        public RuleSet ruleset() {
+            return RuleSet.ALL;
+        }
+
+		@Override
+		public Chart chart() {
+			// TODO Auto-generated method stub
+			return null;
+		}
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/josmtos57/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/josmtos57/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/josmtos57/build.xml	(revision 36424)
@@ -0,0 +1,28 @@
+<project name="josmtos57" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./josmtos57.jar"/>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source">
+    <javac includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}"/>
+  </target>
+
+  <target name="dist" depends="compile" description="generate the distribution">
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <manifest>
+        <attribute name="Main-Class" value="josmtos57.Josmtos57"/>
+        <attribute name="Class-Path" value="${jarfile}"/>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up">
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/josmtos57/src/josmtos57/Josmtos57.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/josmtos57/src/josmtos57/Josmtos57.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/josmtos57/src/josmtos57/Josmtos57.java	(revision 36424)
@@ -0,0 +1,159 @@
+// License: GPL. For details, see LICENSE file.
+package josmtos57;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Scanner;
+import java.util.zip.CRC32;
+
+import s57.S57dat;
+import s57.S57dat.Fparams;
+import s57.S57dat.S57field;
+import s57.S57enc;
+import s57.S57map;
+import s57.S57osm;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Josmtos57 {
+    private Josmtos57() {
+        // Hide default constructor for utilities classes
+    }
+
+    // http://opendatacommons.org/licenses/odbl/1-0/
+
+    /*
+    URL website = new URL("http://www.website.com/information.asp");
+    try (InputStream in = website.openStream()) { Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING); }
+     */
+
+    /*
+     * To do:
+     * 1. Geometry truncation at cell boundary.
+     * 2. Geometry validation/correction to comply with S57 limitations.
+     * 3. Improvements in mapping of OSM features to S57 objects.
+     */
+
+    static byte[] header = {
+            // CHECKSTYLE.OFF: LineLength
+            '0', '0', '2', '6', '2', '3', 'L', 'E', '1', ' ', '0', '9', '0', '0', '0', '7', '3', ' ', ' ', ' ', '6', '6', '0', '4', '0', '0', '0', '0', '0', '0', '0', '0',
+            '1', '9', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '4', '8', '0', '0', '0', '0', '1', '9', 'C', 'A', 'T', 'D', '0', '0', '0', '1',
+            '2', '2', '0', '0', '0', '0', '6', '7', 0x1e, '0', '0', '0', '0', ';', '&', ' ', ' ', ' ', 0x1f, '0', '0', '0', '1', 'C', 'A', 'T', 'D', 0x1e, '0', '1', '0', '0',
+            ';', '&', ' ', ' ', ' ', 'I', 'S', 'O', '/', 'I', 'E', 'C', ' ', '8', '2', '1', '1', ' ', 'R', 'e', 'c', 'o', 'r', 'd', ' ', 'I', 'd', 'e', 'n', 't', 'i', 'f',
+            'i', 'e', 'r', 0x1f, 0x1f, '(', 'I', '(', '5', ')', ')', 0x1e, '1', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'C', 'a', 't', 'a', 'l', 'o', 'g', 'u', 'e', ' ', 'D',
+            'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', ' ', 'F', 'i', 'e', 'l', 'd', 0x1f, 'R', 'C', 'N', 'M', '!', 'R', 'C', 'I', 'D', '!', 'F', 'I', 'L', 'E', '!', 'L', 'F',
+            'I', 'L', '!', 'V', 'O', 'L', 'M', '!', 'I', 'M', 'P', 'L', '!', 'S', 'L', 'A', 'T', '!', 'W', 'L', 'O', 'N', '!', 'N', 'L', 'A', 'T', '!', 'E', 'L', 'O', 'N',
+            '!', 'C', 'R', 'C', 'S', '!', 'C', 'O', 'M', 'T', 0x1f, '(', 'A', '(', '2', ')', ',', 'I', '(', '1', '0', ')', ',', '3', 'A', ',', 'A', '(', '3', ')', ',', '4',
+            'R', ',', '2', 'A', ')', 0x1e,
+            '0', '0', '1', '0', '1', ' ', 'D', ' ', ' ', ' ', ' ', ' ', '0', '0', '0', '5', '3', ' ', ' ', ' ', '5', '5', '0', '4',
+            '0', '0', '0', '1', '0', '0', '0', '0', '6', '0', '0', '0', '0', '0', 'C', 'A', 'T', 'D', '0', '0', '0', '4', '2', '0', '0', '0', '0', '6', 0x1e,
+            '0', '0', '0', '0', '0', 0x1e, 'C', 'D', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', 'C', 'A', 'T', 'A', 'L', 'O', 'G', '.', '0', '3', '1', 0x1f,
+            0x1f, 'V', '0', '1', 'X', '0', '1', 0x1f, 'A', 'S', 'C', 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1e
+            // CHECKSTYLE.ON: LineLength
+    };
+
+    static File in;
+    static FileOutputStream out;
+    static S57map map;
+    static byte[] buf;
+    static HashMap<String, String> meta;
+    static ArrayList<Fparams> fields;
+    static byte[] record;
+
+    public static void main(String[] args) throws IOException {
+
+        map = new S57map(false);
+        int idx = 0;
+
+        if (args.length < 4) {
+            System.err.println("Usage: java -jar josmtos57.jar OSM_filename meta_data_filename S57_ENC_ROOT_directory S57_filename");
+            System.exit(-1);
+        }
+        try {
+            Scanner min = new Scanner(new FileInputStream(args[1]));
+            meta = new HashMap<>();
+            meta.put("FILE", args[3]);
+            while (min.hasNext()) {
+                String[] tokens = min.next().split("=");
+                if (tokens.length >= 2)
+                    meta.put(tokens[0], tokens[1].split("[ #]")[0]);
+            }
+            min.close();
+        } catch (IOException e) {
+            System.err.println("Meta data file: " + e.getMessage());
+            System.exit(-1);
+        }
+        in = new File(args[0]);
+        try {
+            S57osm.OSMmap(in, map, false);
+        } catch (Exception e) {
+            System.err.println("Input data error");
+            System.exit(-1);
+        }
+
+        try {
+            buf = new byte[5242880];
+            idx = S57enc.encodeChart(map, meta, buf);
+        } catch (IndexOutOfBoundsException e) {
+            System.err.println("Output file too big (limit 5 MB) - try smaller areas");
+            System.exit(-1);
+        } catch (UnsupportedEncodingException e) {
+            System.err.println("Input data error" + e.getMessage());
+            System.exit(-1);
+        }
+
+        CRC32 crc = new CRC32();
+        crc.update(buf, 0, idx);
+        try {
+            File file = new File(args[2] + args[3]);
+            if (file.exists()) file.delete();
+            out = new FileOutputStream(file, false);
+            out.write(buf, 0, idx);
+        } catch (IOException e) {
+            System.err.println("Output file: " + e.getMessage());
+            System.exit(-1);
+        }
+        out.close();
+
+        buf = new byte[header.length];
+        System.arraycopy(header, 0, buf, 0, header.length);
+        idx = header.length;
+        int recs = 2;
+        fields = new ArrayList<>();
+        fields.add(new Fparams(S57field.CATD, new Object[]{"CD", recs, args[3], "", "V01X01", "BIN", Math.toDegrees(map.bounds.minlat),
+                Math.toDegrees(map.bounds.minlon), Math.toDegrees(map.bounds.maxlat), Math.toDegrees(map.bounds.maxlon),
+                String.format("%08X", crc.getValue()), ""}));
+        record = S57dat.encRecord(String.valueOf(recs++), fields);
+        buf = Arrays.copyOf(buf, (buf.length + record.length));
+        System.arraycopy(record, 0, buf, idx, record.length);
+        idx += record.length;
+
+        try {
+            File file = new File(args[2] + "CATALOG.031");
+            if (file.exists()) file.delete();
+            out = new FileOutputStream(file, false);
+            out.write(buf, 0, idx);
+        } catch (IOException e) {
+            System.err.println("Catalogue file: " + e.getMessage());
+            System.exit(-1);
+        }
+        out.close();
+
+        //        String[] dir = (new File(args[2]).list());
+        //        for (String item : dir) {
+        //            System.err.println(item);
+        //        }
+
+        System.err.println("Finished");
+    }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/jplotter/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jplotter/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jplotter/build.xml	(revision 36424)
@@ -0,0 +1,28 @@
+<project name="jplotter" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./jplotter.jar"/>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source " >
+    <javac includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}"/>
+  </target>
+
+  <target name="dist" depends="compile" description="generate the distribution" >
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <manifest>
+        <attribute name="Main-Class" value="jplotter.Jplotter"/>
+        <attribute name="Class-Path" value="$jarfile"/>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up" >
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/jplotter/src/jplotter/Jplotter.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jplotter/src/jplotter/Jplotter.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jplotter/src/jplotter/Jplotter.java	(revision 36424)
@@ -0,0 +1,36 @@
+// License: GPL. For details, see LICENSE file.
+package jplotter;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+
+import javax.swing.BorderFactory;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Jplotter {
+    private Jplotter() {
+        // Hide default constructor for utilities classes
+    }
+
+    public static void main(String[] args) {
+        JFrame frame = new JFrame("Chart Plotter");
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.setLayout(null);
+        Container c = frame.getContentPane();
+
+        JPanel map = new JPanel(new BorderLayout());
+        map.setSize(600, 600);
+        map.setLocation(50, 35);
+        map.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createRaisedBevelBorder(), BorderFactory.createLoweredBevelBorder()));
+        map.setLayout(null);
+        map.setVisible(true);
+        c.add(map);
+
+        frame.setSize(700, 700);
+        frame.setVisible(true);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/jrender/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jrender/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jrender/build.xml	(revision 36424)
@@ -0,0 +1,28 @@
+<project name="jrender" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./jrender.jar"/>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source " >
+    <javac includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}" encoding="UTF-8" />
+  </target>
+
+  <target name="dist" depends="compile" description="generate the distribution" >
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <manifest>
+        <attribute name="Main-Class" value="jrender.Jrender"/>
+        <attribute name="Class-Path" value="$jarfile"/>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up" >
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/jrender/src/jrender/Jrender.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jrender/src/jrender/Jrender.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jrender/src/jrender/Jrender.java	(revision 36424)
@@ -0,0 +1,194 @@
+// License: GPL. For details, see LICENSE file.
+package jrender;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import javax.imageio.ImageIO;
+
+import render.ChartContext;
+import render.Renderer;
+import s57.S57map;
+import s57.S57map.Feature;
+import s57.S57map.Snode;
+import s57.S57osm;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Jrender {
+    private Jrender() {
+        // Hide default constructor for utilities classes
+    }
+
+    static String srcdir;
+    static String dstdir;
+    static int xtile;
+    static int ytile;
+    static int zoom;
+    static ArrayList<String> send;
+    static HashMap<String, Boolean> deletes;
+    static Context context;
+    static S57map map;
+    static int empty;
+
+    static class Context implements ChartContext {
+
+        static double top;
+        static double mile;
+
+        Context() {
+            top = (1.0 - Math.log(Math.tan(map.bounds.maxlat) + 1.0 / Math.cos(map.bounds.maxlat)) / Math.PI)
+                    / 2.0 * 256.0 * 4096.0 * Math.pow(2, (zoom - 12));
+            mile = (2 * ((zoom < 12) ? (256 / (int) (Math.pow(2, (11 - zoom)))) : 256) + 256)
+                    / ((Math.toDegrees(map.bounds.maxlat) - Math.toDegrees(map.bounds.minlat)) * 60);
+        }
+
+        @Override
+        public Point2D getPoint(Snode coord) {
+            double x = (Math.toDegrees(coord.lon) - Math.toDegrees(map.bounds.minlon)) * 256.0 * 2048.0 * Math.pow(2, (zoom - 12)) / 180.0;
+            double y = ((1.0 - Math.log(Math.tan(coord.lat) + 1.0 / Math.cos(coord.lat)) / Math.PI)
+                    / 2.0 * 256.0 * 4096.0 * Math.pow(2, (zoom - 12))) - top;
+            return new Point2D.Double(x, y);
+        }
+
+        @Override
+        public double mile(Feature feature) {
+            return mile;
+        }
+
+        @Override
+        public boolean clip() {
+            return false;
+        }
+
+        @Override
+        public int grid() {
+            return 0;
+        }
+
+        @Override
+        public Color background(S57map map) {
+            return new Color(0, true);
+        }
+
+        @Override
+        public RuleSet ruleset() {
+            return RuleSet.SEAMARK;
+        }
+
+		@Override
+		public Chart chart() {
+			// TODO Auto-generated method stub
+			return null;
+		}
+    }
+
+    static void tile(int z, int s, int xn, int yn) throws IOException {
+        int border = (z < 12) ? (256 / (int) (Math.pow(2, (11 - zoom)))) : 256;
+        int scale = (int) Math.pow(2, z - 12);
+        int xdir = (scale > 0) ? (scale * xtile) + xn : xtile;
+        int ynam = (scale > 0) ? (scale * ytile) + yn : ytile;
+        BufferedImage img = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB);
+        Graphics2D g2 = img.createGraphics();
+        g2.scale(s, s);
+        g2.translate(-(border + (xn * 256 / s)), -(border + (yn * 256 / s)));
+        Renderer.reRender(g2, new Rectangle(256, 256), z, 1.0 * Math.pow(2, (zoom - 12)), map, context);
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ImageIO.write(img, "png", bos);
+        if (bos.size() > empty) {
+            String dstnam = dstdir + z + "/" + xdir + "/" + ynam + ".png";
+            deletes.remove(dstnam);
+            send.add("put " + dstnam + " tiles/" + z + "/" + xdir + "/" + ynam + ".png");
+            File ofile = new File(dstdir + "/" + z + "/" + xdir + "/");
+            ofile.mkdirs();
+            FileOutputStream fos = new FileOutputStream(dstdir + "/" + z + "/" + xdir + "/" + ynam + ".png");
+            bos.writeTo(fos);
+            fos.close();
+            if (send.size() > 100) {
+                PrintWriter writer = new PrintWriter(srcdir + z + "-" + xdir + "-" + ynam + ".send", "UTF-8");
+                for (String str : send) {
+                    writer.println(str);
+                }
+                writer.close();
+                send = new ArrayList<>();
+            }
+        }
+        if ((z >= 12) && (z < 19) && ((z < 16) || (bos.size() > empty))) {
+            for (int x = 0; x < 2; x++) {
+                for (int y = 0; y < 2; y++) {
+                    tile((z + 1), (s * 2), (xn * 2 + x), (yn * 2 + y));
+                }
+            }
+        }
+    }
+
+    static void clean(int z, int xn, int yn) throws Exception {
+        int scale = (int) Math.pow(2, z - 12);
+        int xdir = (scale * xtile) + xn;
+        int ynam = (scale * ytile) + yn;
+        String delnam = dstdir + z + "/" + xdir + "/" + ynam + ".png";
+        File delfile = new File(delnam);
+        if (delfile.exists()) {
+            deletes.put(delnam, true);
+            delfile.delete();
+        }
+        if ((z < 19)) {
+            for (int x = 0; x < 2; x++) {
+                for (int y = 0; y < 2; y++) {
+                    clean((z + 1), (xn * 2 + x), (yn * 2 + y));
+                }
+            }
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        if (args.length < 5) {
+            System.err.println("Usage: java -jar jrender.jar <osm source directory> <tile directory> <zoom> <xtile> <ytile>");
+            System.exit(-1);
+        }
+        srcdir = args[0];
+        dstdir = args[1];
+        zoom = Integer.parseInt(args[2]);
+        xtile = Integer.parseInt(args[3]);
+        ytile = Integer.parseInt(args[4]);
+        send = new ArrayList<>();
+        deletes = new HashMap<>();
+        File in = new File(srcdir + xtile + "-" + ytile + "-" + zoom + ".osm");
+        map = new S57map(true);
+        S57osm.OSMmap(in, map, false);
+        context = new Context();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ImageIO.write(new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB), "png", bos);
+        empty = bos.size();
+        if (zoom == 12) {
+            clean(12, 0, 0);
+        }
+        tile(zoom, 1, 0, 0);
+        if ((send.size() > 0) || (deletes.size() > 0)) {
+        	PrintWriter writer = new PrintWriter(srcdir + zoom + "-" + xtile + "-" + ytile + ".send", "UTF-8");
+        	if (send.size() > 0) {
+        		for (String str : send) {
+        			writer.println(str);
+            }
+          }
+          if (deletes.size() > 0) {
+          	for (String del : deletes.keySet()) {
+          		writer.println("rm " + del);
+            }
+          }
+          writer.close();
+        }
+        System.exit(0);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/jrenderpgsql/README
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jrenderpgsql/README	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jrenderpgsql/README	(revision 36424)
@@ -0,0 +1,40 @@
+jrenderpgsql
+------------
+
+This is a modified version of "jrender".
+
+Instead of loading .osm files from a pre-defined directory structure
+like "jrender" does, this program issues an SQL query and fetches
+seamark data from PostGIS, where it is expected to have been imported
+with a standard osm2pgsql import using the "--hstore" flag.
+
+It then generates an XML document from the PostGIS data which is
+good enough to be processed by the S57 library routines as usual.
+
+
+BUILDING
+--------
+
+You might have to adapt some paths in the build.xml for the PostGIS
+and PostgreSQL JDBC drivers to be found.
+
+
+RUNNING
+-------
+
+java -jar jrenderpgsql.jar "jdbc:postgresql:///mydatabae?user=myuser&password=mypassword" 14 8663 5304 tile.png 
+
+Optional command line flags --debug (outputs the OSM XML), 
+and --tilesize and --scale (use --tilesize 512 --scale 2.0 
+for "retina" tiles)
+
+
+STATUS
+------
+
+Seems to work at least for z12 and larger, but has received little 
+testing.
+
+Author: Frederik Ramm. 
+License: GPL v2.0 or later
+
Index: /applications/editors/josm/plugins/SeaChart/jrenderpgsql/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jrenderpgsql/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jrenderpgsql/build.xml	(revision 36424)
@@ -0,0 +1,30 @@
+<project name="jrenderpgsql" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./jrenderpgsql.jar"/>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source " >
+    <javac classpath="/usr/share/java/postgis-jdbc-2.2.1.jar:/usr/share/java/postgresql.jar" includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}" encoding="UTF-8" />
+  </target>
+
+  <target name="dist" depends="compile" description="generate the distribution" >
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <zipgroupfileset dir="/usr/share/java" includes="postgresql.jar" />
+      <zipgroupfileset dir="/usr/share/java" includes="postgis-jdbc-2.2.1.jar" />
+      <manifest>
+        <attribute name="Main-Class" value="jrenderpgsql.JrenderPgsql"/>
+        <attribute name="Class-Path" value="$jarfile"/>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up" >
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/jrenderpgsql/src/jrenderpgsql/JrenderPgsql.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jrenderpgsql/src/jrenderpgsql/JrenderPgsql.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jrenderpgsql/src/jrenderpgsql/JrenderPgsql.java	(revision 36424)
@@ -0,0 +1,456 @@
+// License: GPL. For details, see LICENSE file.
+package jrenderpgsql;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.StringReader;
+import java.io.ByteArrayOutputStream;
+import java.io.FileOutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import javax.imageio.ImageIO;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import render.ChartContext;
+import render.Renderer;
+import s57.S57map;
+import s57.S57map.Feature;
+import s57.S57map.Snode;
+import s57.S57osm;
+
+import org.postgis.Point;
+import org.postgis.Geometry;
+import org.postgis.LineString;
+import org.postgis.Polygon;
+import org.postgis.MultiPolygon;
+import org.postgis.LinearRing;
+import org.postgis.PGgeometry;
+
+/**
+ * @author Frederik Ramm
+ * Based on Jrender by Malcom Herring
+ */
+public final class JrenderPgsql {
+    private JrenderPgsql() {
+        // Hide default constructor for utilities classes
+    }
+
+    public final static double RADIUS = 6378137.0;
+    public final static double MERCATOR_WIDTH  = 40075016.685578488;
+    public final static double MERCATOR_OFFSET = 20037508.342789244;
+
+    static String dburl;
+    static String outfile;
+    static int xtile;
+    static int ytile;
+    static int zoom;
+    static S57map map;
+    static int empty;
+
+    static StringBuilder nodebuf;
+    static StringBuilder waybuf;
+    static int nid;
+    static int wid;
+
+    static double scale = 1.0;
+    static double tilesize = 256; 
+    static double border = 256;
+
+    static double minlon = 999.0;
+    static double minlat = 999.0;
+    static double maxlat = -999.0;
+    static double maxlon = -999.0;
+
+    static boolean debug = false;
+
+    static HashMap<Point,Integer> nodes = new HashMap<Point, Integer>();
+
+    /**
+     *  helper for adding a <node> tag to the pseudo OSM XML
+     *  @param p the node coordinates
+     *  @param close whether to close the XML tag or not
+     *  @returns ID of the node created (re-uses IDs at same location)
+     */
+    private static int addnode(Point p, boolean close)
+    {
+        if (close)
+        {
+            Integer existing = nodes.get(p);
+            if (existing != null) return existing.intValue();
+        }
+
+        double lat = p.getY();
+        double lon = p.getX();
+        if (lat > maxlat) maxlat = lat;
+        if (lat < minlat) minlat = lat;
+        if (lon > maxlon) maxlon = lon;
+        if (lon < minlon) minlon = lon;
+        nodebuf.append("<node id=\"");
+        nodebuf.append(++nid);
+        nodebuf.append("\" lat=\"");
+        nodebuf.append(p.getY());
+        nodebuf.append("\" lon=\"");
+        nodebuf.append(p.getX());
+        nodebuf.append("\" version=\"1\" user=\"1\" uid=\"1\" changeset=\"1\" timestamp=\"1980-01-01T00:00:00Z\"");
+        if (close) nodebuf.append("/");
+        nodebuf.append(">\n");
+        nodes.put(p, new Integer(nid));
+        return nid;
+    }
+
+    private static void addpoly(Polygon po, String table, String osmid) 
+    {
+        if (po.numRings() > 1)
+        {
+            System.err.println("warning: polygons with holes not supported (" + table + " id=" + osmid + ")");
+        }
+        LinearRing lr = (LinearRing) po.getRing(0);
+        waybuf.append("<way id=\"");
+        waybuf.append(++wid);
+        waybuf.append("\" version=\"1\" user=\"1\" uid=\"1\" changeset=\"1\" timestamp=\"1980-01-01T00:00:00Z\">\n");
+        for (int i=0; i < lr.numPoints(); i++)
+        {
+            int n = addnode ((Point) lr.getPoint(i), true);
+            waybuf.append("<nd ref=\"" + n + "\" />\n");
+        }
+    }
+
+    /**
+     *  helper for adding a PostGIS geometry to pseudo OSM XML
+     *  @returns either the node or the way string buffer, depending on geom type
+     */
+    private static StringBuilder decode_geom(PGgeometry geom, String table, String osmid)
+    {
+        if (geom.getGeoType() == Geometry.POINT) 
+        {
+            addnode((Point) geom.getGeometry(), false);
+            return nodebuf;
+        }
+        else if (geom.getGeoType() == Geometry.LINESTRING)
+        {
+            LineString ls = (LineString) geom.getGeometry();
+            waybuf.append("<way id=\"");
+            waybuf.append(++wid);
+            waybuf.append("\" version=\"1\" user=\"1\" uid=\"1\" changeset=\"1\" timestamp=\"1980-01-01T00:00:00Z\">\n");
+            for (int i=0; i < ls.numPoints(); i++)
+            {
+                int n = addnode ((Point) ls.getPoint(i), true);
+                waybuf.append("<nd ref=\"" + n + "\" />\n");
+            }
+            return waybuf;
+        }
+        else if (geom.getGeoType() == Geometry.POLYGON)
+        {
+            addpoly((Polygon) geom.getGeometry(), table, osmid);
+            return waybuf;
+        }
+        else if (geom.getGeoType() == Geometry.MULTIPOLYGON)
+        {
+            MultiPolygon po = (MultiPolygon) geom.getGeometry();
+            for (Polygon p : po.getPolygons())
+            {
+                addpoly(p, table, osmid);
+            }
+            return waybuf;
+        }
+        
+        System.err.println("bad geo type: " + geom.getGeoType());
+        System.exit(-1);
+        return null;
+    }
+
+    /**
+     *  adds closing XML tag depending on geometry 
+     */
+    private static void finalize_geom(PGgeometry geom)
+    {
+        if (geom.getGeoType() == Geometry.POINT) 
+        {
+            nodebuf.append("</node>\n");
+        }
+        else if (geom.getGeoType() == Geometry.LINESTRING)
+        {
+            waybuf.append("</way>\n");
+        }
+        else if (geom.getGeoType() == Geometry.POLYGON)
+        {
+            waybuf.append("</way>\n");
+        }
+    }
+
+    /**
+     *  helper for escaping and writing a tag
+     */
+    private static void write_tag(StringBuilder buf, String k, String v)
+    {
+       buf.append("<tag k=\"" + k.replace("&", "&amp;").replace("\"", "&quot;") + "\" v=\"" + v.replace("&", "&amp;").replace("\"", "&quot;") + "\" />\n");
+    }
+
+    /**
+     * converts a radian latitude to spherical Mercator Y
+     */
+    public static double radlat2y(double aLat) 
+    {
+       return Math.log(Math.tan(Math.PI / 4 + aLat / 2)) * RADIUS;
+    }
+
+    /**
+     * converts a radian longitude to spherical Mercator X
+     */
+    public static double radlon2x(double aLong) 
+    {
+       return aLong * RADIUS;
+    }
+
+    public static void main(String[] args) throws Exception 
+    {
+
+        // parse command line
+        // ------------------
+
+        ArrayList<String> remain = new ArrayList<String>();
+
+        for (int i=0; i<args.length; i++) 
+        {
+            if (args[i].equals("--scale"))
+            {
+                scale = Double.parseDouble(args[++i]);
+            }
+            else if (args[i].equals("--tilesize"))
+            {
+                tilesize = Double.parseDouble(args[++i]);
+            }
+            else if (args[i].equals("--debug"))
+            {
+                debug = true;
+            }
+            else
+            {
+                remain.add(args[i]);
+            }
+        }
+
+        if (remain.size() < 5) 
+        {
+            System.err.println("Usage: java -jar jrenderpgsql.jar [--scale x] [--tilesize x] [--debug] <database connection string> <zoom> <xtile> <ytile> <outputfile>");
+            System.err.println("format of the database connection string: jdbc:postgresql:///dbname?user=myuser&password=mypwd");
+            System.exit(-1);
+        }
+
+        dburl = remain.get(0);
+        zoom = Integer.parseInt(remain.get(1));
+        xtile = Integer.parseInt(remain.get(2));
+        ytile = Integer.parseInt(remain.get(3));
+        outfile = remain.get(4);
+
+        nodebuf = new StringBuilder();
+        waybuf = new StringBuilder();
+
+        Connection c = null;
+        try 
+        {
+            Class.forName("org.postgresql.Driver");
+            c = DriverManager.getConnection(dburl);
+        } 
+        catch (Exception e) 
+        {
+            e.printStackTrace();
+            System.err.println(e.getClass().getName()+": "+e.getMessage());
+            System.exit(-1);
+        }
+
+        double pow = Math.pow(2, zoom);
+        border = (zoom < 12) ? (256 / (int) (Math.pow(2, (11 - zoom)))) : 256;
+        double border_merc = MERCATOR_WIDTH / 256 / pow * border;
+
+        // calculate spherical mercator bounds of the requested tile.
+
+        double west = (xtile) * MERCATOR_WIDTH / pow - MERCATOR_OFFSET;
+        double east = (xtile * 1.0 + tilesize / 256 / scale) * MERCATOR_WIDTH / pow - MERCATOR_OFFSET;
+        double north = (pow - ytile) * MERCATOR_WIDTH / pow - MERCATOR_OFFSET;
+        double south = (pow * 1.0 - ytile * 1.0 - tilesize / 256 / scale) * MERCATOR_WIDTH / pow - MERCATOR_OFFSET;
+
+        // request data from PostGIS
+        // -------------------------
+        // This assumes the given database has the usual osm2pgsql tables, 
+        // and a "tags" column (i.e. imported with --hstore). Caution, if
+        // the import was made with --hstore-match-only then not all
+        // seamarks will be present.
+
+        Statement stmt = c.createStatement();
+        for (String table : new String[] { "planet_osm_point", "planet_osm_line", "planet_osm_polygon" }) 
+        {
+            String query = "SELECT st_transform(way,4326) as mygeom, * FROM " 
+              + table + " WHERE tags?'seamark:type' AND way && " 
+              + "st_setsrid(st_makebox2d(st_makepoint(" + (west - border_merc) 
+              + "," + (south - border_merc) + "), st_makepoint(" 
+              + (east + border_merc) + "," + (north + border_merc) + ")),3857)";
+            if (debug) System.out.println(query);
+            ResultSet rs = stmt.executeQuery(query);
+
+            // analyse the result
+            // ------------------
+            // The result will contain of these columns:
+            // 1. the spherical mercator geometry column "way" which we ignore
+            // 2. the new geometry column "mygeom" which we use
+            // 3. the "tags" column which requires special treatment
+            // 4. lots of other, "normal" columns which we treat "normally"
+
+            ResultSetMetaData meta = rs.getMetaData();
+            int colCount = meta.getColumnCount();
+            int ogeomcol = 0;
+            int geomcol = 0;
+            int tagscol = 0;
+            int idcol = 0;
+            for (int i = 1; i<colCount; i++)
+            {
+                String n = meta.getColumnName(i);
+                if (n.equals("way")) {
+                    ogeomcol = i;
+                } else if (n.equals("tags")) {
+                    tagscol = i;
+                } else if (n.equals("osm_id")) {
+                    idcol = i;
+                } else if (n.equals("mygeom")) {
+                    geomcol = i;
+                }
+            }
+            if (geomcol == 0) 
+            {
+                System.err.println("no geometry column in table " + table + "\n");
+                System.exit(-1);
+            }
+            if (tagscol == 0) 
+            {
+                System.err.println("no tags column in table " + table + "\n");
+                System.exit(-1);
+            }
+
+            // read data 
+            // ---------
+            // for each row, write a geomtry to the output stream, and
+            // assemble its tags from the "normal" columns plus the "tags"
+            // column.
+
+            while (rs.next())
+            {
+                PGgeometry geom = (PGgeometry) rs.getObject(geomcol);
+                String osmid = (idcol> 0) ? rs.getString(idcol) : "nil";
+                StringBuilder currentbuf = decode_geom(geom, table, osmid);
+
+                for (int i = 1; i<colCount; i++)
+                {
+                    if (i==ogeomcol) continue;
+                    if (i==geomcol) continue;
+                    if (i==tagscol) continue;
+                    String k = meta.getColumnName(i);
+                    String v = rs.getString(i);
+                    if (v != null)
+                    {
+                        write_tag(currentbuf, k, v);
+                    }
+                }
+                PGHStore h = new PGHStore(rs.getString(tagscol));
+                for (Object k : h.keySet())
+                {
+                    write_tag(currentbuf, (String) k, (String) (h.get(k)));
+                }
+
+                finalize_geom(geom);
+            }
+        }
+
+        // done querying database. build pseudo OSM file
+        
+        StringBuilder combinedBuf = new StringBuilder();
+        combinedBuf.append("<osm version=\"0.6\">\n");
+
+        combinedBuf.append("<bounds minlon=\"");
+        combinedBuf.append(minlon);
+        combinedBuf.append("\" maxlon=\"");
+        combinedBuf.append(maxlon);
+        combinedBuf.append("\" minlat=\"");
+        combinedBuf.append(minlat);
+        combinedBuf.append("\" maxlat=\"");
+        combinedBuf.append(maxlat);
+        combinedBuf.append("\" />\n");
+        
+        combinedBuf.append(nodebuf);
+        combinedBuf.append(waybuf);
+        combinedBuf.append("</osm>");
+
+        if (debug) System.out.println(combinedBuf);
+
+        // The pseudo OSM file is now complete, and we feed it to the S57
+        // library where it will be parsed again.
+
+        ByteArrayInputStream in = new ByteArrayInputStream(combinedBuf.toString().getBytes(StandardCharsets.UTF_8));
+        map = new S57map(true);
+        S57osm.OSMmap(in, map, false);
+        in.close();
+
+        // this ChartContext is mainly there for converting lat/lon to
+        // tile x/y pixel coordinates.
+
+        final double mile = 330.0 * pow / 16384.0 * scale;
+
+        ChartContext context = new ChartContext() {
+            public Point2D getPoint(Snode coord) {
+                double x = border + (radlon2x(coord.lon) - west) * 256 * scale * pow / MERCATOR_WIDTH;
+                double y = tilesize + border - ((radlat2y(coord.lat) - south) * scale * 256 * pow / MERCATOR_WIDTH);
+                return new Point2D.Double(x, y);
+            }
+
+            public double mile(Feature feature) {
+                return mile;
+            }
+
+            public boolean clip() {
+                return false;
+            }
+
+            public Color background(S57map map) {
+                return new Color(0, true);
+            }
+
+            public RuleSet ruleset() {
+                return RuleSet.SEAMARK;
+            }
+
+            public Chart chart() {
+              return null;
+            }
+
+            public int grid() {
+              return 0;
+            }
+        };
+
+        // invoke renderer, and write file to disk
+        // ---------------------------------------
+
+        BufferedImage img = new BufferedImage((int)tilesize, (int)tilesize, BufferedImage.TYPE_INT_ARGB);
+        Graphics2D g2 = img.createGraphics();
+        g2.translate(-border, -border);
+        Renderer.reRender(g2, new Rectangle((int)tilesize, (int)tilesize), zoom, scale * Math.pow(2, (zoom - 12)), map, context);
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ImageIO.write(img, "png", bos);
+        FileOutputStream fos = new FileOutputStream(outfile);
+        bos.writeTo(fos);
+        fos.close();
+        System.exit(0);
+    }
+}
+
Index: /applications/editors/josm/plugins/SeaChart/jrenderpgsql/src/jrenderpgsql/PGHStore.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jrenderpgsql/src/jrenderpgsql/PGHStore.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jrenderpgsql/src/jrenderpgsql/PGHStore.java	(revision 36424)
@@ -0,0 +1,363 @@
+/*-------------------------------------------------------------------------
+*
+* A preliminary version of a custom type wrapper for hstore data.
+* Once it gets some testing and cleanups it will go into the official
+* PG JDBC driver, but stick it here for now because we need it sooner.
+*
+* Copyright (c) 2009, PostgreSQL Global Development Group
+*
+* IDENTIFICATION
+*   $PostgreSQL$
+*
+*-------------------------------------------------------------------------
+*/
+package jrenderpgsql;
+
+import java.io.Serializable;
+
+import java.sql.SQLException;
+
+import java.util.Set;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Collection;
+
+import org.postgresql.util.PGobject;
+/**
+ * This implements a class that handles the PostgreSQL contrib/hstore type
+ */
+public class PGHStore extends PGobject implements Serializable, Cloneable, Map
+{
+    private final static long serialVersionUID = 1;
+    private Map _map;
+
+    /**
+     * required by the driver
+     */
+    public PGHStore()
+    {
+        setType("hstore");
+        _map = new HashMap();
+    }
+
+    /**
+     * Initialize a hstore with a given string representation
+     *
+     * @param value String representated hstore
+     * @throws SQLException Is thrown if the string representation has an unknown format
+     * @see #setValue(String)
+     */
+    public PGHStore(String value)
+    throws SQLException
+    {
+        this();
+        setValue(value);
+    }
+
+    public PGHStore(Map map)
+    {
+        this();
+        setValue(map);
+    }
+
+    public void setValue(Map map)
+    {
+        _map = map;
+    }
+
+    /**
+     */
+    public void setValue(String value)
+    throws SQLException
+    {
+        Parser p = new Parser();
+        _map = p.parse(value);
+    }
+
+    /**
+     * Returns the stored information as a string
+     *
+     * @return String represented hstore
+     */
+    public String getValue()
+    {
+        StringBuffer buf = new StringBuffer();
+        Iterator i = _map.keySet().iterator();
+        boolean first = true;
+        while (i.hasNext()) {
+            Object key = i.next();
+            Object value = _map.get(key);
+
+            if (first) {
+                first = false;
+            } else {
+                buf.append(',');
+            }
+
+            writeValue(buf, key);
+            buf.append("=>");
+            writeValue(buf, value);
+        }
+
+        return buf.toString();
+    }
+
+    private static void writeValue(StringBuffer buf, Object o) {
+        if (o == null) {
+            buf.append("NULL");
+            return;
+        }
+
+        String s = o.toString();
+
+        buf.append('"');
+        for (int i=0; i<s.length(); i++) {
+            char c = s.charAt(i);
+            if (c == '"' || c == '\\') {
+                buf.append('\\');
+            }
+            buf.append(c);
+        }
+        buf.append('"');
+    }
+
+
+    /**
+     * Returns whether an object is equal to this one or not
+     *
+     * @param obj Object to compare with
+     * @return true if the two hstores are identical
+     */
+    public boolean equals(Object obj)
+    {
+        if (obj == null)
+            return false;
+
+        if (obj == this)
+            return true;
+
+        if (!(obj instanceof PGHStore))
+            return false;
+
+        return _map.equals(((PGHStore)obj)._map);
+
+    }
+
+    private static class Parser {
+        private String value;
+        private int ptr;
+        private StringBuffer cur;
+        private boolean escaped;
+
+        private List keys;
+        private List values;
+
+        private final static int GV_WAITVAL = 0;
+        private final static int GV_INVAL = 1;
+        private final static int GV_INESCVAL = 2;
+        private final static int GV_WAITESCIN = 3;
+        private final static int GV_WAITESCESCIN = 4;
+
+        private final static int WKEY = 0;
+        private final static int WVAL = 1;
+        private final static int WEQ = 2;
+        private final static int WGT = 3;
+        private final static int WDEL = 4;
+
+        public Parser() {
+        }
+
+    	@SuppressWarnings("unchecked")
+        private Map parse(String value) throws SQLException {
+            this.value = value;
+            ptr = 0;
+            keys = new ArrayList();
+            values = new ArrayList();
+            
+            parseHStore();
+
+            Map map = new HashMap();
+            for (int i=0; i<keys.size(); i++) {
+                map.put(keys.get(i), values.get(i));
+            }
+
+            return map;
+        }
+
+        private boolean getValue(boolean ignoreEqual) throws SQLException {
+            int state = GV_WAITVAL;
+
+            cur = new StringBuffer();
+            escaped = false;
+
+            while (true) {
+                boolean atEnd = (value.length() == ptr);
+                char c = '\0';
+                if (!atEnd) {
+                    c = value.charAt(ptr);
+                }
+
+                if (state == GV_WAITVAL) {
+                    if (c == '"') {
+                        escaped = true;
+                        state = GV_INESCVAL;
+                    } else if (c == '\0') {
+                        return false;
+                    } else if (c == '=' && !ignoreEqual) {
+                        throw new SQLException("KJJ");
+                    } else if (c == '\\') {
+                        state = GV_WAITESCIN;
+                    } else if (!Character.isWhitespace(c)) {
+                        cur.append(c);
+                        state = GV_INVAL;
+                    }
+                } else if (state == GV_INVAL) {
+                    if (c == '\\') {
+                        state = GV_WAITESCIN;
+                    } else if (c == '=' && !ignoreEqual) {
+                        ptr--;
+                        return true;
+                    } else if (c == ',' && ignoreEqual) {
+                        ptr--;
+                        return true;
+                    } else if (Character.isWhitespace(c)) {
+                        return true;
+                    } else if (c == '\0') {
+                        ptr--;
+                        return true;
+                    } else {
+                        cur.append(c);
+                    }
+                } else if (state == GV_INESCVAL) {
+                    if (c == '\\') {
+                        state = GV_WAITESCESCIN;
+                    } else if (c == '"') {
+                        return true;
+                    } else if (c == '\0') {
+                        throw new SQLException("KJJ, unexpected end of string");
+                    } else {
+                        cur.append(c);
+                    }
+                } else if (state == GV_WAITESCIN) {
+                    if (c == '\0') {
+                        throw new SQLException("KJJ, unexpected end of string");
+                    }
+
+                    cur.append(c);
+                    state = GV_INVAL;
+                } else if (state == GV_WAITESCESCIN) {
+                    if (c == '\0') {
+                        throw new SQLException("KJJ, unexpected end of string");
+                    }
+
+                    cur.append(c);
+                    state = GV_INESCVAL;
+                } else {
+                    throw new SQLException("KJJ");
+                }
+
+                ptr++;
+            }
+        }
+
+    	@SuppressWarnings("unchecked")
+        private void parseHStore() throws SQLException {
+            int state = WKEY;
+            escaped = false;
+
+            while (true) {
+                char c = '\0';
+                if (ptr < value.length()) {
+                    c = value.charAt(ptr);
+                }
+
+                if (state == WKEY) {
+                    if (!getValue(false))
+                        return;
+
+                    keys.add(cur.toString());
+                    cur = null;
+                    state = WEQ;
+                } else if (state == WEQ) {
+                    if (c == '=') {
+                        state = WGT;
+                    } else if (state == '\0') {
+                        throw new SQLException("KJJ, unexpected end of string");
+                    } else if (!Character.isWhitespace(c)) {
+                        throw new SQLException("KJJ, syntax err");
+                    }
+                } else if (state == WGT) {
+                    if (c == '>') {
+                        state = WVAL;
+                    } else if (c == '\0') {
+                        throw new SQLException("KJJ, unexpected end of string");
+                    } else {
+                        throw new SQLException("KJJ, syntax err [" + c + "] at " + ptr);
+                    }
+                } else if (state == WVAL) {
+                    if (!getValue(true)) {
+                        throw new SQLException("KJJ, unexpected end of string");
+                    }
+
+                    String val = cur.toString();
+                    cur = null;
+                    if (!escaped && "null".equalsIgnoreCase(val)) {
+                        val = null;
+                    }
+
+                    values.add(val);
+                    state = WDEL;
+                } else if (state == WDEL) {
+                    if (c == ',')
+                    {
+                        state = WKEY;
+                    } else if (c == '\0') {
+                        return;
+                    } else if (!Character.isWhitespace(c)) {
+                        throw new SQLException("KJJ, syntax err");
+                    }
+                } else {
+                    throw new SQLException("KJJ unknown state");
+                }
+
+                ptr++;
+            }
+        }
+
+    }
+
+
+    // Farm out all the work to the real underlying map.
+
+    public void clear() { _map.clear(); }
+
+    public boolean containsKey(Object key) { return _map.containsKey(key); }
+
+    public boolean containsValue(Object value) { return _map.containsValue(value); }
+
+    public Set entrySet() { return _map.entrySet(); }
+
+    public Object get(Object key) { return _map.get(key); }
+
+    public int hashCode() { return _map.hashCode(); }
+
+    public boolean isEmpty() { return _map.isEmpty(); }
+
+    public Set keySet() { return _map.keySet(); }
+
+    @SuppressWarnings("unchecked")
+    public Object put(Object key, Object value) { return _map.put(key, value); }
+
+    @SuppressWarnings("unchecked")
+    public void putAll(Map m) { _map.putAll(m); }
+
+    public Object remove(Object key) { return _map.remove(key); }
+
+    public int size() { return _map.size(); }
+
+    public Collection values() { return _map.values(); }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/js57toosm/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/js57toosm/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/js57toosm/build.xml	(revision 36424)
@@ -0,0 +1,33 @@
+<project name="js57toosm" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./js57toosm.jar"/>
+  <property name="lang.dir" value="../libs/"/>
+  <path id="classpath">
+    <fileset dir="${lang.dir}" includes="**/commons-lang3-3.4.jar"/>
+  </path>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source">
+    <javac includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}" classpathref="classpath" encoding="UTF-8" />
+  </target>
+  
+  <target name="dist" depends="compile" description="generate the distribution">
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <manifest>
+        <attribute name="Main-Class" value="js57toosm.Js57toosm"/>
+        <attribute name="Class-Path" value="${jarfile}"/>
+      </manifest>
+      <zipgroupfileset dir="${lang.dir}" includes="**/commons-lang3-3.4.jar" />
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up">
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/js57toosm/src/js57toosm/Js57toosm.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/js57toosm/src/js57toosm/Js57toosm.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/js57toosm/src/js57toosm/Js57toosm.java	(revision 36424)
@@ -0,0 +1,245 @@
+// License: GPL. For details, see LICENSE file.
+package js57toosm;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.Scanner;
+
+import org.apache.commons.lang3.StringEscapeUtils;
+
+import s57.S57att;
+import s57.S57att.Att;
+import s57.S57dec;
+import s57.S57map;
+import s57.S57map.AttMap;
+import s57.S57map.Feature;
+import s57.S57map.GeomIterator;
+import s57.S57map.ObjTab;
+import s57.S57map.Pflag;
+import s57.S57map.Prim;
+import s57.S57map.Rflag;
+import s57.S57map.Snode;
+import s57.S57obj;
+import s57.S57obj.Obj;
+import s57.S57val;
+import s57.S57val.AttVal;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Js57toosm {
+    private Js57toosm() {
+        // Hide default constructor for utilities classes
+    }
+
+    static FileInputStream in;
+    static PrintStream out;
+    static S57map map;
+    static final ArrayList<Att> typatts = new ArrayList<>(); static {
+        typatts.add(Att.OBJNAM); typatts.add(Att.NOBJNM); typatts.add(Att.STATUS); typatts.add(Att.INFORM); typatts.add(Att.NINFOM);
+        typatts.add(Att.PEREND); typatts.add(Att.PERSTA); typatts.add(Att.CONDTN); typatts.add(Att.CONRAD); typatts.add(Att.CONVIS);
+    }
+
+    public static void main(String[] args) throws IOException {
+
+        ArrayList<Long> done = new ArrayList<>();
+
+        if (args.length < 3) {
+            System.err.println("Usage: java -jar js57toosm.jar S57_filename types_filename OSM_filename");
+            System.exit(-1);
+        }
+        try {
+            in = new FileInputStream(args[0]);
+        } catch (IOException e) {
+            System.err.println("Input file: " + e.getMessage());
+            System.exit(-1);
+        }
+        try {
+            out = new PrintStream(args[2]);
+        } catch (IOException e) {
+            System.err.println("Output file: " + e.getMessage());
+            in.close();
+            System.exit(-1);
+        }
+        ArrayList<Obj> types = new ArrayList<>();
+        try {
+            Scanner tin = new Scanner(new FileInputStream(args[1]));
+            while (tin.hasNext()) {
+                Obj type = S57obj.enumType(tin.next());
+                if (type != Obj.UNKOBJ)
+                    types.add(type);
+            }
+            tin.close();
+        } catch (IOException e) {
+            System.err.println("Types file: " + e.getMessage());
+            in.close();
+            out.close();
+            System.exit(-1);
+        }
+
+        map = new S57map(true);
+        S57dec.decodeChart(in, map);
+
+        out.format("<?xml version='1.0' encoding='UTF-8'?>%n");
+        out.format("<osm version='0.6' upload='false' generator='js57toosm'>%n");
+        out.format("<bounds minlat='%.8f' minlon='%.8f' maxlat='%.8f' maxlon='%.8f'/>%n",
+                Math.toDegrees(map.bounds.minlat), Math.toDegrees(map.bounds.minlon),
+                Math.toDegrees(map.bounds.maxlat), Math.toDegrees(map.bounds.maxlon));
+
+        for (long id : map.index.keySet()) {
+            Feature feature = map.index.get(id);
+            String type = S57obj.stringType(feature.type);
+            if (!type.isEmpty() && (types.isEmpty() || types.contains(feature.type))) {
+                if (feature.reln == Rflag.MASTER) {
+                    if (feature.geom.prim == Pflag.POINT) {
+                        for (Prim prim : feature.geom.elems) {
+                            long ref = prim.id;
+                            Snode node;
+                            while ((node = map.nodes.get(ref)) != null) {
+                                if (!done.contains(ref)) {
+                                    out.format("  <node id='%d' lat='%.8f' lon='%.8f' version='1'>%n",
+                                            -ref, Math.toDegrees(node.lat), Math.toDegrees(node.lon));
+                                    out.format("    <tag k='seamark:type' v=\"%s\"/>%n", type);
+                                    if ((feature.type == Obj.SOUNDG) && (node.flg == S57map.Nflag.DPTH))
+                                        out.format("    <tag k='seamark:sounding:depth' v='%.1f'/>%n", node.val);
+                                    writeAtts(feature);
+                                    out.format("  </node>%n");
+                                    done.add(ref);
+                                }
+                                ref++;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        for (long id : map.index.keySet()) {
+            Feature feature = map.index.get(id);
+            String type = S57obj.stringType(feature.type);
+            if (!type.isEmpty() && (types.isEmpty() || types.contains(feature.type))) {
+                if (feature.reln == Rflag.MASTER) {
+                    if ((feature.geom.prim == Pflag.LINE) ||
+                       ((feature.geom.prim == Pflag.AREA) && (feature.geom.outers == 1) && (feature.geom.inners == 0))) {
+                        GeomIterator git = map.new GeomIterator(feature.geom);
+                        while (git.hasComp()) {
+                            git.nextComp();
+                            while (git.hasEdge()) {
+                                git.nextEdge();
+                                while (git.hasNode()) {
+                                    long ref = git.nextRef();
+                                    Snode node = map.nodes.get(ref);
+                                    if (!done.contains(ref)) {
+                                        out.format("  <node id='%d' lat='%.8f' lon='%.8f' version='1'/>%n",
+                                                -ref, Math.toDegrees(node.lat), Math.toDegrees(node.lon));
+                                        done.add(ref);
+                                    }
+                                }
+                            }
+                        }
+                        git = map.new GeomIterator(feature.geom);
+                        while (git.hasComp()) {
+                            long edge = git.nextComp();
+                            out.format("  <way id='%d' version='1'>%n", -edge);
+                            while (git.hasEdge()) {
+                                git.nextEdge();
+                                while (git.hasNode()) {
+                                    long ref = git.nextRef();
+                                    out.format("    <nd ref='%d'/>%n", -ref);
+                                }
+                            }
+                            out.format("    <tag k='seamark:type' v='%s'/>%n", type);
+                            writeAtts(feature);
+                            out.format("  </way>%n");
+                        }
+                    } else if (feature.geom.prim == Pflag.AREA) {
+                        GeomIterator git = map.new GeomIterator(feature.geom);
+                        while (git.hasComp()) {
+                            git.nextComp();
+                            while (git.hasEdge()) {
+                                git.nextEdge();
+                                while (git.hasNode()) {
+                                    long ref = git.nextRef();
+                                    Snode node = map.nodes.get(ref);
+                                    if (!done.contains(ref)) {
+                                        out.format("  <node id='%d' lat='%.8f' lon='%.8f' version='1'/>%n",
+                                                -ref, Math.toDegrees(node.lat), Math.toDegrees(node.lon));
+                                        done.add(ref);
+                                    }
+                                }
+                            }
+                        }
+                        git = map.new GeomIterator(feature.geom);
+                        while (git.hasComp()) {
+                            long ref = git.nextComp();
+                            out.format("  <way id='%d' version='1'>%n", -ref);
+                            while (git.hasEdge()) {
+                                git.nextEdge();
+                                while (git.hasNode()) {
+                                    ref = git.nextRef();
+                                    out.format("    <nd ref='%d'/>%n", -ref);
+                                }
+                            }
+                            out.format("  </way>%n");
+                        }
+                        out.format("  <relation id='%d' version='1'>%n", -map.xref++);
+                        out.format("    <tag k='type' v='multipolygon'/>%n");
+                        git = map.new GeomIterator(feature.geom);
+                        int outers = feature.geom.outers;
+                        while (git.hasComp()) {
+                            long ref = git.nextComp();
+                            if (outers-- > 0) {
+                                out.format("    <member type='way' ref='%d' role='outer'/>%n", -ref);
+                            } else {
+                                out.format("    <member type='way' ref='%d' role='inner'/>%n", -ref);
+                            }
+                        }
+                        out.format("    <tag k='seamark:type' v='%s'/>%n", type);
+                        writeAtts(feature);
+                        out.format("  </relation>%n");
+                    }
+                }
+            }
+        }
+        out.println("</osm>\n");
+        out.close();
+        System.err.println("Finished");
+    }
+
+    static void writeAtts(Feature feature) {
+        for (Map.Entry<Att, AttVal<?>> item : feature.atts.entrySet()) {
+            String attstr = S57att.stringAttribute(item.getKey());
+            String valstr = S57val.stringValue(item.getValue(), item.getKey());
+            if (!attstr.isEmpty() && !valstr.isEmpty()) {
+                if (typatts.contains(item.getKey())) {
+                    out.format("    <tag k='seamark:%s' v='%s'/>%n", attstr, StringEscapeUtils.escapeXml10(valstr));
+                } else {
+                    out.format("    <tag k='seamark:%s:%s' v='%s'/>%n",
+                            S57obj.stringType(feature.type), attstr, StringEscapeUtils.escapeXml10(valstr));
+                }
+            }
+        }
+        for (Obj obj : feature.objs.keySet()) {
+            ObjTab tab = feature.objs.get(obj);
+            for (int ix : tab.keySet()) {
+                AttMap atts = tab.get(ix);
+                for (Map.Entry<Att, AttVal<?>> item : atts.entrySet()) {
+                    String attstr = S57att.stringAttribute(item.getKey());
+                    String valstr = S57val.stringValue(item.getValue(), item.getKey());
+                    if (!attstr.isEmpty() && !valstr.isEmpty()) {
+                        if ((ix == 0) && (tab.size() == 1)) {
+                            out.format("    <tag k='seamark:%s:%s' v='%s'/>%n",
+                                    S57obj.stringType(obj), attstr, StringEscapeUtils.escapeXml10(valstr));
+                        } else {
+                            out.format("    <tag k='seamark:%s:%d:%s' v='%s'/>%n",
+                                    S57obj.stringType(obj), ix + 1, attstr, StringEscapeUtils.escapeXml10(valstr));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/jshom/build.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jshom/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jshom/build.xml	(revision 36424)
@@ -0,0 +1,28 @@
+<project name="jshom" default="dist" basedir=".">
+  <property name="src" location="src"/>
+  <property name="srcmain" location="../src"/>
+  <property name="build" location="build"/>
+  <property name="jarfile" location="./jshom.jar"/>
+
+  <target name="init">
+    <mkdir dir="${build}"/>
+  </target>
+
+  <target name="compile" depends="init" description="compile the source " >
+    <javac includeantruntime="false" sourcepath="${srcmain}" srcdir="${src}" destdir="${build}" encoding="UTF-8" />
+  </target>
+
+  <target name="dist" depends="compile" description="generate the distribution" >
+    <jar jarfile="${jarfile}" basedir="${build}" manifestencoding="UTF-8">
+      <manifest>
+        <attribute name="Main-Class" value="jshom.Jshom"/>
+        <attribute name="Class-Path" value="$jarfile"/>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="clean" description="clean up" >
+    <delete dir="${build}"/>
+    <delete file="${jarfile}"/>
+  </target>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/jshom/src/jshom/Jshom.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/jshom/src/jshom/Jshom.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/jshom/src/jshom/Jshom.java	(revision 36424)
@@ -0,0 +1,89 @@
+/**
+ * @author Malcolm Herring
+ */
+// License: GPL. For details, see LICENSE file.
+package jshom;
+
+import java.io.File;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import s57.S57obj;
+import s57.S57obj.*;
+import s57.S57att;
+import s57.S57att.*;
+import s57.S57val;
+
+public final class Jshom {
+
+    public static void main(String[] args) throws Exception {
+        if (args.length < 3) {
+            System.err.println("Usage: java -jar jshom.jar <seamark type> <input file> <output file>");
+            System.exit(-1);
+        }
+        String type = args[0];
+        String srcfile = args[1];
+        String dstfile = args[2];
+
+        try {
+            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
+            Document doc = docBuilder.parse(srcfile);
+
+            NodeList nList = doc.getElementsByTagName("node");
+            for (int i = 0; i < nList.getLength(); i++) {
+                Node node = nList.item(i);
+                if (node.getNodeType() == Node.ELEMENT_NODE) {
+                    NodeList tList = node.getChildNodes();
+                    for (int j = 0; j < tList.getLength(); j++) {
+                        Node tag = tList.item(j);
+                        if (tag.getNodeType() == tag.ELEMENT_NODE) {
+                            Element tElement = (Element) tag;
+                            String key = tElement.getAttribute("k");
+                            String val = tElement.getAttribute("v");
+                            try {
+                                Obj obj = Obj.valueOf(key.toUpperCase());
+                                if (!val.equals("0")) {
+                                    tElement.setAttribute("k", "seamark:" + S57obj.stringType(obj));
+                                    tElement.setAttribute("v", "yes");
+                                } else {
+                                    node.removeChild(tag);                                
+                                }
+                                continue;
+                            } catch (Exception eObj) {
+                                try {
+                                    Att att = Att.valueOf(key.toUpperCase());
+                                    tElement.setAttribute("k", "seamark:" + type + ":" + S57att.stringAttribute(att));
+                                    tElement.setAttribute("v", S57val.stringValue(S57val.decodeValue(val, att), att));
+                                    continue;
+                                } catch (Exception eAtt) {
+                                    node.removeChild(tag);                                
+                                }
+                            }
+                        }
+                    }
+                    Element newTag = doc.createElement("tag");
+                    newTag.setAttribute("k", "seamark:type");
+                    newTag.setAttribute("v", type);
+                    node.appendChild(newTag);
+                }
+            }
+
+            TransformerFactory transformerFactory = TransformerFactory.newInstance();
+            Transformer transformer = transformerFactory.newTransformer();
+            DOMSource source = new DOMSource(doc);
+            StreamResult result = new StreamResult(new File(dstfile));
+            transformer.transform(source, result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/pom.xml
===================================================================
--- /applications/editors/josm/plugins/SeaChart/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/pom.xml	(revision 36424)
@@ -0,0 +1,43 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>SeaChart</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Malcolm Herring</name>
+        </developer>
+    </developers>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+        <plugin.author>Malcolm Herring</plugin.author>
+        <plugin.class>seachart.Seachart</plugin.class>
+        <plugin.description>Imagery Layer for Sea Charts</plugin.description>
+        <plugin.icon>images/SC.png</plugin.icon>
+        <plugin.link>https://openseamap.org/</plugin.link>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/SeaChart/src/render/ChartContext.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/render/ChartContext.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/render/ChartContext.java	(revision 36424)
@@ -0,0 +1,45 @@
+// License: GPL. For details, see LICENSE file.
+package render;
+
+import java.awt.Color;
+import java.awt.geom.Point2D;
+
+import s57.S57map;
+import s57.S57map.Feature;
+import s57.S57map.Snode;
+
+/**
+ * @author Malcolm Herring
+ */
+public interface ChartContext {
+    enum RuleSet { ALL, BASE, SEAMARK }
+    class Chart {
+    	public int zoom;
+    	public double scale;
+    	public int grid;
+    	public boolean rose;
+    	public double roseLat;
+    	public double roseLon;
+    	public Chart() {
+    		zoom = 15;
+    		scale = 1.0;
+    		grid = 0;
+    		rose = false;
+    		roseLat = roseLon = 0;
+    	}
+    }
+
+    Point2D getPoint(Snode coord);
+
+    double mile(Feature feature);
+
+    boolean clip();
+    
+    int grid();
+    
+    Chart chart();
+
+    Color background(S57map map);
+
+    RuleSet ruleset();
+}
Index: /applications/editors/josm/plugins/SeaChart/src/render/Renderer.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/render/Renderer.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/render/Renderer.java	(revision 36424)
@@ -0,0 +1,867 @@
+// License: GPL. For details, see LICENSE file.
+package render;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.TexturePaint;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RoundRectangle2D;
+import java.awt.image.AffineTransformOp;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+
+import s57.S57map;
+import s57.S57map.GeomIterator;
+import s57.S57map.Pflag;
+import s57.S57map.Snode;
+import s57.S57val.UniHLU;
+import symbols.Areas;
+import symbols.Symbols;
+import symbols.Symbols.Caption;
+import symbols.Symbols.Delta;
+import symbols.Symbols.Form;
+import symbols.Symbols.Handle;
+import symbols.Symbols.Instr;
+import symbols.Symbols.LineStyle;
+import symbols.Symbols.Scheme;
+import symbols.Symbols.SubSymbol;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Renderer {
+    private Renderer() {
+        // Hide default constructor for utilities classes
+    }
+
+    public static final double[] symbolScale = {
+            256.0, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.61, 0.372, 0.227, 0.138, 0.0843, 0.0514, 0.0313, 0.0191, 0.0117, 0.007};
+
+    public enum LabelStyle { NONE, RRCT, RECT, ELPS, CIRC, VCLR, PCLR, HCLR }
+
+    static ChartContext context;
+    static S57map map;
+    static double sScale;
+    static Graphics2D g2;
+    static int zoom;
+
+    public static void reRender(Graphics2D g, Rectangle rect, int z, double factor, S57map m, ChartContext c) {
+        g2 = g;
+        zoom = z;
+        context = c;
+        map = m;
+        sScale = symbolScale[zoom] * factor;
+        if (map != null) {
+            if (context.clip()) {
+                Point2D tl = context.getPoint(new Snode(map.bounds.maxlat, map.bounds.minlon));
+                Point2D br = context.getPoint(new Snode(map.bounds.minlat, map.bounds.maxlon));
+                g2.clip(new Rectangle2D.Double(tl.getX(), tl.getY(), (br.getX() - tl.getX()), (br.getY() - tl.getY())));
+            }
+            g2.setBackground(context.background(map));
+            g2.clearRect(rect.x, rect.y, rect.width, rect.height);
+            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+            g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
+            g2.setStroke(new BasicStroke(0, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER));
+            do {} while (!Rules.rules());
+        }
+        if ((context.grid() > 0) && (map != null)) {
+        	rose();
+        	grid();
+        }
+    }
+
+    public static void symbol(Symbol symbol) {
+        Point2D point = context.getPoint(Rules.feature.geom.centre);
+        Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), null, null);
+    }
+
+    public static void symbol(Symbol symbol, Scheme scheme) {
+        Point2D point = context.getPoint(Rules.feature.geom.centre);
+        Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), scheme, null);
+    }
+
+    public static void symbol(Symbol symbol, Delta delta) {
+        Point2D point = context.getPoint(Rules.feature.geom.centre);
+        Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), null, delta);
+    }
+
+    public static void symbol(Symbol symbol, double scale, Delta delta) {
+        Point2D point = context.getPoint(Rules.feature.geom.centre);
+        Symbols.drawSymbol(g2, symbol, (sScale * scale), point.getX(), point.getY(), null, delta);
+    }
+
+    public static void symbol(Symbol symbol, Scheme scheme, Delta delta) {
+        Point2D point = context.getPoint(Rules.feature.geom.centre);
+        Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), scheme, delta);
+    }
+
+    public static void symbol(Symbol symbol, double scale, Scheme scheme) {
+        Point2D point = context.getPoint(Rules.feature.geom.centre);
+        Symbols.drawSymbol(g2, symbol, (sScale * scale), point.getX(), point.getY(), scheme, null);
+    }
+
+    public static void colLetters(ArrayList<?> cols) {
+        	String str = "";
+        	for (int i = 0; (i < cols.size()) && (i < 4); i++) {
+        		str = str.concat(Rules.colourLetters.get(cols.get(i)));
+        	}
+        	labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 40)));
+    }
+
+    public static void cluster(ArrayList<Symbol> symbols) {
+        Rectangle2D.Double bbox = null;
+        if (symbols.size() > 4) {
+            for (Instr instr : symbols.get(0)) {
+                if (instr.type == Form.BBOX) {
+                    bbox = (Rectangle2D.Double) instr.params;
+                    break;
+                }
+            }
+            if (bbox == null) return;
+        }
+        switch (symbols.size()) {
+        case 1:
+            symbol(symbols.get(0), new Delta(Handle.CC, new AffineTransform()));
+            break;
+        case 2:
+            symbol(symbols.get(0), new Delta(Handle.RC, new AffineTransform()));
+            symbol(symbols.get(1), new Delta(Handle.LC, new AffineTransform()));
+            break;
+        case 3:
+            symbol(symbols.get(0), new Delta(Handle.BC, new AffineTransform()));
+            symbol(symbols.get(1), new Delta(Handle.TR, new AffineTransform()));
+            symbol(symbols.get(2), new Delta(Handle.TL, new AffineTransform()));
+            break;
+        case 4:
+            symbol(symbols.get(0), new Delta(Handle.BR, new AffineTransform()));
+            symbol(symbols.get(1), new Delta(Handle.BL, new AffineTransform()));
+            symbol(symbols.get(2), new Delta(Handle.TR, new AffineTransform()));
+            symbol(symbols.get(3), new Delta(Handle.TL, new AffineTransform()));
+            break;
+        case 5:
+            symbol(symbols.get(0), new Delta(Handle.BR, new AffineTransform()));
+            symbol(symbols.get(1), new Delta(Handle.BL, new AffineTransform()));
+            symbol(symbols.get(2), new Delta(Handle.TR, AffineTransform.getTranslateInstance(-bbox.width/2, 0)));
+            symbol(symbols.get(3), new Delta(Handle.TC, new AffineTransform()));
+            symbol(symbols.get(4), new Delta(Handle.TL, AffineTransform.getTranslateInstance(bbox.width/2, 0)));
+            break;
+        case 6:
+            symbol(symbols.get(0), new Delta(Handle.BR, AffineTransform.getTranslateInstance(-bbox.width/2, 0)));
+            symbol(symbols.get(1), new Delta(Handle.BC, new AffineTransform()));
+            symbol(symbols.get(2), new Delta(Handle.BL, AffineTransform.getTranslateInstance(bbox.width/2, 0)));
+            symbol(symbols.get(3), new Delta(Handle.TR, AffineTransform.getTranslateInstance(-bbox.width/2, 0)));
+            symbol(symbols.get(4), new Delta(Handle.TC, new AffineTransform()));
+            symbol(symbols.get(5), new Delta(Handle.TL, AffineTransform.getTranslateInstance(bbox.width/2, 0)));
+            break;
+        case 7:
+            symbol(symbols.get(0), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -bbox.height/2)));
+            symbol(symbols.get(1), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-bbox.width/2, 0)));
+            symbol(symbols.get(2), new Delta(Handle.CC, new AffineTransform()));
+            symbol(symbols.get(3), new Delta(Handle.LC, AffineTransform.getTranslateInstance(bbox.width/2, 0)));
+            symbol(symbols.get(4), new Delta(Handle.TR, AffineTransform.getTranslateInstance(-bbox.width/2, bbox.height/2)));
+            symbol(symbols.get(5), new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, bbox.height/2)));
+            symbol(symbols.get(6), new Delta(Handle.TL, AffineTransform.getTranslateInstance(bbox.width/2, bbox.height/2)));
+            break;
+        case 8:
+            symbol(symbols.get(0), new Delta(Handle.BR, AffineTransform.getTranslateInstance(0, -bbox.height/2)));
+            symbol(symbols.get(1), new Delta(Handle.BL, AffineTransform.getTranslateInstance(0, -bbox.height/2)));
+            symbol(symbols.get(2), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-bbox.width/2, 0)));
+            symbol(symbols.get(3), new Delta(Handle.CC, new AffineTransform()));
+            symbol(symbols.get(4), new Delta(Handle.LC, AffineTransform.getTranslateInstance(bbox.width/2, 0)));
+            symbol(symbols.get(5), new Delta(Handle.TR, AffineTransform.getTranslateInstance(-bbox.width/2, bbox.height/2)));
+            symbol(symbols.get(6), new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, bbox.height/2)));
+            symbol(symbols.get(7), new Delta(Handle.TL, AffineTransform.getTranslateInstance(bbox.width/2, bbox.height/2)));
+            break;
+        case 9:
+            symbol(symbols.get(0), new Delta(Handle.BR, AffineTransform.getTranslateInstance(-bbox.width/2, -bbox.height/2)));
+            symbol(symbols.get(1), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -bbox.height/2)));
+            symbol(symbols.get(2), new Delta(Handle.BL, AffineTransform.getTranslateInstance(bbox.width/2, -bbox.height/2)));
+            symbol(symbols.get(3), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-bbox.width/2, 0)));
+            symbol(symbols.get(4), new Delta(Handle.CC, new AffineTransform()));
+            symbol(symbols.get(5), new Delta(Handle.LC, AffineTransform.getTranslateInstance(bbox.width/2, 0)));
+            symbol(symbols.get(6), new Delta(Handle.TR, AffineTransform.getTranslateInstance(-bbox.width/2, bbox.height/2)));
+            symbol(symbols.get(7), new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, bbox.height/2)));
+            symbol(symbols.get(8), new Delta(Handle.TL, AffineTransform.getTranslateInstance(bbox.width/2, bbox.height/2)));
+            break;
+        }
+    }
+
+    private static Rectangle2D.Double symbolSize(Symbol symbol) {
+        Symbol ssymb = symbol;
+        while (ssymb != null) {
+            for (Instr item : symbol) {
+                if (item.type == Form.BBOX) {
+                    return (Rectangle2D.Double) item.params;
+                }
+                if (item.type == Form.SYMB) {
+                    ssymb = ((SubSymbol) item.params).instr;
+                    break;
+                }
+            }
+            if (ssymb == symbol)
+                break;
+        }
+        return null;
+    }
+
+    public static void lineSymbols(Symbol prisymb, double space, Symbol secsymb, Symbol tersymb, int ratio, Color col) {
+        if ((Rules.feature.geom.prim == Pflag.NOSP) || (Rules.feature.geom.prim == Pflag.POINT))
+            return;
+        Rectangle2D.Double prect = symbolSize(prisymb);
+        Rectangle2D.Double srect = symbolSize(secsymb);
+        Rectangle2D.Double trect = symbolSize(tersymb);
+        if (srect == null)
+            ratio = 0;
+        if (prect != null) {
+            double psize = Math.abs(prect.getY()) * sScale;
+            double ssize = (srect != null) ? Math.abs(srect.getY()) * sScale : 0;
+            double tsize = (trect != null) ? Math.abs(srect.getY()) * sScale : 0;
+            Point2D prev = new Point2D.Double();
+            Point2D next = new Point2D.Double();
+            Point2D curr = new Point2D.Double();
+            Point2D succ = new Point2D.Double();
+            boolean gap = true;
+            boolean piv = false;
+            double len = 0;
+            double angle = 0;
+            int stcount = ratio;
+            boolean stflag = false;
+            Symbol symbol = prisymb;
+            GeomIterator git = map.new GeomIterator(Rules.feature.geom);
+            while (git.hasComp()) {
+                git.nextComp();
+                boolean first = true;
+                while (git.hasEdge()) {
+                    git.nextEdge();
+                    while (git.hasNode()) {
+                        Snode node = git.next();
+                        if (node == null) continue;
+                        prev = next;
+                        next = context.getPoint(node);
+                        angle = Math.atan2(next.getY() - prev.getY(), next.getX() - prev.getX());
+                        piv = true;
+                        if (first) {
+                            curr = succ = next;
+                            gap = (space > 0);
+                            stcount = ratio - 1;
+                            symbol = prisymb;
+                            len = gap ? psize * space * 0.5 : psize;
+                            first = false;
+                        } else {
+                            while (curr.distance(next) >= len) {
+                                if (piv) {
+                                    double rem = len;
+                                    double s = prev.distance(next);
+                                    double p = curr.distance(prev);
+                                    if ((s > 0) && (p > 0)) {
+                                        double n = curr.distance(next);
+                                        double theta = Math.acos((s * s + p * p - n * n) / 2 / s / p);
+                                        double phi = Math.asin(p / len * Math.sin(theta));
+                                        rem = len * Math.sin(Math.PI - theta - phi) / Math.sin(theta);
+                                    }
+                                    succ = new Point2D.Double(prev.getX() + (rem * Math.cos(angle)), prev.getY() + (rem * Math.sin(angle)));
+                                    piv = false;
+                                } else {
+                                    succ = new Point2D.Double(curr.getX() + (len * Math.cos(angle)), curr.getY() + (len * Math.sin(angle)));
+                                }
+                                if (!gap) {
+                                    Symbols.drawSymbol(g2, symbol, sScale, curr.getX(), curr.getY(), new Scheme(col),
+                                            new Delta(Handle.BC, AffineTransform.getRotateInstance(
+                                                    Math.atan2((succ.getY() - curr.getY()), (succ.getX() - curr.getX())) + Math.toRadians(90))));
+                                }
+                                if (space > 0)
+                                    gap = !gap;
+                                curr = succ;
+                                len = gap ? (psize * space) : (--stcount == 0) ? (stflag ? tsize : ssize) : psize;
+                                if (stcount == 0) {
+                                    symbol = stflag ? tersymb : secsymb;
+                                    if (trect != null)
+                                        stflag = !stflag;
+                                    stcount = ratio;
+                                } else {
+                                    symbol = prisymb;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public static void lineVector(LineStyle style) {
+        Path2D.Double p = new Path2D.Double();
+        p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        Point2D point;
+        GeomIterator git = map.new GeomIterator(Rules.feature.geom);
+        while (git.hasComp()) {
+            git.nextComp();
+            boolean first = true;
+            while (git.hasEdge()) {
+                git.nextEdge();
+                point = context.getPoint(git.next());
+                if (first) {
+                    p.moveTo(point.getX(), point.getY());
+                    first = false;
+                } else {
+                    p.lineTo(point.getX(), point.getY());
+                }
+                while (git.hasNode()) {
+                    Snode node = git.next();
+                    if (node == null) continue;
+                    point = context.getPoint(node);
+                    p.lineTo(point.getX(), point.getY());
+                }
+            }
+        }
+        if ((style.fill != null) && (Rules.feature.geom.prim == Pflag.AREA)) {
+            g2.setPaint(style.fill);
+            g2.fill(p);
+        }
+        if (style.line != null) {
+            if (style.dash != null) {
+                float[] dash = new float[style.dash.length];
+                System.arraycopy(style.dash, 0, dash, 0, style.dash.length);
+                for (int i = 0; i < style.dash.length; i++) {
+                    dash[i] *= (float) sScale;
+                }
+                g2.setStroke(new BasicStroke((float) (style.width * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, dash, 0));
+            } else {
+                g2.setStroke(new BasicStroke((float) (style.width * sScale), BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+            }
+            g2.setPaint(style.line);
+            g2.draw(p);
+        }
+    }
+    
+    public static void grid() {
+        if ((context.grid() > 0) && (map != null)) {
+            LineStyle style = new LineStyle(Color.black, (float)2.0);
+            Point2D point = context.getPoint(new Snode(map.bounds.minlat, map.bounds.maxlon));
+            double ratio = point.getX() / point.getY();
+            double nspan = 60 * Math.toDegrees(map.bounds.maxlon - map.bounds.minlon) / (context.grid() * (ratio > 1.0 ? ratio : 1.0));
+            double mult = 1.0;
+            boolean ndiv = false;
+            if (nspan < 1.0) {
+                do {
+                    nspan *= 10.0;
+                    mult *= 10.0;
+                } while (nspan < 1.0);
+             } else if (nspan > 10.0){
+                do {
+                    nspan /= 10.0;
+                    mult /= 10.0;
+                } while (nspan > 10.0);
+            }
+            if (nspan < 2.0) nspan = 1.0;
+            else if (nspan < 5.0) nspan = 2.0;
+            else {
+            	nspan = 5.0;
+            	ndiv = true;
+            }
+            nspan = nspan / mult / 60.0;
+            double left = Math.toDegrees(map.bounds.minlon) + 180.0;
+            left = Math.ceil(left / nspan);
+            left = Math.toRadians((left * nspan) - 180.0);
+            double ndeg = Math.toRadians(nspan); 
+            double tspan = 60 * Math.toDegrees(map.bounds.maxlat - map.bounds.minlat) / (context.grid() / (ratio < 1.0 ? ratio : 1.0));
+            mult = 1.0;
+            boolean tdiv = false;
+            if (tspan < 1.0) {
+                do {
+                    tspan *= 10.0;
+                    mult *= 10.0;
+                } while (tspan < 1.0);
+             } else if (tspan > 10.0){
+                do {
+                    tspan /= 10.0;
+                    mult /= 10.0;
+                } while (tspan > 10.0);
+            }
+            if (tspan < 2.0) tspan = 1.0;
+            else if (tspan < 5.0) tspan = 2.0;
+            else {
+            	tspan = 5.0;
+            	tdiv = true;
+            }
+            tspan = tspan / mult / 60.0;
+            double bottom = Math.toDegrees(map.bounds.minlat) + 90.0;
+            bottom = Math.ceil(bottom / tspan);
+            bottom = Math.toRadians((bottom * tspan) - 90.0);
+            double tdeg = Math.toRadians(tspan); 
+            g2.setStroke(new BasicStroke((float) (style.width * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
+            Path2D.Double p = new Path2D.Double();
+            for (double lon = left; lon < map.bounds.maxlon; lon += ndeg) {
+                point = context.getPoint(new Snode(map.bounds.maxlat, lon));
+                p.moveTo(point.getX(), point.getY());
+                point = context.getPoint(new Snode(map.bounds.minlat, lon));
+                p.lineTo(point.getX(), point.getY());
+                double deg = Math.toDegrees(lon);
+                String ew = (deg < -0.001) ? "W" : (deg > 0.001) ? "E" : "";
+                deg = Math.abs(deg);
+                String dstr = String.format("%03d°", (int)Math.floor(deg));
+                double min = (deg - Math.floor(deg)) * 60.0;
+                String mstr = String.format("%05.2f'%s", min, ew);
+                Symbol label = new Symbol();
+                if (point.getX() > 600.0) {
+                    label.add(new Instr(Form.TEXT, new Caption(dstr, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.BR, AffineTransform.getTranslateInstance(-10, -40)))));
+                    label.add(new Instr(Form.TEXT, new Caption(mstr, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.BL, AffineTransform.getTranslateInstance(20, 0)))));
+                    Symbols.drawSymbol(g2, label, sScale, point.getX(), point.getY(), null, null);
+                }
+                for (int i = 1; i < 10; i++) {
+                    int grad = (i % (ndiv ? 2 : 5)) == 0 ? 2 : 1;
+                    point = context.getPoint(new Snode(map.bounds.maxlat, lon + (i * (ndeg / 10))));
+                    p.moveTo(point.getX(), point.getY());
+                    point = context.getPoint(new Snode(map.bounds.maxlat - (grad * (tdeg / 20)), lon + (i * (ndeg / 10))));
+                    p.lineTo(point.getX(), point.getY());
+                    point = context.getPoint(new Snode(map.bounds.minlat, lon + (i * (ndeg / 10))));
+                    p.moveTo(point.getX(), point.getY());
+                    point = context.getPoint(new Snode(map.bounds.minlat + (grad * (tdeg / 20)), lon + (i * (ndeg / 10))));
+                    p.lineTo(point.getX(), point.getY());
+                }
+            }
+            g2.setPaint(style.line);
+            g2.draw(p);
+            g2.setStroke(new BasicStroke((float) (style.width * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
+            p = new Path2D.Double();
+            for (double lat = bottom; lat < map.bounds.maxlat; lat += tdeg) {
+                point = context.getPoint(new Snode(lat, map.bounds.maxlon));
+                p.moveTo(point.getX(), point.getY());
+                point = context.getPoint(new Snode(lat, map.bounds.minlon));
+                p.lineTo(point.getX(), point.getY());
+                double deg = Math.toDegrees(lat);
+                String ns = (deg < -0.001) ? "S" : (deg > 0.001) ? "N" : "";
+                deg = Math.abs(deg);
+                String dstr = String.format("%02d°%s", (int)Math.floor(deg), ns);
+                double min = (deg - Math.floor(deg)) * 60.0;
+                String mstr = String.format("%05.2f'", min);
+                Symbol label = new Symbol();
+                if (point.getY() < (context.getPoint(new Snode(map.bounds.minlat, map.bounds.minlon)).getY() - 200.0)) {
+                	label.add(new Instr(Form.TEXT, new Caption(dstr, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.BL, AffineTransform.getTranslateInstance(40, -10)))));
+                	label.add(new Instr(Form.TEXT, new Caption(mstr, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.BL, AffineTransform.getTranslateInstance(0, 50)))));
+                	Symbols.drawSymbol(g2, label, sScale, point.getX(), point.getY(), null, null);
+                }
+                for (int i = 1; i < 10; i++) {
+                    int grad = (i % (tdiv ? 2 : 5)) == 0 ? 2 : 1;
+                    point = context.getPoint(new Snode(lat + (i * (tdeg / 10)), map.bounds.maxlon));
+                    p.moveTo(point.getX(), point.getY());
+                    point = context.getPoint(new Snode(lat + (i * (tdeg / 10)), map.bounds.maxlon - (grad * (ndeg / 20))));
+                    p.lineTo(point.getX(), point.getY());
+                    point = context.getPoint(new Snode(lat + (i * (tdeg / 10)), map.bounds.minlon));
+                    p.moveTo(point.getX(), point.getY());
+                    point = context.getPoint(new Snode(lat + (i * (tdeg / 10)), map.bounds.minlon + (grad * (ndeg / 20))));
+                    p.lineTo(point.getX(), point.getY());
+                }
+            }
+            g2.setPaint(style.line);
+            g2.draw(p);
+            Symbol legend = new Symbol();
+            legend.add(new Instr(Form.BBOX, new Rectangle2D.Double(0, 0, 600, 250)));
+            Path2D.Double path = new Path2D.Double(); path.moveTo(0, 0); path.lineTo(600, 0); path.lineTo(600, 250); path.lineTo(0, 250); path.closePath();
+            legend.add(new Instr(Form.FILL, Color.white));
+            legend.add(new Instr(Form.PGON, path));
+            legend.add(new Instr(Form.TEXT, new Caption("Mercator Projection", new Font("Arial", Font.PLAIN, 50), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(300, 60)))));
+            legend.add(new Instr(Form.TEXT, new Caption("© OpenStreetMap contributors", new Font("Arial", Font.PLAIN, 30), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 40)))));
+            legend.add(new Instr(Form.TEXT, new Caption("EMODnet Bathymetry Consortium (2018)", new Font("Arial", Font.PLAIN, 30), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 40)))));
+            legend.add(new Instr(Form.TEXT, new Caption("EMODnet Digital Bathymetry (DTM)", new Font("Arial", Font.PLAIN, 30), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 40)))));
+            legend.add(new Instr(Form.TEXT, new Caption("http://doi.org/10.12770/18ff0d48-b203-4a65-94a9-5fd8b0ec35f6", new Font("Arial", Font.PLAIN, 20), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 35)))));
+            point = context.getPoint(new Snode(map.bounds.minlat, map.bounds.minlon));
+            Symbols.drawSymbol(g2, legend, sScale, point.getX(), point.getY(), null, new Delta(Handle.BL, AffineTransform.getTranslateInstance(0, 0)));
+        }
+    }
+    
+    public static void rose() {
+        LineStyle style = new LineStyle(Color.black, (float)2.0);
+        Point2D point = context.getPoint(new Snode(Math.toRadians(53.91649), Math.toRadians(-0.16141)));
+        g2.setPaint(Color.white);
+        g2.fill(new Ellipse2D.Double(point.getX() - 30, point.getY() - 30, 60, 60));
+        g2.setStroke(new BasicStroke((float) (style.width * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
+        Path2D.Double p = new Path2D.Double();
+        p.moveTo(point.getX() - 30, point.getY());p.lineTo(point.getX() + 30, point.getY());
+        p.moveTo(point.getX(), point.getY() - 30);p.lineTo(point.getX(), point.getY() + 30);
+        for (int i = 0; i < 360; i++) {
+        	double inner = ((i % 10) == 0) ? 0.92 : ((i % 5) == 0) ? 0.96 : 0.98;
+        	double xouter = 1750 * Math.sin(Math.toRadians(i));
+        	double youter = -1750 * Math.cos(Math.toRadians(i));
+            p.moveTo(point.getX() + xouter, point.getY() + youter);
+            p.lineTo(point.getX() + (inner * xouter), point.getY() + (inner * youter));
+            if ((i % 10) == 0) {
+            	Handle h = Handle.BC;
+            	if ((i > 0) && (i <= 90)) h = Handle.BL;
+            	else if (i == 90) h = Handle.LC;
+            	else if ((i > 90) && (i < 180)) h = Handle.LC;
+            	else if (i == 180) h = Handle.CC;
+            	else if ((i > 180) && (i <= 270)) h = Handle.RC;
+            	else if (i > 270) h = Handle.BR;
+            	Symbol value = new Symbol();
+            	value.add(new Instr(Form.BBOX, new Rectangle2D.Double(0, 0, 60, 30)));
+                value.add(new Instr(Form.TEXT, new Caption(String.format("%03d", i), new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.CC, AffineTransform.getTranslateInstance(30, 25)))));
+                Symbols.drawSymbol(g2, value, sScale, point.getX(), point.getY(), null, new Delta(h, AffineTransform.getTranslateInstance(1.02*xouter/sScale, 1.02*youter/sScale)));
+            }
+        }
+        g2.setPaint(style.line);
+        g2.draw(p);
+    }
+    
+    public static void lineCircle(LineStyle style, double radius, UniHLU units) {
+        switch (units) {
+        case HLU_FEET:
+            radius /= 6076;
+            break;
+        case HLU_KMTR:
+            radius /= 1.852;
+            break;
+        case HLU_HMTR:
+            radius /= 18.52;
+            break;
+        case HLU_SMIL:
+            radius /= 1.15078;
+            break;
+        case HLU_NMIL:
+            break;
+        default:
+            radius /= 1852;
+            break;
+        }
+        radius *= context.mile(Rules.feature);
+        Symbol circle = new Symbol();
+        if (style.fill != null) {
+            circle.add(new Instr(Form.FILL, style.fill));
+            circle.add(new Instr(Form.RSHP, new Ellipse2D.Double(-radius, -radius, radius*2, radius*2)));
+        }
+        circle.add(new Instr(Form.FILL, style.line));
+        circle.add(new Instr(Form.STRK, new BasicStroke(style.width, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1, style.dash, 0)));
+        circle.add(new Instr(Form.ELPS, new Ellipse2D.Double(-radius, -radius, radius*2, radius*2)));
+        Point2D point = context.getPoint(Rules.feature.geom.centre);
+        Symbols.drawSymbol(g2, circle, 1, point.getX(), point.getY(), null, null);
+    }
+
+    public static void fillPattern(BufferedImage image) {
+        Path2D.Double p = new Path2D.Double();
+        p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        Point2D point;
+        switch (Rules.feature.geom.prim) {
+        case POINT:
+            point = context.getPoint(Rules.feature.geom.centre);
+            g2.drawImage(image, new AffineTransformOp(AffineTransform.getScaleInstance(sScale, sScale), AffineTransformOp.TYPE_NEAREST_NEIGHBOR),
+                    (int) (point.getX() - (sScale * image.getWidth() / 2)), (int) (point.getY() - (sScale * image.getHeight() / 2)));
+            break;
+        case AREA:
+            GeomIterator git = map.new GeomIterator(Rules.feature.geom);
+            while (git.hasComp()) {
+                git.nextComp();
+                boolean newComp = true;
+                while (git.hasEdge()) {
+                    git.nextEdge();
+                    point = context.getPoint(git.next());
+                    if (newComp) {
+                        p.moveTo(point.getX(), point.getY());
+                        newComp = false;
+                    } else {
+                        p.lineTo(point.getX(), point.getY());
+                    }
+                    while (git.hasNode()) {
+                        Snode node = git.next();
+                        if (node == null) continue;
+                        point = context.getPoint(node);
+                        p.lineTo(point.getX(), point.getY());
+                    }
+                }
+            }
+            g2.setPaint(new TexturePaint(image, new Rectangle(0, 0, (1 + (int) (150 * sScale)), (1 + (int) (150 * sScale)))));
+            g2.fill(p);
+            break;
+        default:
+            break;
+        }
+    }
+
+    public static void labelText(String str, Font font, Color tc) {
+        labelText(str, font, tc, LabelStyle.NONE, null, null, null);
+    }
+
+    public static void labelText(String str, Font font, Color tc, Delta delta) {
+        labelText(str, font, tc, LabelStyle.NONE, null, null, delta);
+    }
+
+    public static void labelText(String str, Font font, Color tc, LabelStyle style, Color fg) {
+        labelText(str, font, tc, style, fg, null, null);
+    }
+
+    public static void labelText(String str, Font font, Color tc, LabelStyle style, Color fg, Color bg) {
+        labelText(str, font, tc, style, fg, bg, null);
+    }
+
+    public static void labelText(String str, Font font, Color tc, LabelStyle style, Color fg, Delta delta) {
+        labelText(str, font, tc, style, fg, null, delta);
+    }
+
+    public static void labelText(String str, Font font, Color tc, LabelStyle style, Color fg, Color bg, Delta delta) {
+        if (delta == null) delta = new Delta(Handle.CC);
+        if (bg == null) bg = new Color(0x00000000, true);
+        if (str == null || str.isEmpty()) str = " ";
+        FontRenderContext frc = g2.getFontRenderContext();
+        GlyphVector gv = font.deriveFont((float) font.getSize()).createGlyphVector(frc, str.equals(" ") ? "M" : str);
+        Rectangle2D bounds = gv.getVisualBounds();
+        double width = bounds.getWidth();
+        double height = bounds.getHeight();
+        Symbol label = new Symbol();
+        double lx, ly, tx, ty;
+        switch (style) {
+        case RRCT:
+            width += height * 1.0;
+            height *= 1.5;
+            if (width < height) width = height;
+            lx = -width / 2;
+            ly = -height / 2;
+            tx = lx + (height * 0.34);
+            ty = ly + (height * 0.17);
+            label.add(new Instr(Form.BBOX, new Rectangle2D.Double(lx, ly, width, height)));
+            label.add(new Instr(Form.FILL, bg));
+            label.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(lx, ly, width, height, height, height)));
+            label.add(new Instr(Form.FILL, fg));
+            label.add(new Instr(Form.STRK, new BasicStroke(1 + (int) (height/10), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+            label.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(lx, ly, width, height, height, height)));
+            break;
+        case VCLR:
+            width += height * 1.0;
+            height *= 2.0;
+            if (width < height) width = height;
+            lx = -width / 2;
+            ly = -height / 2;
+            tx = lx + (height * 0.27);
+            ty = ly + (height * 0.25);
+            label.add(new Instr(Form.BBOX, new Rectangle2D.Double(lx, ly, width, height)));
+            label.add(new Instr(Form.FILL, bg));
+            label.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(lx, ly, width, height, height, height)));
+            label.add(new Instr(Form.FILL, fg));
+            int sw = 1 + (int) (height/10);
+            double po = sw / 2;
+            label.add(new Instr(Form.STRK, new BasicStroke(sw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+            Path2D.Double p = new Path2D.Double(); p.moveTo(-height*0.2, -ly-po);
+            p.lineTo(height*0.2, -ly-po); p.moveTo(0, -ly-po); p.lineTo(0, -ly-po-(height*0.15));
+            p.moveTo(-height*0.2, ly+po); p.lineTo((height*0.2), ly+po); p.moveTo(0, ly+po); p.lineTo(0, ly+po+(height*0.15));
+            label.add(new Instr(Form.PLIN, p));
+            break;
+        case PCLR:
+            width += height * 1.0;
+            height *= 2.0;
+            if (width < height) width = height;
+            lx = -width / 2;
+            ly = -height / 2;
+            tx = lx + (height * 0.27);
+            ty = ly + (height * 0.25);
+            label.add(new Instr(Form.BBOX, new Rectangle2D.Double(lx, ly, width, height)));
+            label.add(new Instr(Form.FILL, bg));
+            label.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(lx, ly, width, height, height, height)));
+            label.add(new Instr(Form.FILL, fg));
+            sw = 1 + (int) (height/10);
+            po = sw / 2;
+            label.add(new Instr(Form.STRK, new BasicStroke(sw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+            p = new Path2D.Double();
+            p.moveTo(-height*0.2, -ly-po);
+            p.lineTo(height*0.2, -ly-po);
+            p.moveTo(0, -ly-po);
+            p.lineTo(0, -ly-po-(height*0.15));
+            p.moveTo(-height*0.2, ly+po);
+            p.lineTo((height*0.2), ly+po);
+            p.moveTo(0, ly+po);
+            p.lineTo(0, ly+po+(height*0.15));
+            label.add(new Instr(Form.PLIN, p));
+            label.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Areas.CableFlash, 1, 0, 0, null,
+                    new Delta(Handle.CC, new AffineTransform(0, -1, 1, 0, -width/2, 0)))));
+            label.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Areas.CableFlash, 1, 0, 0, null,
+                    new Delta(Handle.CC, new AffineTransform(0, -1, 1, 0, width/2, 0)))));
+            break;
+        case HCLR:
+            width += height * 1.5;
+            height *= 1.5;
+            if (width < height) width = height;
+            lx = -width / 2;
+            ly = -height / 2;
+            tx = lx + (height * 0.5);
+            ty = ly + (height * 0.17);
+            label.add(new Instr(Form.BBOX, new Rectangle2D.Double(lx, ly, width, height)));
+            label.add(new Instr(Form.FILL, bg));
+            label.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(lx, ly, width, height, height, height)));
+            label.add(new Instr(Form.FILL, fg));
+            sw = 1 + (int) (height/10);
+            double vo = height / 4;
+            label.add(new Instr(Form.STRK, new BasicStroke(sw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+            p = new Path2D.Double();
+            p.moveTo(-width*0.4-sw, -ly-vo);
+            p.lineTo(-width*0.4-sw, ly+vo);
+            p.moveTo(-width*0.4-sw, 0);
+            p.lineTo(-width*0.4+sw, 0);
+            p.moveTo(width*0.4+sw, -ly-vo);
+            p.lineTo(width*0.4+sw, ly+vo);
+            p.moveTo(width*0.4-sw, 0);
+            p.lineTo(width*0.4+sw, 0);
+            label.add(new Instr(Form.PLIN, p));
+            break;
+        default:
+            lx = -width / 2;
+            ly = -height / 2;
+            tx = lx;
+            ty = ly;
+            label.add(new Instr(Form.BBOX, new Rectangle2D.Double(lx, ly, width, height)));
+            break;
+        }
+        label.add(new Instr(Form.TEXT, new Caption(str, font, tc, new Delta(Handle.TL, AffineTransform.getTranslateInstance(tx, ty)))));
+        Point2D point = context.getPoint(Rules.feature.geom.centre);
+        Symbols.drawSymbol(g2, label, sScale, point.getX(), point.getY(), null, delta);
+    }
+
+    public static void lineText(String str, Font font, Color colour, double dy) {
+        if (!str.isEmpty()) {
+            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+            g2.setPaint(colour);
+            FontRenderContext frc = g2.getFontRenderContext();
+            GlyphVector gv = font.deriveFont(font.getSize2D() * (float) sScale).createGlyphVector(frc, str);
+            double width = gv.getVisualBounds().getWidth();
+            double height = gv.getVisualBounds().getHeight();
+            double offset = (Rules.feature.geom.length * context.mile(Rules.feature) - width) / 2;
+            if (offset > 0) {
+                Point2D before = null;
+                Point2D after = null;
+                ArrayList<Point2D> between = new ArrayList<>();
+                Point2D prev = null;
+                Point2D next = null;
+                double length = 0;
+                double lb = 0;
+                double la = 0;
+                GeomIterator git = map.new GeomIterator(Rules.feature.geom);
+                if (git.hasComp()) {
+                    git.nextComp();
+                    while (git.hasEdge()) {
+                        git.nextEdge();
+                        while (git.hasNode()) {
+                            Snode node = git.next();
+                            if (node == null)
+                                continue;
+                            prev = next;
+                            next = context.getPoint(node);
+                            if (prev != null)
+                                length += Math.sqrt(Math.pow((next.getX() - prev.getX()), 2) + Math.pow((next.getY() - prev.getY()), 2));
+                            if (length < offset) {
+                                before = next;
+                                lb = la = length;
+                            } else if (after == null) {
+                                if (length > (offset + width)) {
+                                    after = next;
+                                    la = length;
+                                    break;
+                                } else {
+                                    between.add(next);
+                                }
+                            }
+                        }
+                        if (after != null)
+                            break;
+                    }
+                }
+                if (after != null) {
+                    double angle = Math.atan2((after.getY() - before.getY()), (after.getX() - before.getX()));
+                    double rotate = Math.abs(angle) < (Math.PI / 2) ? angle : angle + Math.PI;
+                    Point2D mid = new Point2D.Double((before.getX() + after.getX()) / 2, (before.getY() + after.getY()) / 2);
+                    Point2D centre = context.getPoint(Rules.feature.geom.centre);
+                    AffineTransform pos = AffineTransform.getTranslateInstance(-dy * Math.sin(rotate), dy * Math.cos(rotate));
+                    pos.rotate(rotate);
+                    pos.translate((mid.getX() - centre.getX()), (mid.getY() - centre.getY()));
+                    Symbol label = new Symbol();
+                    label.add(new Instr(Form.BBOX, new Rectangle2D.Double((-width / 2), -height, width, height)));
+                    label.add(new Instr(Form.TEXT, new Caption(str, font, colour, new Delta(Handle.BC))));
+                    Symbols.drawSymbol(g2, label, sScale, centre.getX(), centre.getY(), null, new Delta(Handle.BC, pos));
+                }
+            }
+        }
+    }
+
+    public static void lightSector(Color col1, Color col2, double radius, double s1, double s2, Double dir, String str) {
+        double mid = (((s1 + s2) / 2) + (s1 > s2 ? 180 : 0)) % 360;
+        g2.setStroke(new BasicStroke((float) (3.0 * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1,
+                new float[] {20 * (float) sScale, 20 * (float) sScale}, 0));
+        g2.setPaint(Color.black);
+        Point2D.Double centre = (Point2D.Double) context.getPoint(Rules.feature.geom.centre);
+        double radial = radius * context.mile(Rules.feature);
+        if (dir != null) {
+            g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(dir)),
+                    centre.y + radial * Math.cos(Math.toRadians(dir))));
+        } else {
+            if ((s1 != 0.0) || (s2 != 360.0)) {
+                g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(s1)),
+                        centre.y + radial * Math.cos(Math.toRadians(s1))));
+                g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(s2)),
+                        centre.y + radial * Math.cos(Math.toRadians(s2))));
+            }
+        }
+        double arcWidth = 10.0 * sScale;
+        g2.setStroke(new BasicStroke((float) arcWidth, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1));
+        g2.setPaint(col1);
+        g2.draw(new Arc2D.Double(centre.x - radial, centre.y - radial, 2 * radial, 2 * radial, -(s1 + 90),
+                ((s1 < s2) ? (s1 - s2) : (s1 - s2 - 360)), Arc2D.OPEN));
+        if (col2 != null) {
+            g2.setPaint(col2);
+            g2.draw(new Arc2D.Double(centre.x - radial + arcWidth, centre.y - radial + arcWidth, 2 * (radial - arcWidth),
+                    2 * (radial - arcWidth), -(s1 + 90), ((s1 < s2) ? (s1 - s2) : (s1 - s2 - 360)), Arc2D.OPEN));
+        }
+        if (str != null && !str.isEmpty()) {
+            Font font = new Font("Arial", Font.PLAIN, 40);
+            double arc = (s2 > s1) ? (s2 - s1) : (s2 - s1 + 360);
+            double awidth = (Math.toRadians(arc) * radial);
+            boolean hand = ((mid > 270) || (mid < 90));
+            double phi = Math.toRadians(mid);
+            radial += 30 * sScale;
+            AffineTransform at = AffineTransform.getTranslateInstance(-radial * Math.sin(phi) / sScale, radial * Math.cos(phi) / sScale);
+            if ((font.getSize() * sScale * str.length()) < awidth) {
+                at.rotate(Math.toRadians(mid + (hand ? 0 : 180)));
+                labelText(str, font, Color.black, new Delta(Handle.CC, at));
+            } else if ((font.getSize() * sScale) < awidth) {
+                hand = (mid < 180);
+                at.rotate(Math.toRadians(mid + (hand ? -90 : 90)));
+                labelText(str, font, Color.black, hand ? new Delta(Handle.RC, at) : new Delta(Handle.LC, at));
+            }
+            if (dir != null) {
+                font = new Font("Arial", Font.PLAIN, 30);
+                str = dir + "°";
+                hand = (dir > 180);
+                phi = Math.toRadians(dir + (hand ? -0.5 : 0.5));
+                radial -= 70 * sScale;
+                at = AffineTransform.getTranslateInstance(-radial * Math.sin(phi) / sScale, radial * Math.cos(phi) / sScale);
+                at.rotate(Math.toRadians(dir + (hand ? 90 : -90)));
+                labelText(str, font, Color.black, hand ? new Delta(Handle.BR, at) : new Delta(Handle.BL, at));
+            }
+        }
+    }
+    
+    public static void rasterPixel(double size, Color col) {
+    	double s = Rules.feature.geom.centre.lat - (size / 2.0);
+    	double w = Rules.feature.geom.centre.lon - (size / 2.0);
+    	double n = Rules.feature.geom.centre.lat + (size / 2.0);
+    	double e = Rules.feature.geom.centre.lon + (size / 2.0);
+    	Point2D sw = context.getPoint(new Snode(s, w)); 
+    	Point2D nw = context.getPoint(new Snode(n, w)); 
+    	Point2D ne = context.getPoint(new Snode(n, e)); 
+    	Point2D se = context.getPoint(new Snode(s, e)); 
+        Symbol pixel = new Symbol();
+        Path2D.Double path = new Path2D.Double(); path.moveTo(sw.getX(), sw.getY()); path.lineTo(nw.getX(), nw.getY());
+        path.lineTo(ne.getX(), ne.getY()); path.lineTo(se.getX(), se.getY()); path.closePath();
+        pixel.add(new Instr(Form.FILL, col));
+        pixel.add(new Instr(Form.PGON, path));
+        Symbols.drawSymbol(g2, pixel, 1.0, 0, 0, null, null);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/render/Rules.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/render/Rules.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/render/Rules.java	(revision 36424)
@@ -0,0 +1,1819 @@
+// License: GPL. For details, see LICENSE file.
+package render;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.geom.AffineTransform;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.ConcurrentModificationException;
+import java.util.EnumMap;
+import java.util.HashMap;
+
+import render.ChartContext.RuleSet;
+import render.Renderer.LabelStyle;
+import s57.S57att.Att;
+import s57.S57map.AttMap;
+import s57.S57map.Feature;
+import s57.S57map.ObjTab;
+import s57.S57map.Pflag;
+import s57.S57map.Rflag;
+import s57.S57obj.Obj;
+import s57.S57val;
+import s57.S57val.AddMRK;
+import s57.S57val.AttVal;
+import s57.S57val.BcnSHP;
+import s57.S57val.BnkWTW;
+import s57.S57val.BoySHP;
+import s57.S57val.CatACH;
+import s57.S57val.CatCBL;
+import s57.S57val.CatCRN;
+import s57.S57val.CatDIS;
+import s57.S57val.CatHAF;
+import s57.S57val.CatLAM;
+import s57.S57val.CatLIT;
+import s57.S57val.CatLMK;
+import s57.S57val.CatMOR;
+import s57.S57val.CatNMK;
+import s57.S57val.CatOBS;
+import s57.S57val.CatOFP;
+import s57.S57val.CatOPA;
+import s57.S57val.CatPIL;
+import s57.S57val.CatPIP;
+import s57.S57val.CatREA;
+import s57.S57val.CatROD;
+import s57.S57val.CatSCF;
+import s57.S57val.CatSEA;
+import s57.S57val.CatSIL;
+import s57.S57val.CatSIT;
+import s57.S57val.CatSIW;
+import s57.S57val.CatSLC;
+import s57.S57val.CatVAN;
+import s57.S57val.CatWED;
+import s57.S57val.CatWRK;
+import s57.S57val.ColCOL;
+import s57.S57val.ColPAT;
+import s57.S57val.FncFNC;
+import s57.S57val.MarSYS;
+import s57.S57val.NatQUA;
+import s57.S57val.NatSUR;
+import s57.S57val.StsSTS;
+import s57.S57val.TecSOU;
+import s57.S57val.TopSHP;
+import s57.S57val.TrfTRF;
+import s57.S57val.UniHLU;
+import s57.S57val.WatLEV;
+import symbols.Areas;
+import symbols.Beacons;
+import symbols.Buoys;
+import symbols.Facilities;
+import symbols.Harbours;
+import symbols.Landmarks;
+import symbols.Notices;
+import symbols.Symbols;
+import symbols.Symbols.Delta;
+import symbols.Symbols.Handle;
+import symbols.Symbols.LineStyle;
+import symbols.Symbols.Patt;
+import symbols.Symbols.Scheme;
+import symbols.Symbols.Symbol;
+import symbols.Topmarks;
+
+/**
+ * @author Malcolm Herring
+ */
+public class Rules {
+
+	static final DecimalFormat df = new DecimalFormat("#.#");
+
+	static final EnumMap<ColCOL, Color> bodyColours = new EnumMap<>(ColCOL.class);
+	static {
+		bodyColours.put(ColCOL.COL_UNK, new Color(0, true));
+		bodyColours.put(ColCOL.COL_WHT, new Color(0xffffff));
+		bodyColours.put(ColCOL.COL_BLK, new Color(0x000000));
+		bodyColours.put(ColCOL.COL_RED, new Color(0xd40000));
+		bodyColours.put(ColCOL.COL_GRN, new Color(0x00d400));
+		bodyColours.put(ColCOL.COL_BLU, Color.blue);
+		bodyColours.put(ColCOL.COL_YEL, new Color(0xffd400));
+		bodyColours.put(ColCOL.COL_GRY, Color.gray);
+		bodyColours.put(ColCOL.COL_BRN, new Color(0x8b4513));
+		bodyColours.put(ColCOL.COL_AMB, new Color(0xfbf00f));
+		bodyColours.put(ColCOL.COL_VIO, new Color(0xee82ee));
+		bodyColours.put(ColCOL.COL_ORG, Color.orange);
+		bodyColours.put(ColCOL.COL_MAG, new Color(0xf000f0));
+		bodyColours.put(ColCOL.COL_PNK, Color.pink);
+	}
+
+	static final EnumMap<ColCOL, String> colourLetters = new EnumMap<>(ColCOL.class);
+	static {
+		colourLetters.put(ColCOL.COL_UNK, "");
+		colourLetters.put(ColCOL.COL_WHT, "W");
+		colourLetters.put(ColCOL.COL_BLK, "B");
+		colourLetters.put(ColCOL.COL_RED, "R");
+		colourLetters.put(ColCOL.COL_GRN, "G");
+		colourLetters.put(ColCOL.COL_BLU, "Bu");
+		colourLetters.put(ColCOL.COL_YEL, "Y");
+		colourLetters.put(ColCOL.COL_GRY, "Gr");
+		colourLetters.put(ColCOL.COL_BRN, "Bn");
+		colourLetters.put(ColCOL.COL_AMB, "Am");
+		colourLetters.put(ColCOL.COL_VIO, "Vi");
+		colourLetters.put(ColCOL.COL_ORG, "Or");
+		colourLetters.put(ColCOL.COL_MAG, "Mg");
+		colourLetters.put(ColCOL.COL_PNK, "Pk");
+	}
+
+	static final EnumMap<ColPAT, Patt> pattMap = new EnumMap<>(ColPAT.class);
+	static {
+		pattMap.put(ColPAT.PAT_UNKN, Patt.Z);
+		pattMap.put(ColPAT.PAT_HORI, Patt.H);
+		pattMap.put(ColPAT.PAT_VERT, Patt.V);
+		pattMap.put(ColPAT.PAT_DIAG, Patt.D);
+		pattMap.put(ColPAT.PAT_BRDR, Patt.B);
+		pattMap.put(ColPAT.PAT_SQUR, Patt.S);
+		pattMap.put(ColPAT.PAT_CROS, Patt.C);
+		pattMap.put(ColPAT.PAT_SALT, Patt.X);
+		pattMap.put(ColPAT.PAT_STRP, Patt.H);
+	}
+
+	static String getName() {
+		AttVal<?> name = feature.atts.get(Att.OBJNAM);
+		if (name == null) {
+			AttMap atts = feature.objs.get(feature.type).get(0);
+			if (atts != null) {
+				name = atts.get(Att.OBJNAM);
+			}
+		}
+		return (name != null) ? ((String) name.val).replace("&quot;", "\"") : null;
+	}
+
+	public static void addName(int z, Font font) {
+		addName(z, font, Color.black, new Delta(Handle.CC, new AffineTransform()));
+	}
+
+	public static void addName(int z, Font font, Color colour) {
+		addName(z, font, colour, new Delta(Handle.CC, new AffineTransform()));
+	}
+
+	public static void addName(int z, Font font, Delta delta) {
+		addName(z, font, Color.black, delta);
+	}
+
+	public static void addName(int z, Font font, Color colour, Delta delta) {
+		if (Renderer.zoom >= z) {
+			String name = getName();
+			if (name != null) {
+				Renderer.labelText(name, font, colour, delta);
+			}
+		}
+	}
+
+	static AttMap getAtts(Obj obj, int idx) {
+		HashMap<Integer, AttMap> objs = feature.objs.get(obj);
+		if (objs == null)
+			return null;
+		else
+			return objs.get(idx);
+	}
+
+	public static Object getAttVal(Obj obj, Att att) {
+		AttMap atts;
+		HashMap<Integer, AttMap> objs;
+		AttVal<?> item;
+		if ((objs = feature.objs.get(obj)) != null)
+			atts = objs.get(0);
+		else
+			return null;
+		if ((atts == null) || ((item = atts.get(att)) == null))
+			return null;
+		else
+			return item.val;
+	}
+
+	public static String getAttStr(Obj obj, Att att) {
+		String str = (String) getAttVal(obj, att);
+		if (str != null) {
+			return str;
+		}
+		return "";
+	}
+
+	@SuppressWarnings("unchecked")
+	public static Enum<?> getAttEnum(Obj obj, Att att) {
+		ArrayList<?> list = (ArrayList<?>) getAttVal(obj, att);
+		if (list != null) {
+			return ((ArrayList<Enum<?>>) list).get(0);
+		}
+		return S57val.unknAtt(att);
+	}
+
+	@SuppressWarnings("unchecked")
+	public static ArrayList<?> getAttList(Obj obj, Att att) {
+		ArrayList<Enum<?>> list = (ArrayList<Enum<?>>) getAttVal(obj, att);
+		if (list != null) {
+			return list;
+		}
+		list = new ArrayList<>();
+		list.add(S57val.unknAtt(att));
+		return list;
+	}
+
+	@SuppressWarnings("unchecked")
+	static Scheme getScheme(Obj obj) {
+		ArrayList<Color> colours = new ArrayList<>();
+		for (ColCOL col : (ArrayList<ColCOL>) getAttList(obj, Att.COLOUR)) {
+			colours.add(bodyColours.get(col));
+		}
+		ArrayList<Patt> patterns = new ArrayList<>();
+		for (ColPAT pat : (ArrayList<ColPAT>) getAttList(obj, Att.COLPAT)) {
+			patterns.add(pattMap.get(pat));
+		}
+		return new Scheme(patterns, colours);
+	}
+
+	static boolean hasAttribute(Obj obj, Att att) {
+		AttMap atts;
+		if ((atts = getAtts(obj, 0)) != null) {
+			AttVal<?> item = atts.get(att);
+			return item != null;
+		}
+		return false;
+	}
+
+	static boolean testAttribute(Obj obj, Att att, Object val) {
+		AttMap atts;
+		if ((atts = getAtts(obj, 0)) != null) {
+			AttVal<?> item = atts.get(att);
+			if (item != null) {
+				switch (item.conv) {
+				case S:
+				case A:
+					return ((String) item.val).equals(val);
+				case E:
+				case L:
+					return ((ArrayList<?>) item.val).contains(val);
+				case F:
+				case I:
+					return item.val == val;
+				}
+			}
+		}
+		return false;
+	}
+
+	static boolean hasObject(Obj obj) {
+		return (feature.objs.containsKey(obj));
+	}
+
+	public static Feature feature;
+	static ArrayList<Feature> objects;
+
+	static boolean testObject(Obj obj) {
+		return ((objects = Renderer.map.features.get(obj)) != null);
+	}
+
+	static boolean testFeature(Feature f) {
+		return ((feature = f).reln == Rflag.MASTER);
+	}
+
+	public static boolean rules() {
+		try {
+			if ((Renderer.context.ruleset() == RuleSet.ALL) || (Renderer.context.ruleset() == RuleSet.BASE)) {
+				if (testObject(Obj.LNDARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.SOUNDG)) for (Feature f : objects) if (testFeature(f)) depths();
+				if (testObject(Obj.DEPCNT)) for (Feature f : objects) if (testFeature(f)) depths();
+				if (testObject(Obj.TESARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.BUAARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.HRBFAC)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.HRBBSN)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.LOKBSN)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.LKBSPT)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.COALNE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.LAKARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.RIVERS)) for (Feature f : objects) if (testFeature(f)) waterways();
+				if (testObject(Obj.CANALS)) for (Feature f : objects) if (testFeature(f)) waterways();
+				if (testObject(Obj.DEPARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.ROADWY)) for (Feature f : objects) if (testFeature(f)) highways();
+				if (testObject(Obj.RAILWY)) for (Feature f : objects) if (testFeature(f)) highways();
+			}
+			if (testObject(Obj.SLCONS)) for (Feature f : objects) if (testFeature(f)) shoreline();
+			if ((Renderer.context.ruleset() == RuleSet.ALL) || (Renderer.context.ruleset() == RuleSet.SEAMARK)) {
+				if (testObject(Obj.PIPSOL)) for (Feature f : objects) if (testFeature(f)) pipelines();
+				if (testObject(Obj.CBLSUB)) for (Feature f : objects) if (testFeature(f)) cables();
+				if (testObject(Obj.PIPOHD)) for (Feature f : objects) if (testFeature(f)) pipelines();
+				if (testObject(Obj.CBLOHD)) for (Feature f : objects) if (testFeature(f)) cables();
+				if (testObject(Obj.TSEZNE)) for (Feature f : objects) if (testFeature(f)) separation();
+				if (testObject(Obj.TSSCRS)) for (Feature f : objects) if (testFeature(f)) separation();
+				if (testObject(Obj.TSSRON)) for (Feature f : objects) if (testFeature(f)) separation();
+				if (testObject(Obj.TSELNE)) for (Feature f : objects) if (testFeature(f)) separation();
+				if (testObject(Obj.TSSLPT)) for (Feature f : objects) if (testFeature(f)) separation();
+				if (testObject(Obj.TSSBND)) for (Feature f : objects) if (testFeature(f)) separation();
+				if (testObject(Obj.ISTZNE)) for (Feature f : objects) if (testFeature(f)) separation();
+				if (testObject(Obj.SBDARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.SPRING)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.SNDWAV)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.WEDKLP)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.SEGRAS)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.OSPARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.FAIRWY)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.DRGARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.RESARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.PRCARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.SPLARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.SEAARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.CBLARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.PIPARE)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.DMPGRD)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.OBSTRN)) for (Feature f : objects) if (testFeature(f)) obstructions();
+				if (testObject(Obj.UWTROC)) for (Feature f : objects) if (testFeature(f)) obstructions();
+				if (testObject(Obj.MARCUL)) for (Feature f : objects) if (testFeature(f)) areas();
+				if (testObject(Obj.RECTRC)) for (Feature f : objects) if (testFeature(f)) transits();
+				if (testObject(Obj.NAVLNE)) for (Feature f : objects) if (testFeature(f)) transits();
+				if (testObject(Obj.HRBFAC)) for (Feature f : objects) if (testFeature(f)) harbours();
+				if (testObject(Obj.ACHARE)) for (Feature f : objects) if (testFeature(f)) harbours();
+				if (testObject(Obj.ACHBRT)) for (Feature f : objects) if (testFeature(f)) harbours();
+				if (testObject(Obj.BERTHS)) for (Feature f : objects) if (testFeature(f)) harbours();
+				if (testObject(Obj.DISMAR)) for (Feature f : objects) if (testFeature(f)) distances();
+				if (testObject(Obj.HULKES)) for (Feature f : objects) if (testFeature(f)) ports();
+				if (testObject(Obj.CRANES)) for (Feature f : objects) if (testFeature(f)) ports();
+				if (testObject(Obj.LNDMRK)) for (Feature f : objects) if (testFeature(f)) landmarks();
+				if (testObject(Obj.SILTNK)) for (Feature f : objects) if (testFeature(f)) landmarks();
+				if (testObject(Obj.BUISGL)) for (Feature f : objects) if (testFeature(f)) harbours();
+				if (testObject(Obj.MORFAC)) for (Feature f : objects) if (testFeature(f)) moorings();
+				if (testObject(Obj.NOTMRK)) for (Feature f : objects) if (testFeature(f)) notices();
+				if (testObject(Obj.SMCFAC)) for (Feature f : objects) if (testFeature(f)) marinas();
+				if (testObject(Obj.BRIDGE)) for (Feature f : objects) if (testFeature(f)) bridges();
+				if (testObject(Obj.PILPNT)) for (Feature f : objects) if (testFeature(f)) points();
+				if (testObject(Obj.TOPMAR)) for (Feature f : objects) if (testFeature(f)) points();
+				if (testObject(Obj.DAYMAR)) for (Feature f : objects) if (testFeature(f)) points();
+				if (testObject(Obj.FOGSIG)) for (Feature f : objects) if (testFeature(f)) points();
+				if (testObject(Obj.RDOCAL)) for (Feature f : objects) if (testFeature(f)) callpoint();
+				if (testObject(Obj.LITMIN)) for (Feature f : objects) if (testFeature(f)) lights();
+				if (testObject(Obj.LITMAJ)) for (Feature f : objects) if (testFeature(f)) lights();
+				if (testObject(Obj.LIGHTS)) for (Feature f : objects) if (testFeature(f)) lights();
+				if (testObject(Obj.SISTAT)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.SISTAW)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.CGUSTA)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.RDOSTA)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.RADRFL)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.RADSTA)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.RTPBCN)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.RSCSTA)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.PILBOP)) for (Feature f : objects) if (testFeature(f)) stations();
+				if (testObject(Obj.WTWGAG)) for (Feature f : objects) if (testFeature(f)) gauges();
+				if (testObject(Obj.OFSPLF)) for (Feature f : objects) if (testFeature(f)) platforms();
+				if (testObject(Obj.WRECKS)) for (Feature f : objects) if (testFeature(f)) wrecks();
+				if (testObject(Obj.LITVES)) for (Feature f : objects) if (testFeature(f)) floats();
+				if (testObject(Obj.LITFLT)) for (Feature f : objects) if (testFeature(f)) floats();
+				if (testObject(Obj.BOYINB)) for (Feature f : objects) if (testFeature(f)) floats();
+				if (testObject(Obj.BOYLAT)) for (Feature f : objects) if (testFeature(f)) buoys();
+				if (testObject(Obj.BOYCAR)) for (Feature f : objects) if (testFeature(f)) buoys();
+				if (testObject(Obj.BOYISD)) for (Feature f : objects) if (testFeature(f)) buoys();
+				if (testObject(Obj.BOYSAW)) for (Feature f : objects) if (testFeature(f)) buoys();
+				if (testObject(Obj.BOYSPP)) for (Feature f : objects) if (testFeature(f)) buoys();
+				if (testObject(Obj.BCNLAT)) for (Feature f : objects) if (testFeature(f)) beacons();
+				if (testObject(Obj.BCNCAR)) for (Feature f : objects) if (testFeature(f)) beacons();
+				if (testObject(Obj.BCNISD)) for (Feature f : objects) if (testFeature(f)) beacons();
+				if (testObject(Obj.BCNSAW)) for (Feature f : objects) if (testFeature(f)) beacons();
+                if (testObject(Obj.BCNSPP)) for (Feature f : objects) if (testFeature(f)) beacons();
+                if (testObject(Obj.VAATON)) for (Feature f : objects) if (testFeature(f)) virtual();
+			}
+		} catch (ConcurrentModificationException e) {
+			return false;
+		} catch (Exception e) {
+		    e.printStackTrace();
+			return true;
+		}
+		return true;
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void areas() {
+		String name = getName();
+		switch (feature.type) {
+		case TESARE:
+			Renderer.lineSymbols(Areas.LimitDash, 0.0, Areas.LimitCC, null, 30, Symbols.Mline);
+			break;
+		case BUAARE:
+			Renderer.lineVector(new LineStyle(new Color(0x20000000, true)));
+			break;
+		case COALNE:
+			if (Renderer.zoom >= 12)
+				Renderer.lineVector(new LineStyle(Color.black, 10));
+			break;
+		case DEPARE:
+			Double depmax = (Double) getAttVal(Obj.DEPARE, Att.DRVAL2);
+			if (depmax != null) {
+				if (depmax <= 0.0) {
+					Renderer.lineVector(new LineStyle(Symbols.Gdries));
+				} else if (depmax <= 2.0) {
+					Renderer.lineVector(new LineStyle(Color.blue, 2, new Color(0x2090ff)));
+				} else if (depmax <= 5.0) {
+					Renderer.lineVector(new LineStyle(Color.blue, 2, new Color(0x40a0ff)));
+				} else if (depmax <= 10.0) {
+					Renderer.lineVector(new LineStyle(Color.blue, 2, new Color(0x60b0ff)));
+				} else if (depmax <= 15.0) {
+					Renderer.lineVector(new LineStyle(Color.blue, 2, new Color(0x80c0ff)));
+				} else if (depmax <= 20.0) {
+					Renderer.lineVector(new LineStyle(Color.blue, 2, new Color(0xa0d0ff)));
+				} else if (depmax <= 50.0) {
+					Renderer.lineVector(new LineStyle(Color.blue, 2, new Color(0xc0e0ff)));
+				} else {
+					Renderer.lineVector(new LineStyle(Color.blue, 2, new Color(0xe0f0ff)));
+				}
+			}
+			break;
+		case CANALS:
+		case LAKARE:
+		case RIVERS:
+			if ((Renderer.zoom >= 12) || (feature.geom.area > 10.0))
+				Renderer.lineVector(new LineStyle(Symbols.Bwater, 11, Symbols.Bwater));
+			break;
+		case DRGARE:
+			if (Renderer.zoom < 16)
+				Renderer.lineVector(new LineStyle(Color.black, 8, new float[] { 25, 25 }, new Color(0x40ffffff, true)));
+			else
+				Renderer.lineVector(new LineStyle(Color.black, 8, new float[] { 25, 25 }));
+			addName(12, new Font("Arial", Font.PLAIN, 100), new Delta(Handle.CC, new AffineTransform()));
+			break;
+		case FAIRWY:
+            if (Renderer.zoom >= 12) {
+                if (feature.geom.area > 1.0) {
+                    if (Renderer.zoom < 16)
+                        Renderer.lineVector(new LineStyle(new Color(0x20ffffff, true)));
+                    else
+                        Renderer.lineVector(new LineStyle(Symbols.Mline, 8, new float[] { 50, 50 }));
+                } else {
+                    if (Renderer.zoom >= 14)
+                        Renderer.lineVector(new LineStyle(new Color(0x20ffffff, true)));
+                }
+            }
+			break;
+		case LKBSPT:
+		case LOKBSN:
+		case HRBBSN:
+			if (Renderer.zoom >= 12) {
+				Renderer.lineVector(new LineStyle(Color.black, 10, Symbols.Bwater));
+			} else {
+				Renderer.lineVector(new LineStyle(Symbols.Bwater));
+			}
+			break;
+		case HRBFAC:
+			if (feature.objs.get(Obj.HRBBSN) != null) {
+				if (Renderer.zoom >= 12) {
+					Renderer.lineVector(new LineStyle(Color.black, 10, Symbols.Bwater));
+				} else {
+					Renderer.lineVector(new LineStyle(Symbols.Bwater));
+				}
+			}
+			break;
+		case LNDARE:
+			Renderer.lineVector(new LineStyle(Symbols.Yland));
+			break;
+		case MARCUL:
+			if (Renderer.zoom >= 12) {
+				if (Renderer.zoom >= 14) {
+					Renderer.symbol(Areas.MarineFarm);
+				}
+				if ((feature.geom.area > 0.2) || ((feature.geom.area > 0.05) && (Renderer.zoom >= 14)) || ((feature.geom.area > 0.005) && (Renderer.zoom >= 16))) {
+					Renderer.lineVector(new LineStyle(Color.black, 4, new float[] { 10, 10 }));
+				}
+			}
+			break;
+		case OSPARE:
+			if (testAttribute(feature.type, Att.CATOPA, CatOPA.OPA_WIND)) {
+				Renderer.symbol(Areas.WindFarm);
+				Renderer.lineVector(new LineStyle(Color.black, 12, new float[] { 40, 40 }));
+				addName(15, new Font("Arial", Font.BOLD, 80), new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 120)));
+			}
+			break;
+		case RESARE:
+		case MIPARE:
+		case DMPGRD:
+			if (Renderer.zoom >= 12) {
+				Renderer.lineSymbols(Areas.Restricted, 1.0, null, null, 0, Symbols.Mline);
+				if (testAttribute(feature.type, Att.CATREA, CatREA.REA_NWAK)) {
+					Renderer.symbol(Areas.NoWake);
+				}
+			}
+			break;
+		case PRCARE:
+			if (Renderer.zoom >= 12) {
+				Renderer.lineVector(new LineStyle(Symbols.Mline, 10, new float[] { 40, 40 }));
+			}
+			break;
+		case SEAARE:
+			switch ((CatSEA) getAttEnum(feature.type, Att.CATSEA)) {
+			case SEA_RECH:
+				if ((Renderer.zoom >= 15) && (name != null))
+					if (feature.geom.prim == Pflag.LINE) {
+						Renderer.lineText(name, new Font("Arial", Font.PLAIN, 60), Color.black, -40);
+					} else {
+						Renderer.labelText(name, new Font("Arial", Font.PLAIN, 60), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)));
+					}
+				break;
+			case SEA_BAY:
+				if ((Renderer.zoom >= 15) && (name != null))
+					if (feature.geom.prim == Pflag.LINE) {
+						Renderer.lineText(name, new Font("Arial", Font.PLAIN, 60), Color.black, -40);
+					} else {
+						Renderer.labelText(name, new Font("Arial", Font.PLAIN, 60), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)));
+					}
+				break;
+			case SEA_SHOL:
+				if (Renderer.zoom >= 14) {
+					if (feature.geom.prim == Pflag.AREA) {
+						Renderer.lineVector(new LineStyle(new Color(0xc480ff), 4, new float[] { 25, 25 }));
+						if (name != null) {
+							Renderer.labelText(name, new Font("Arial", Font.ITALIC, 75), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
+							Renderer.labelText("(Shoal)", new Font("Arial", Font.PLAIN, 60), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 20)));
+						}
+					} else if (feature.geom.prim == Pflag.LINE) {
+						if (name != null) {
+							Renderer.lineText(name, new Font("Arial", Font.ITALIC, 75), Color.black, -40);
+							Renderer.lineText("(Shoal)", new Font("Arial", Font.PLAIN, 60), Color.black, 20);
+						}
+					} else {
+						if (name != null) {
+							Renderer.labelText(name, new Font("Arial", Font.ITALIC, 75), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
+							Renderer.labelText("(Shoal)", new Font("Arial", Font.PLAIN, 60), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 20)));
+						}
+					}
+				}
+				break;
+			case SEA_GAT:
+			case SEA_NRRW:
+				addName(12, new Font("Arial", Font.PLAIN, 100));
+				break;
+			default:
+				break;
+			}
+			break;
+		case SNDWAV:
+			if (Renderer.zoom >= 14)
+				Renderer.fillPattern(Areas.Sandwaves);
+			break;
+		case SBDARE:
+			if (Renderer.zoom >= 14) {
+				String str = "";
+				String sep = ".";
+				if (hasAttribute(feature.type, Att.NATSUR)) {
+					ArrayList<NatSUR> surs = (ArrayList<NatSUR>) getAttList(feature.type, Att.NATSUR);
+					ArrayList<NatQUA> quas = new ArrayList<>();
+					if (hasAttribute(feature.type, Att.NATQUA)) {
+						quas = (ArrayList<NatQUA>) getAttList(feature.type, Att.NATQUA);
+					}
+					for (int i = 0; i < surs.size(); i++) {
+						if (!str.isEmpty()) {
+							str += sep;
+							sep = ".";
+						}
+						if (quas.size() > i) {
+							switch (quas.get(i)) {
+							case QUA_FINE:
+								str += "f";
+								break;
+							case QUA_MEDM:
+								str += "m";
+								break;
+							case QUA_CORS:
+								str += "c";
+								break;
+							case QUA_BRKN:
+								str += "bk";
+								break;
+							case QUA_STKY:
+								str += "sy";
+								break;
+							case QUA_SOFT:
+								str += "so";
+								break;
+							case QUA_STIF:
+								str += "sf";
+								break;
+							case QUA_VCNC:
+								str += "v";
+								break;
+							case QUA_CALC:
+								str += "ca";
+								break;
+							case QUA_HARD:
+								str += "h";
+								break;
+							default:
+								break;
+							}
+						}
+						switch (surs.get(i)) {
+						case SUR_MUD:
+							str += "M";
+
+							break;
+						case SUR_CLAY:
+							str += "Cy";
+							break;
+						case SUR_SILT:
+							str += "Si";
+							break;
+						case SUR_SAND:
+							str += "S";
+
+							break;
+						case SUR_STON:
+							str += "St";
+
+							break;
+						case SUR_GRVL:
+							str += "G";
+
+							break;
+						case SUR_PBBL:
+							str += "P";
+							break;
+						case SUR_CBBL:
+							str += "Cb";
+							break;
+						case SUR_ROCK:
+							str += "R";
+							if (feature.geom.prim != Pflag.POINT) {
+								Renderer.lineSymbols(Areas.Rocks, 1, null, null, 0, Color.black);
+							}
+							break;
+						case SUR_LAVA:
+							str += "Lv";
+							break;
+						case SUR_CORL:
+							str += "Co";
+							if (feature.geom.prim != Pflag.POINT) {
+								Renderer.lineSymbols(Areas.Coral, 1, null, null, 0, Color.black);
+							}
+							break;
+						case SUR_SHEL:
+							str += "Sh";
+							break;
+						case SUR_BLDR:
+							str += "Bo";
+							break;
+						default:
+							str = str.substring(0, str.length() - 1) + "/";
+							sep = "";
+							break;
+						}
+					}
+					if (!str.isEmpty()) {
+						Renderer.labelText(str, new Font("Arial", Font.ITALIC, 40), Color.black, new Delta(Handle.CC));
+					}
+				}
+			}
+			break;
+		case WEDKLP:
+			if (Renderer.zoom >= 14) {
+				switch ((CatWED) getAttEnum(feature.type, Att.CATWED)) {
+				case WED_KELP:
+					if (feature.geom.prim == Pflag.POINT) {
+						Renderer.symbol(Areas.KelpP);
+					} else {
+						Renderer.fillPattern(Areas.Kelp);
+					}
+					break;
+				case WED_SWED:
+					Renderer.labelText("Wd", new Font("Arial", Font.ITALIC, 40), Color.black, new Delta(Handle.CC));
+					break;
+				case WED_SGRS:
+					if (feature.geom.prim == Pflag.POINT) {
+						Renderer.symbol(Areas.SeagrassP);
+					} else {
+						Renderer.fillPattern(Areas.Seagrass);
+					}
+					break;
+				case WED_SGSO:
+					break;
+				default:
+					break;
+				}
+			}
+			break;
+		case SEGRAS:
+			if (Renderer.zoom >= 14) {
+				if (feature.geom.prim == Pflag.POINT) {
+					Renderer.symbol(Areas.SeagrassP);
+				} else {
+					Renderer.fillPattern(Areas.Seagrass);
+				}
+			}
+			break;
+		case SPRING:
+			if (Renderer.zoom >= 14) {
+				Renderer.symbol(Areas.Spring);
+			}
+			break;
+		case SPLARE:
+			if (Renderer.zoom >= 12) {
+				Renderer.symbol(Areas.Plane, new Scheme(Symbols.Msymb));
+				Renderer.lineSymbols(Areas.Restricted, 0.5, Areas.LinePlane, null, 10, Symbols.Mline);
+				addName(15, new Font("Arial", Font.BOLD, 80), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -90)));
+			}
+			break;
+		case CBLARE:
+			if (Renderer.zoom >= 12) {
+			Renderer.lineSymbols(Areas.Restricted, 1.0, Areas.Cable, null, 4, Symbols.Mline);
+			}
+			break;
+		case PIPARE:
+			if (Renderer.zoom >= 12) {
+			Renderer.lineSymbols(Areas.Restricted, 1.0, Areas.Pipeline, null, 4, Symbols.Mline);
+			break;
+			}
+		default:
+			break;
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void beacons() {
+		if ((Renderer.zoom >= 14) || ((Renderer.zoom >= 12) && ((feature.type == Obj.BCNLAT) || (feature.type == Obj.BCNCAR)))
+				|| ((Renderer.zoom >= 11) && ((feature.type == Obj.BCNSAW) || hasObject(Obj.RTPBCN)))) {
+			if (testAttribute(feature.type, Att.STATUS, StsSTS.STS_ILLD)) {
+				Renderer.symbol(Beacons.Floodlight);
+			}
+			BcnSHP shape = (BcnSHP) getAttEnum(feature.type, Att.BCNSHP);
+			if (shape == BcnSHP.BCN_UNKN)
+				shape = BcnSHP.BCN_PILE;
+			if ((shape == BcnSHP.BCN_WTHY) && (feature.type == Obj.BCNLAT)) {
+				switch ((CatLAM) getAttEnum(feature.type, Att.CATLAM)) {
+				case LAM_PORT:
+					Renderer.symbol(Beacons.WithyPort);
+					break;
+				case LAM_STBD:
+					Renderer.symbol(Beacons.WithyStarboard);
+					break;
+				default:
+					Renderer.symbol(Beacons.Stake, getScheme(feature.type));
+				}
+			} else if (shape == BcnSHP.BCN_PRCH && feature.type == Obj.BCNLAT && !feature.objs.containsKey(Obj.TOPMAR)) {
+				switch ((CatLAM) getAttEnum(feature.type, Att.CATLAM)) {
+				case LAM_PORT:
+					Renderer.symbol(Beacons.PerchPort);
+					break;
+				case LAM_STBD:
+					Renderer.symbol(Beacons.PerchStarboard);
+					break;
+				default:
+					Renderer.symbol(Beacons.Stake, getScheme(feature.type));
+				}
+			} else {
+				Renderer.symbol(Beacons.Shapes.get(shape), getScheme(feature.type));
+				if (feature.objs.containsKey(Obj.TOPMAR)) {
+					AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
+					if (testAttribute(Obj.TOPMAR, Att.STATUS, StsSTS.STS_ILLD)) {
+						Renderer.symbol(Beacons.Floodlight);
+					}
+					if (topmap.containsKey(Att.TOPSHP)) {
+						Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.TOPMAR), Topmarks.BeaconDelta);
+					}
+				} else if (feature.objs.containsKey(Obj.DAYMAR)) {
+					AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
+					if (topmap.containsKey(Att.TOPSHP)) {
+						Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.DAYMAR), Topmarks.BeaconDelta);
+					}
+				}
+			}
+			if (hasObject(Obj.NOTMRK))
+				notices();
+			addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(60, -50)));
+			Signals.addSignals();
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void buoys() {
+		if ((Renderer.zoom >= 14) || ((Renderer.zoom >= 12) && ((feature.type == Obj.BOYLAT) || (feature.type == Obj.BOYCAR))) || ((Renderer.zoom >= 11) && ((feature.type == Obj.BOYSAW) || hasObject(Obj.RTPBCN)))) {
+			BoySHP shape = (BoySHP) getAttEnum(feature.type, Att.BOYSHP);
+			if (shape == BoySHP.BOY_UNKN)
+				shape = BoySHP.BOY_PILR;
+			Renderer.symbol(Buoys.Shapes.get(shape), getScheme(feature.type));
+			if (feature.objs.containsKey(Obj.TOPMAR)) {
+				AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.TOPMAR), Topmarks.BuoyDeltas.get(shape));
+				}
+			} else if (feature.objs.containsKey(Obj.DAYMAR)) {
+				AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.DAYMAR), Topmarks.BuoyDeltas.get(shape));
+				}
+			}
+			addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(60, -50)));
+			Signals.addSignals();
+		}
+	}
+
+	private static void bridges() {
+		if (Renderer.zoom >= 16) {
+			double verclr, verccl, vercop, horclr;
+			AttMap atts = feature.objs.get(Obj.BRIDGE).get(0);
+			String vstr = "";
+			String hstr = "";
+			if (atts != null) {
+				if (atts.containsKey(Att.HORCLR)) {
+					horclr = (Double) atts.get(Att.HORCLR).val;
+					hstr = String.valueOf(horclr);
+				}
+				if (atts.containsKey(Att.VERCLR)) {
+					verclr = (Double) atts.get(Att.VERCLR).val;
+				} else {
+					verclr = atts.containsKey(Att.VERCSA) ? (Double) atts.get(Att.VERCSA).val : 0;
+				}
+				verccl = atts.containsKey(Att.VERCCL) ? (Double) atts.get(Att.VERCCL).val : 0;
+				vercop = atts.containsKey(Att.VERCOP) ? (Double) atts.get(Att.VERCOP).val : 0;
+				if (verclr > 0) {
+					vstr += String.valueOf(verclr);
+				} else if (verccl > 0) {
+					if (vercop == 0) {
+						vstr += String.valueOf(verccl) + "/-";
+					} else {
+						vstr += String.valueOf(verccl) + "/" + String.valueOf(vercop);
+					}
+				}
+				if (hstr.isEmpty() && !vstr.isEmpty()) {
+					Renderer.labelText(vstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.VCLR, Color.black, Color.white, new Delta(Handle.CC));
+				} else if (!hstr.isEmpty() && !vstr.isEmpty()) {
+					Renderer.labelText(vstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.VCLR, Color.black, Color.white, new Delta(Handle.BC));
+					Renderer.labelText(hstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.HCLR, Color.black, Color.white, new Delta(Handle.TC));
+				} else if (!hstr.isEmpty() && vstr.isEmpty()) {
+					Renderer.labelText(hstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.HCLR, Color.black, Color.white, new Delta(Handle.CC));
+				}
+			}
+            Signals.addSignals();
+		}
+	}
+
+	private static void cables() {
+		if (((Renderer.zoom >= 14) && (feature.geom.length > 2) && (feature.geom.length < 20)) || ((Renderer.zoom >= 16) && (feature.geom.length <= 2))) {
+			if (feature.type == Obj.CBLSUB) {
+				Renderer.lineSymbols(Areas.Cable, 0.0, null, null, 0, Symbols.Mline);
+			} else if (feature.type == Obj.CBLOHD) {
+				AttMap atts = feature.objs.get(Obj.CBLOHD).get(0);
+				if (atts != null && atts.containsKey(Att.CATCBL) && atts.get(Att.CATCBL).val == CatCBL.CBL_POWR) {
+					Renderer.lineSymbols(Areas.CableDash, 0, Areas.CableDot, Areas.CableFlash, 2, Color.black);
+				} else {
+					Renderer.lineSymbols(Areas.CableDash, 0, Areas.CableDot, null, 2, Color.black);
+				}
+				if (atts != null) {
+					if (atts.containsKey(Att.VERCLR)) {
+						Renderer.labelText(String.valueOf(atts.get(Att.VERCLR).val), new Font("Arial", Font.PLAIN, 50), Color.black, LabelStyle.VCLR, Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
+					} else if (atts.containsKey(Att.VERCSA)) {
+						Renderer.labelText(String.valueOf(atts.get(Att.VERCSA).val), new Font("Arial", Font.PLAIN, 50), Color.black, LabelStyle.PCLR, Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
+					}
+				}
+			}
+		}
+	}
+
+	private static void callpoint() {
+		if (Renderer.zoom >= 14) {
+			Symbol symb = Harbours.CallPoint2;
+			TrfTRF trf = (TrfTRF) getAttEnum(feature.type, Att.TRAFIC);
+			if (trf != TrfTRF.TRF_TWOW) {
+				symb = Harbours.CallPoint1;
+			}
+			Double orient = 0.0;
+			if ((orient = (Double) getAttVal(feature.type, Att.ORIENT)) == null) {
+				orient = 0.0;
+			}
+			Renderer.symbol(symb, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(orient))));
+			String chn;
+			if (!(chn = getAttStr(feature.type, Att.COMCHA)).isEmpty()) {
+				Renderer.labelText(("Ch." + chn), new Font("Arial", Font.PLAIN, 50), Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 50)));
+			}
+		}
+	}
+
+	private static void depths() {
+		switch (feature.type) {
+		case SOUNDG:
+			if (testAttribute(Obj.SOUNDG, Att.TECSOU, TecSOU.SOU_COMP) && hasAttribute(Obj.SOUNDG, Att.VALSOU)) {
+				double depth = (double) getAttVal(Obj.SOUNDG, Att.VALSOU);
+				Color col = new Color(0x00ffffff, true);
+				if (depth > 0.0) col =  new Color(0x2090ff);
+				if (depth > 2.0) col =  new Color(0x40a0ff);
+				if (depth > 5.0) col =  new Color(0x60b0ff);
+				if (depth > 10.0) col = new Color(0x80c0ff);
+				if (depth > 15.0) col = new Color(0xa0d0ff);
+				if (depth > 20.0) col = new Color(0xc0e0ff);
+				if (depth > 50.0) col = new Color(0xe0f0ff);
+				Renderer.rasterPixel(Math.toRadians(1.0/60.0/16.0), col);
+			} else if ((Renderer.zoom >= 14) && hasAttribute(Obj.SOUNDG, Att.VALSOU)) {
+				double depth = (double) getAttVal(Obj.SOUNDG, Att.VALSOU);
+				String dstr = df.format(depth);
+				String[] tok = dstr.split("[-.]");
+				String ul = "";
+				String id = tok[0];
+				String dd = "";
+				if (tok[0].equals("")) {
+					for (int i = 0; i < tok[1].length(); i++) {
+						ul += "_";
+					}
+					id = tok[1];
+					dd = (tok.length == 3) ? tok[2] : "";
+				} else {
+					dd = (tok.length == 2) ? tok[1] : "";
+				}
+				Renderer.labelText(ul, new Font("Arial", Font.PLAIN, 30), Color.black, new Delta(Handle.RC, AffineTransform.getTranslateInstance(10, 15)));
+				Renderer.labelText(id, new Font("Arial", Font.PLAIN, 30), Color.black, new Delta(Handle.RC, AffineTransform.getTranslateInstance(10, 0)));
+				Renderer.labelText(dd, new Font("Arial", Font.PLAIN, 20), Color.black, new Delta(Handle.LC, AffineTransform.getTranslateInstance(15, 10)));
+			}
+			break;
+		case DEPCNT:
+			Renderer.lineVector(new LineStyle(Color.blue, 2));
+			break;
+		default:
+			break;
+		}
+	}
+
+	private static void distances() {
+		if (Renderer.zoom >= 14) {
+			if (!testAttribute(Obj.DISMAR, Att.CATDIS, CatDIS.DIS_NONI)) {
+				Renderer.symbol(Harbours.DistanceI);
+			} else {
+				Renderer.symbol(Harbours.DistanceU);
+			}
+			if (Renderer.zoom >= 15) {
+				AttMap atts = getAtts(Obj.DISMAR, 0);
+				if (atts != null && atts.containsKey(Att.WTWDIS)) {
+					Double dist = (Double) atts.get(Att.WTWDIS).val;
+					String str = "";
+					if (atts.containsKey(Att.HUNITS)) {
+						switch ((UniHLU) getAttEnum(Obj.DISMAR, Att.HUNITS)) {
+						case HLU_METR:
+							str += "m ";
+							break;
+						case HLU_FEET:
+							str += "ft ";
+							break;
+						case HLU_HMTR:
+							str += "hm ";
+							break;
+						case HLU_KMTR:
+							str += "km ";
+							break;
+						case HLU_SMIL:
+							str += "M ";
+							break;
+						case HLU_NMIL:
+							str += "NM ";
+							break;
+						default:
+							break;
+						}
+					}
+					str += String.format("%3.1f", dist);
+					Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, 45)));
+				}
+			}
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void floats() {
+		if ((Renderer.zoom >= 12) || ((Renderer.zoom >= 11) && ((feature.type == Obj.LITVES) || (feature.type == Obj.BOYINB) || hasObject(Obj.RTPBCN)))) {
+			switch (feature.type) {
+			case LITVES:
+				Renderer.symbol(Buoys.Super, getScheme(feature.type));
+				break;
+			case LITFLT:
+				Renderer.symbol(Buoys.Float, getScheme(feature.type));
+				break;
+			case BOYINB:
+				Renderer.symbol(Buoys.Super, getScheme(feature.type));
+				break;
+			default:
+				break;
+			}
+			if (feature.objs.containsKey(Obj.TOPMAR)) {
+				AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.TOPMAR), Topmarks.FloatDelta);
+				}
+			} else if (feature.objs.containsKey(Obj.DAYMAR)) {
+				AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.DAYMAR), Topmarks.FloatDelta);
+				}
+			}
+			addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(20, -50)));
+			Signals.addSignals();
+		}
+	}
+
+	private static void gauges() {
+		if (Renderer.zoom >= 14) {
+			Renderer.symbol(Harbours.TideGauge);
+			addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(20, -50)));
+			Signals.addSignals();
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void harbours() {
+		String name = getName();
+		switch (feature.type) {
+		case ACHBRT:
+			if (Renderer.zoom >= 14) {
+				Renderer.symbol(Harbours.Anchor, new Scheme(Symbols.Msymb));
+				if (Renderer.zoom >= 15) {
+					Renderer.labelText(name == null ? "" : name, new Font("Arial", Font.PLAIN, 30), Symbols.Msymb, LabelStyle.RRCT, Symbols.Msymb, Color.white, new Delta(Handle.BC));
+				}
+			}
+			if (getAttVal(Obj.ACHBRT, Att.RADIUS) != null) {
+				double radius;
+				if ((radius = (Double) getAttVal(Obj.ACHBRT, Att.RADIUS)) != 0) {
+					UniHLU units = (UniHLU) getAttEnum(Obj.ACHBRT, Att.HUNITS);
+					if (units == UniHLU.HLU_UNKN) {
+						units = UniHLU.HLU_METR;
+					}
+					Renderer.lineCircle(new LineStyle(Symbols.Mline, 4, new float[] { 10, 10 }, null), radius, units);
+				}
+			}
+			break;
+		case ACHARE:
+			if (Renderer.zoom >= 12) {
+				ArrayList<CatACH> cats = (ArrayList<CatACH>) getAttList(Obj.ACHARE, Att.CATACH);
+				if (feature.geom.prim != Pflag.AREA) {
+					Renderer.symbol(Harbours.Anchorage, new Scheme(Color.black));
+				} else {
+					if (cats.contains(CatACH.ACH_SMCM)) {
+						Renderer.symbol(Buoys.Shapes.get(BoySHP.BOY_SPHR), new Scheme(Symbols.Msymb));
+			        	Renderer.symbol(Topmarks.TopMooring, Topmarks.BuoyDeltas.get(BoySHP.BOY_SPHR));
+					} else {
+						Renderer.symbol(Harbours.Anchorage, new Scheme(Symbols.Mline));
+					}
+					Renderer.lineSymbols(Areas.Restricted, 1.0, Areas.LineAnchor, null, 10, Symbols.Mline);
+				}
+				addName(15, new Font("Arial", Font.BOLD, 60), Symbols.Mline, new Delta(Handle.LC, AffineTransform.getTranslateInstance(70, 0)));
+				ArrayList<StsSTS> sts = (ArrayList<StsSTS>) getAttList(Obj.ACHARE, Att.STATUS);
+				if (Renderer.zoom >= 15 && sts.contains(StsSTS.STS_RESV)) {
+					Renderer.labelText("Reserved", new Font("Arial", Font.PLAIN, 50), Symbols.Mline, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 60)));
+				}
+				int dy = (cats.size() - 1) * -30;
+				for (CatACH cat : cats) {
+					switch (cat) {
+					case ACH_DEEP:
+						Renderer.labelText("DW", new Font("Arial", Font.BOLD, 50), Symbols.Msymb, new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+						dy += 60;
+						break;
+					case ACH_TANK:
+						Renderer.labelText("Tanker", new Font("Arial", Font.BOLD, 50), Symbols.Msymb, new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+						dy += 60;
+						break;
+					case ACH_H24P:
+						Renderer.labelText("24h", new Font("Arial", Font.BOLD, 50), Symbols.Msymb, new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+						dy += 60;
+						break;
+					case ACH_EXPL:
+						Renderer.symbol(Harbours.Explosives, new Scheme(Symbols.Msymb), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+						dy += 60;
+						break;
+					case ACH_QUAR:
+						Renderer.symbol(Harbours.Hospital, new Scheme(Symbols.Msymb), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+						dy += 60;
+						break;
+					case ACH_SEAP:
+						Renderer.symbol(Areas.Seaplane, new Scheme(Symbols.Msymb), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+						dy += 60;
+						break;
+					case ACH_SMCF:
+					case ACH_SMCM:
+						Renderer.labelText("Small", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+						Renderer.labelText("Craft", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.LC, AffineTransform.getTranslateInstance(60, dy)));
+						dy += 60;
+						break;
+					default:
+					}
+				}
+			}
+			break;
+		case BERTHS:
+			if (Renderer.zoom >= 14) {
+				Renderer.lineVector(new LineStyle(Symbols.Mline, 6, new float[] { 20, 20 }));
+				Renderer.labelText(name == null ? " " : name, new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, LabelStyle.RRCT, Symbols.Mline, Color.white);
+			}
+			break;
+        case BUISGL:
+            if (Renderer.zoom >= 15) {
+                Renderer.lineVector(new LineStyle(Color.black, 8, new Color(0xffc0c0c0, true)));
+                if (testAttribute(Obj.BUISGL, Att.FUNCTN, FncFNC.FNC_LOOK)) {
+                    Renderer.labelText("Lookout", new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, 50)));
+                    addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, -50)));
+                }
+                if (Renderer.zoom >= 16) {
+                	if (testAttribute(Obj.BUISGL, Att.STATUS, StsSTS.STS_ILLD)) {
+                		Renderer.symbol(Beacons.Floodlight);
+                	}
+                	ArrayList<Symbol> symbols = new ArrayList<>();
+                	ArrayList<FncFNC> fncs = (ArrayList<FncFNC>) getAttList(Obj.BUISGL, Att.FUNCTN);
+                	for (FncFNC fnc : fncs) {
+                		symbols.add(Landmarks.Funcs.get(fnc));
+                	}
+                	if (feature.objs.containsKey(Obj.SMCFAC)) {
+                		ArrayList<CatSCF> scfs = (ArrayList<CatSCF>) getAttList(Obj.SMCFAC, Att.CATSCF);
+                		for (CatSCF scf : scfs) {
+                			symbols.add(Facilities.Cats.get(scf));
+                		}
+                	}
+                	Renderer.cluster(symbols);
+                	Signals.addSignals();
+                }
+            }
+            break;
+		case HRBFAC:
+			if (Renderer.zoom >= 12) {
+				ArrayList<CatHAF> cathaf = (ArrayList<CatHAF>) getAttList(Obj.HRBFAC, Att.CATHAF);
+				if (cathaf.size() == 1) {
+					switch (cathaf.get(0)) {
+					case HAF_MRNA:
+						Renderer.symbol(Harbours.Marina);
+						break;
+					case HAF_MANF:
+						Renderer.symbol(Harbours.MarinaNF);
+						break;
+					case HAF_FISH:
+						Renderer.symbol(Harbours.Fishing);
+						break;
+					default:
+						Renderer.symbol(Harbours.Harbour);
+						break;
+					}
+				} else {
+					Renderer.symbol(Harbours.Harbour);
+				}
+                addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, -80)));
+			}
+			break;
+		default:
+			break;
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void highways() {
+		switch (feature.type) {
+		case ROADWY:
+			ArrayList<CatROD> cat = (ArrayList<CatROD>) getAttList(Obj.ROADWY, Att.CATROD);
+			if (cat.size() > 0) {
+				switch (cat.get(0)) {
+				case ROD_MWAY:
+					Renderer.lineVector(new LineStyle(Color.black, 20));
+					break;
+				case ROD_MAJR:
+					Renderer.lineVector(new LineStyle(Color.black, 15));
+					break;
+				case ROD_MINR:
+					Renderer.lineVector(new LineStyle(Color.black, 10));
+					break;
+				default:
+					Renderer.lineVector(new LineStyle(Color.black, 5));
+				}
+			} else {
+				Renderer.lineVector(new LineStyle(Color.black, 5));
+			}
+			break;
+		case RAILWY:
+			Renderer.lineVector(new LineStyle(Color.gray, 10));
+			Renderer.lineVector(new LineStyle(Color.black, 10, new float[] { 30, 30 }));
+			break;
+		default:
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void landmarks() {
+		if (!hasAttribute(Obj.LNDMRK, Att.CATLMK) && (!hasAttribute(Obj.LNDMRK, Att.FUNCTN) || testAttribute(Obj.LNDMRK, Att.FUNCTN, FncFNC.FNC_LGHT)) && hasObject(Obj.LIGHTS)) {
+			lights();
+		} else if (Renderer.zoom >= 12) {
+			switch (feature.type) {
+			case LNDMRK:
+				if (testAttribute(Obj.LNDMRK, Att.STATUS, StsSTS.STS_ILLD)) {
+					Renderer.symbol(Beacons.Floodlight);
+				}
+				ArrayList<CatLMK> cats = (ArrayList<CatLMK>) getAttList(feature.type, Att.CATLMK);
+				Symbol catSym = Landmarks.Shapes.get(cats.get(0));
+				ArrayList<FncFNC> fncs = (ArrayList<FncFNC>) getAttList(feature.type, Att.FUNCTN);
+				Symbol fncSym = Landmarks.Funcs.get(fncs.get(0));
+				if ((fncs.get(0) == FncFNC.FNC_CHCH) && (cats.get(0) == CatLMK.LMK_TOWR))
+					catSym = Landmarks.ChurchTower;
+				if (cats.get(0) == CatLMK.LMK_RADR)
+					fncSym = Landmarks.RadioTV;
+				Renderer.symbol(catSym);
+				Renderer.symbol(fncSym);
+				break;
+			case SILTNK:
+				if (testAttribute(feature.type, Att.CATSIL, CatSIL.SIL_WTRT))
+					Renderer.symbol(Landmarks.WaterTower);
+				break;
+			default:
+				break;
+			}
+			if (Renderer.zoom >= 15) {
+				Renderer.colLetters(getAttList(feature.type, Att.COLOUR));
+			}
+			Signals.addSignals();
+            addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(60, -50)));
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void lights() {
+		boolean ok = false;
+		switch (feature.type) {
+		case LITMAJ:
+		case LNDMRK:
+            Renderer.symbol(Beacons.LightMajor);
+			if (Renderer.zoom >= 12) {
+				ok = true;
+			} else {
+			    Signals.lights();
+			}
+			break;
+		case LITMIN:
+		case LIGHTS:
+		case PILPNT:
+			if (Renderer.zoom >= 14) {
+				if (testAttribute(Obj.LIGHTS, Att.CATLIT, CatLIT.LIT_FLDL)) {
+					Renderer.symbol(Beacons.Floodlight, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(90))));
+					Renderer.symbol(Harbours.SignalStation);
+				} else {
+					Renderer.symbol(Beacons.LightMinor);
+				}
+				ok = true;
+			}
+			break;
+		default:
+			break;
+		}
+		if (ok) {
+			if (feature.objs.containsKey(Obj.TOPMAR)) {
+				if (testAttribute(Obj.TOPMAR, Att.STATUS, StsSTS.STS_ILLD)) {
+					Renderer.symbol(Beacons.Floodlight);
+				}
+				AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.TOPMAR), Topmarks.LightDelta);
+				}
+			} else if (feature.objs.containsKey(Obj.DAYMAR)) {
+				AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.DAYMAR), Topmarks.LightDelta);
+				}
+			}
+			Signals.addSignals();
+            addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(0, -50)));
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void marinas() {
+		if (Renderer.zoom >= 16) {
+			ArrayList<Symbol> symbols = new ArrayList<>();
+			ArrayList<CatSCF> scfs = (ArrayList<CatSCF>) getAttList(Obj.SMCFAC, Att.CATSCF);
+			for (CatSCF scf : scfs) {
+			    Symbol sym = Facilities.Cats.get(scf);
+			    if (sym != null) symbols.add(sym);
+			}
+			Renderer.cluster(symbols);
+		}
+	}
+
+	private static void moorings() {
+		if (Renderer.zoom >= 14) {
+			switch ((CatMOR) getAttEnum(feature.type, Att.CATMOR)) {
+			case MOR_DLPN:
+			    if (feature.geom.prim == Pflag.AREA) {
+			        Renderer.lineVector(new LineStyle(Color.black, 4, Symbols.Yland));
+			    } else {
+			        Renderer.symbol(Harbours.Dolphin);
+			    }
+				break;
+			case MOR_DDPN:
+				Renderer.symbol(Harbours.DeviationDolphin);
+				break;
+			case MOR_BLRD:
+			case MOR_POST:
+				Renderer.symbol(Harbours.Bollard);
+				break;
+			case MOR_BUOY:
+			    if (Renderer.zoom >= 16) {
+			        BoySHP shape = (BoySHP) getAttEnum(feature.type, Att.BOYSHP);
+			        if (shape == BoySHP.BOY_UNKN) {
+			            shape = BoySHP.BOY_SPHR;
+			        }
+			        Renderer.symbol(Buoys.Shapes.get(shape), (1.0 / (1.0 + (0.25 * (18 - Renderer.zoom)))), getScheme(feature.type));
+			        Renderer.symbol(Topmarks.TopMooring, (1.0 / (1.0 + (0.25 * (18 - Renderer.zoom)))), Topmarks.BuoyDeltas.get(shape));
+		            addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(60, -50)));
+			    }
+				break;
+			default:
+				Renderer.symbol(Harbours.Post);
+				break;
+			}
+            Signals.addSignals();
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void notices() {
+		if (Renderer.zoom >= 14) {
+			double dx = 0.0, dy = 0.0;
+			switch (feature.type) {
+			case BCNCAR:
+			case BCNISD:
+			case BCNLAT:
+			case BCNSAW:
+			case BCNSPP:
+				if (testAttribute(Obj.TOPMAR, Att.TOPSHP, TopSHP.TOP_BORD) || testAttribute(Obj.DAYMAR, Att.TOPSHP, TopSHP.TOP_BORD)) {
+					dy = -100.0;
+				} else {
+					dy = -45.0;
+				}
+				break;
+			case NOTMRK:
+				dy = 0.0;
+				break;
+			default:
+				return;
+			}
+			MarSYS sys = MarSYS.SYS_CEVN;
+			BnkWTW bnk = BnkWTW.BWW_UNKN;
+			AttVal<?> att = feature.atts.get(Att.MARSYS);
+			if (att != null)
+				sys = (MarSYS) att.val;
+			att = feature.atts.get(Att.BNKWTW);
+			if (att != null)
+				bnk = (BnkWTW) att.val;
+			ObjTab objs = feature.objs.get(Obj.NOTMRK);
+			int n = objs.size();
+			if (n > 5) {
+				Renderer.symbol(Notices.Notice, new Delta(Handle.CC, AffineTransform.getTranslateInstance(dx, dy)));
+			} else {
+				int i = 0;
+				for (AttMap atts : objs.values()) {
+					if (atts.get(Att.MARSYS) != null)
+						sys = ((ArrayList<MarSYS>) atts.get(Att.MARSYS).val).get(0);
+					if (atts.get(Att.BNKWTW) != null)
+						bnk = ((ArrayList<BnkWTW>) atts.get(Att.BNKWTW).val).get(0);
+					CatNMK cat = CatNMK.NMK_UNKN;
+					if (atts.get(Att.CATNMK) != null)
+						cat = ((ArrayList<CatNMK>) atts.get(Att.CATNMK).val).get(0);
+					Symbol sym = Notices.getNotice(cat, sys, bnk);
+					Scheme sch = Notices.getScheme(sys, bnk);
+					ArrayList<AddMRK> add = new ArrayList<>();
+					if (atts.get(Att.ADDMRK) != null)
+						add = (ArrayList<AddMRK>) atts.get(Att.ADDMRK).val;
+					Handle h = Handle.CC;
+					double ax = 0.0;
+					double ay = 0.0;
+					switch (i) {
+					case 0:
+						if (n != 1)
+							h = null;
+						break;
+					case 1:
+						if (n <= 3) {
+							h = Handle.RC;
+							ax = -30;
+							ay = dy;
+						} else {
+							h = Handle.BR;
+						}
+						break;
+					case 2:
+						if (n <= 3)
+							h = Handle.LC;
+						else
+							h = Handle.BL;
+						break;
+					case 3:
+						if (n == 4)
+							h = Handle.TC;
+						else
+							h = Handle.TR;
+						break;
+					case 4:
+						h = Handle.TL;
+						break;
+					}
+					if (h != null) {
+						Renderer.symbol(sym, sch, new Delta(h, AffineTransform.getTranslateInstance(dx, dy)));
+						if (!add.isEmpty())
+							Renderer.symbol(Notices.NoticeBoard, new Delta(Handle.BC, AffineTransform.getTranslateInstance(ax, ay - 30)));
+					}
+					i++;
+				}
+			}
+		}
+	}
+
+	private static void obstructions() {
+		if ((Renderer.zoom >= 12) && (feature.type == Obj.OBSTRN)) {
+			if (getAttEnum(feature.type, Att.CATOBS) == CatOBS.OBS_BOOM) {
+				Renderer.lineVector(new LineStyle(Color.black, 5, new float[] { 20, 20 }, null));
+				if (Renderer.zoom >= 15) {
+					Renderer.lineText("Boom", new Font("Arial", Font.PLAIN, 40), Color.black, -20);
+				}
+			}
+			if (getAttEnum(feature.type, Att.CATOBS) == CatOBS.OBS_FLGD) {
+					Renderer.symbol(Areas.Foul, new Scheme(Color.black));
+					if (feature.geom.prim == Pflag.AREA) {
+					Renderer.lineSymbols(Areas.Dash, 1.0, Areas.LineFoul, null, 10, Color.black);
+				}
+			}
+		}
+		if ((Renderer.zoom >= 14) && (feature.type == Obj.UWTROC)) {
+			switch ((WatLEV) getAttEnum(feature.type, Att.WATLEV)) {
+			case LEV_CVRS:
+				Renderer.symbol(Areas.RockC);
+				break;
+			case LEV_AWSH:
+				Renderer.symbol(Areas.RockA);
+				break;
+			default:
+				Renderer.symbol(Areas.Rock);
+				break;
+			}
+		}
+	}
+
+	private static void pipelines() {
+		if ((Renderer.zoom >= 14) && (feature.geom.length < 20) || (Renderer.zoom < 12) && (feature.geom.length >= 20)) {
+			if (feature.type == Obj.PIPSOL) {
+				switch ((CatPIP) getAttEnum(feature.type, Att.CATPIP)) {
+				case PIP_ITAK:
+				case PIP_OFAL:
+				case PIP_SEWR:
+					Renderer.lineSymbols(Areas.Pipeline, 0.33, null, null, 0, Color.black);
+					break;
+				default:
+					Renderer.lineSymbols(Areas.Pipeline, 0.33, null, null, 0, Symbols.Msymb);
+				}
+			} else if (feature.type == Obj.PIPOHD) {
+				Renderer.lineVector(new LineStyle(Color.black, 8));
+				AttMap atts = feature.atts;
+				double verclr = 0;
+				if (atts != null) {
+					if (atts.containsKey(Att.VERCLR)) {
+						verclr = (Double) atts.get(Att.VERCLR).val;
+					} else {
+						verclr = atts.containsKey(Att.VERCSA) ? (Double) atts.get(Att.VERCSA).val : 0;
+					}
+					if (verclr > 0) {
+						Renderer.labelText(String.valueOf(verclr), new Font("Arial", Font.PLAIN, 50), Color.black, LabelStyle.VCLR, Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
+					}
+				}
+			}
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void platforms() {
+		ArrayList<CatOFP> cats = (ArrayList<CatOFP>) getAttList(Obj.OFSPLF, Att.CATOFP);
+		if (cats.get(0) == CatOFP.OFP_FPSO)
+			Renderer.symbol(Buoys.Storage);
+		else
+			Renderer.symbol(Landmarks.Platform);
+		if (testAttribute(feature.type, Att.STATUS, StsSTS.STS_ILLD)) {
+			Renderer.symbol(Beacons.Floodlight);
+		}
+		addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(20, -50)));
+		Signals.addSignals();
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void points() {
+		boolean ok = false;
+		switch (feature.type) {
+		case FOGSIG:
+			if (Renderer.zoom >= 12) {
+				if (feature.objs.containsKey(Obj.LIGHTS))
+					lights();
+				else
+					Renderer.symbol(Harbours.Post);
+				ok = true;
+			}
+			break;
+		default:
+			if (Renderer.zoom >= 14) {
+				if (testAttribute(feature.type, Att.STATUS, StsSTS.STS_ILLD)) {
+					Renderer.symbol(Beacons.Floodlight);
+				}
+				if (feature.objs.containsKey(Obj.LIGHTS))
+					lights();
+				else
+					Renderer.symbol(Harbours.Post);
+				ok = true;
+			}
+			break;
+		}
+		if (ok) {
+			if (feature.objs.containsKey(Obj.TOPMAR)) {
+				AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.TOPMAR), null);
+				}
+			} else if (feature.objs.containsKey(Obj.DAYMAR)) {
+				AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) topmap.get(Att.TOPSHP).val).get(0)), getScheme(Obj.DAYMAR), null);
+				}
+			}
+			Signals.addSignals();
+		}
+	}
+
+	private static void ports() {
+		if (Renderer.zoom >= 14) {
+			if (feature.type == Obj.CRANES) {
+				if ((CatCRN) getAttEnum(feature.type, Att.CATCRN) == CatCRN.CRN_CONT)
+					Renderer.symbol(Harbours.ContainerCrane);
+				else
+					Renderer.symbol(Harbours.PortCrane);
+			} else if (feature.type == Obj.HULKES) {
+				Renderer.lineVector(new LineStyle(Color.black, 4, null, new Color(0xffe000)));
+				addName(15, new Font("Arial", Font.BOLD, 40));
+			}
+		}
+	}
+
+	private static void separation() {
+		switch (feature.type) {
+		case TSEZNE:
+		case TSSCRS:
+		case TSSRON:
+			if (Renderer.zoom <= 15)
+				Renderer.lineVector(new LineStyle(Symbols.Mtss));
+			else
+				Renderer.lineVector(new LineStyle(Symbols.Mtss, 20, null, null));
+			addName(10, new Font("Arial", Font.BOLD, 150), Symbols.Mline);
+			break;
+		case TSELNE:
+			Renderer.lineVector(new LineStyle(Symbols.Mtss, 20, null, null));
+			break;
+		case TSSLPT:
+			Renderer.lineSymbols(Areas.LaneArrow, 0.5, null, null, 0, Symbols.Mtss);
+			break;
+		case TSSBND:
+			Renderer.lineVector(new LineStyle(Symbols.Mtss, 20, new float[] { 40, 40 }, null));
+			break;
+		case ISTZNE:
+			Renderer.lineSymbols(Areas.Restricted, 1.0, null, null, 0, Symbols.Mtss);
+			break;
+		default:
+			break;
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void shoreline() {
+		CatSLC cat = (CatSLC) getAttEnum(feature.type, Att.CATSLC);
+		if ((Renderer.context.ruleset() == RuleSet.ALL) || (Renderer.context.ruleset() == RuleSet.BASE)) {
+			if ((cat != CatSLC.SLC_SWAY) && (cat != CatSLC.SLC_TWAL)) {
+				if (Renderer.zoom >= 12) {
+					Renderer.lineVector(new LineStyle(Color.black, 10, Symbols.Yland));
+				} else {
+					Renderer.lineVector(new LineStyle(Symbols.Yland));
+				}
+			}
+		}
+		if ((Renderer.context.ruleset() == RuleSet.ALL) || (Renderer.context.ruleset() == RuleSet.SEAMARK)) {
+			if (Renderer.zoom >= 12) {
+				switch (cat) {
+				case SLC_TWAL:
+					WatLEV lev = (WatLEV) getAttEnum(feature.type, Att.WATLEV);
+					if (lev == WatLEV.LEV_CVRS) {
+						Renderer.lineVector(new LineStyle(Color.black, 10, new float[] { 40, 40 }, null));
+						if (Renderer.zoom >= 15)
+							Renderer.lineText("(covers)", new Font("Arial", Font.PLAIN, 40), Color.black, 80);
+					} else {
+						Renderer.lineVector(new LineStyle(Color.black, 10, null, null));
+					}
+					if (Renderer.zoom >= 15)
+						Renderer.lineText("Training Wall", new Font("Arial", Font.PLAIN, 40), Color.black, -30);
+					break;
+				case SLC_SWAY:
+					Renderer.lineVector(new LineStyle(Color.black, 2, null, new Color(0xffe000)));
+					if ((Renderer.zoom >= 16) && feature.objs.containsKey(Obj.SMCFAC)) {
+						ArrayList<Symbol> symbols = new ArrayList<>();
+						ArrayList<CatSCF> scfs = (ArrayList<CatSCF>) getAttList(Obj.SMCFAC, Att.CATSCF);
+						for (CatSCF scf : scfs) {
+							symbols.add(Facilities.Cats.get(scf));
+						}
+						Renderer.cluster(symbols);
+					}
+					break;
+				default:
+					break;
+				}
+			}
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void stations() {
+		if (Renderer.zoom >= 14) {
+			String str = "";
+			switch (feature.type) {
+			case SISTAT:
+				Renderer.symbol(Harbours.SignalStation);
+				str = "SS";
+				ArrayList<CatSIT> tcats = (ArrayList<CatSIT>) getAttList(Obj.SISTAT, Att.CATSIT);
+				switch (tcats.get(0)) {
+				case SIT_IPT:
+					str += "(INT)";
+					break;
+				case SIT_PRTE:
+					str += "(Traffic)";
+					break;
+				case SIT_PRTC:
+					str += "(Port Control)";
+					break;
+				case SIT_LOCK:
+					str += "(Lock)";
+					break;
+				case SIT_BRDG:
+					str += "(Bridge)";
+					break;
+				default:
+					break;
+				}
+				break;
+			case SISTAW:
+				Renderer.symbol(Harbours.SignalStation);
+				str = "SS";
+				str = "SS";
+				ArrayList<CatSIW> wcats = (ArrayList<CatSIW>) getAttList(Obj.SISTAW, Att.CATSIW);
+				switch (wcats.get(0)) {
+				case SIW_STRM:
+					str += "(Storm)";
+					break;
+				case SIW_WTHR:
+					str += "(Weather)";
+					break;
+				case SIW_ICE:
+					str += "(Ice)";
+					break;
+				case SIW_TIDG:
+					str = "Tide gauge";
+					break;
+				case SIW_TIDS:
+					str = "Tide scale";
+					break;
+				case SIW_TIDE:
+					str += "(Tide)";
+					break;
+				case SIW_TSTR:
+					str += "(Stream)";
+					break;
+				case SIW_DNGR:
+					str += "(Danger)";
+					break;
+				case SIW_MILY:
+					str += "(Firing)";
+					break;
+				case SIW_TIME:
+					str += "(Time)";
+					break;
+				default:
+					break;
+				}
+				break;
+			case RDOSTA:
+			case RTPBCN:
+				Renderer.symbol(Harbours.SignalStation);
+				Renderer.symbol(Beacons.RadarStation);
+				break;
+			case RADRFL:
+				Renderer.symbol(Topmarks.RadarReflector);
+				break;
+			case RADSTA:
+				Renderer.symbol(Harbours.SignalStation);
+				Renderer.symbol(Beacons.RadarStation);
+				break;
+			case PILBOP:
+				Renderer.symbol(Harbours.Pilot);
+				addName(15, new Font("Arial", Font.BOLD, 40), Symbols.Msymb, new Delta(Handle.LC, AffineTransform.getTranslateInstance(70, -40)));
+				CatPIL cat = (CatPIL) getAttEnum(feature.type, Att.CATPIL);
+				if (cat == CatPIL.PIL_HELI) {
+					Renderer.labelText("H", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.LC, AffineTransform.getTranslateInstance(70, 0)));
+				}
+				break;
+			case CGUSTA:
+				Renderer.symbol(Harbours.SignalStation);
+				str = "CG";
+				if (feature.objs.containsKey(Obj.RSCSTA))
+					Renderer.symbol(Harbours.Rescue, new Delta(Handle.CC, AffineTransform.getTranslateInstance(130, 0)));
+				break;
+			case RSCSTA:
+				Renderer.symbol(Harbours.Rescue);
+				break;
+			default:
+				break;
+			}
+			if ((Renderer.zoom >= 15) && !str.isEmpty()) {
+				Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, -50)));
+			}
+			Signals.addSignals();
+		}
+	}
+
+	private static void transits() {
+		if (Renderer.zoom >= 14) {
+			if (feature.type == Obj.RECTRC)
+				Renderer.lineVector(new LineStyle(Color.black, 5, null, null));
+			else if (feature.type == Obj.NAVLNE)
+				Renderer.lineVector(new LineStyle(Color.black, 5, new float[] { 25, 25 }, null));
+		}
+		if (Renderer.zoom >= 15) {
+			String str = "";
+			String name = getName();
+			if (name != null)
+				str += name + " ";
+			Double ort;
+			if ((ort = (Double) getAttVal(feature.type, Att.ORIENT)) != null) {
+				str += df.format(ort) + "º";
+				if (!str.isEmpty())
+					Renderer.lineText(str, new Font("Arial", Font.PLAIN, 40), Color.black, -20);
+			}
+		}
+	}
+
+    @SuppressWarnings("unchecked")
+    private static void virtual() {
+        if (Renderer.zoom >= 12) {
+            Renderer.symbol(Harbours.SignalStation, new Scheme(Symbols.Msymb));
+            Renderer.symbol(Beacons.RadarStation, new Scheme(Symbols.Msymb));
+           ArrayList<CatVAN> cats = (ArrayList<CatVAN>) getAttList(Obj.VAATON, Att.CATVAN);
+            for (CatVAN van : cats) {
+                switch (van) {
+                case VAN_NCAR:
+                    Renderer.symbol(Topmarks.TopNorth, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_SCAR:
+                    Renderer.symbol(Topmarks.TopSouth, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_ECAR:
+                    Renderer.symbol(Topmarks.TopEast, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_WCAR:
+                    Renderer.symbol(Topmarks.TopWest, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_PLAT:
+                case VAN_PCHS:
+                    Renderer.symbol(Topmarks.TopCan, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_SLAT:
+                case VAN_PCHP:
+                    Renderer.symbol(Topmarks.TopCone, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_IDGR:
+                    Renderer.symbol(Topmarks.TopIsol, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_SAFW:
+                    Renderer.symbol(Topmarks.TopSphere, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_SPPM:
+                    Renderer.symbol(Topmarks.TopX, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                case VAN_WREK:
+                    Renderer.symbol(Topmarks.TopCross, new Scheme(Symbols.Msymb), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -25)));
+                    break;
+                default:
+                    break;
+                }
+            }
+        }
+        addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(50, 0)));
+        if (Renderer.zoom >= 15) {
+                Renderer.labelText("V-AIS", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 70)));
+        }
+    }
+
+	private static void waterways() {
+		Renderer.lineVector(new LineStyle(Symbols.Bwater, 20, (feature.geom.prim == Pflag.AREA) ? Symbols.Bwater : null));
+	}
+
+	private static void wrecks() {
+		if (Renderer.zoom >= 14) {
+			switch ((CatWRK) getAttEnum(feature.type, Att.CATWRK)) {
+			case WRK_DNGR:
+			case WRK_MSTS:
+				Renderer.symbol(Areas.WreckD);
+				break;
+			case WRK_HULS:
+				Renderer.symbol(Areas.WreckS);
+				break;
+			default:
+				Renderer.symbol(Areas.WreckND);
+			}
+			addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -60)));
+		}
+	}
+}
Index: /applications/editors/josm/plugins/SeaChart/src/render/Signals.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/render/Signals.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/render/Signals.java	(revision 36424)
@@ -0,0 +1,678 @@
+// License: GPL. For details, see LICENSE file.
+package render;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.geom.AffineTransform;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.EnumMap;
+
+import s57.S57att.Att;
+import s57.S57map.AttMap;
+import s57.S57map.ObjTab;
+import s57.S57obj.Obj;
+import s57.S57val.BoySHP;
+import s57.S57val.CatFOG;
+import s57.S57val.CatLIT;
+import s57.S57val.CatROS;
+import s57.S57val.CatRTB;
+import s57.S57val.CatRAS;
+import s57.S57val.ColCOL;
+import s57.S57val.LitCHR;
+import symbols.Beacons;
+import symbols.Symbols;
+import symbols.Symbols.Delta;
+import symbols.Symbols.Handle;
+import symbols.Symbols.Scheme;
+import symbols.Topmarks;
+
+/**
+ * @author Malcolm Herring
+ */
+public class Signals extends Rules {
+
+	static final EnumMap<ColCOL, Color> LightColours = new EnumMap<>(ColCOL.class);
+	static {
+		LightColours.put(ColCOL.COL_WHT, new Color(0xffff00));
+		LightColours.put(ColCOL.COL_RED, new Color(0xff0000));
+		LightColours.put(ColCOL.COL_GRN, new Color(0x00ff00));
+		LightColours.put(ColCOL.COL_BLU, new Color(0x0000ff));
+		LightColours.put(ColCOL.COL_YEL, new Color(0xffff00));
+		LightColours.put(ColCOL.COL_AMB, new Color(0xffc200));
+		LightColours.put(ColCOL.COL_VIO, new Color(0xee82ee));
+		LightColours.put(ColCOL.COL_ORG, Color.orange);
+		LightColours.put(ColCOL.COL_MAG, Color.magenta);
+	}
+
+	static final EnumMap<ColCOL, String> LightLetters = new EnumMap<>(ColCOL.class);
+	static {
+		LightLetters.put(ColCOL.COL_WHT, "W");
+		LightLetters.put(ColCOL.COL_RED, "R");
+		LightLetters.put(ColCOL.COL_GRN, "G");
+		LightLetters.put(ColCOL.COL_BLU, "Bu");
+		LightLetters.put(ColCOL.COL_YEL, "Y");
+		LightLetters.put(ColCOL.COL_AMB, "Am");
+		LightLetters.put(ColCOL.COL_VIO, "Vi");
+		LightLetters.put(ColCOL.COL_ORG, "Or");
+	}
+
+	static final EnumMap<LitCHR, String> LightCharacters = new EnumMap<>(LitCHR.class);
+	static {
+		LightCharacters.put(LitCHR.CHR_F, "F");
+		LightCharacters.put(LitCHR.CHR_FL, "Fl");
+		LightCharacters.put(LitCHR.CHR_LFL, "LFl");
+		LightCharacters.put(LitCHR.CHR_Q, "Q");
+		LightCharacters.put(LitCHR.CHR_VQ, "VQ");
+		LightCharacters.put(LitCHR.CHR_UQ, "UQ");
+		LightCharacters.put(LitCHR.CHR_ISO, "Iso");
+		LightCharacters.put(LitCHR.CHR_OC, "Oc");
+		LightCharacters.put(LitCHR.CHR_IQ, "IQ");
+		LightCharacters.put(LitCHR.CHR_IVQ, "IVQ");
+		LightCharacters.put(LitCHR.CHR_IUQ, "IUQ");
+		LightCharacters.put(LitCHR.CHR_MO, "Mo");
+		LightCharacters.put(LitCHR.CHR_FFL, "FFl");
+		LightCharacters.put(LitCHR.CHR_FLLFL, "FlLFl");
+		LightCharacters.put(LitCHR.CHR_OCFL, "OcFl");
+		LightCharacters.put(LitCHR.CHR_FLFL, "FLFl");
+		LightCharacters.put(LitCHR.CHR_ALOC, "Al.Oc");
+		LightCharacters.put(LitCHR.CHR_ALLFL, "Al.LFl");
+		LightCharacters.put(LitCHR.CHR_ALFL, "Al.Fl");
+		LightCharacters.put(LitCHR.CHR_ALGR, "Al.Gr");
+		LightCharacters.put(LitCHR.CHR_QLFL, "Q+LFl");
+		LightCharacters.put(LitCHR.CHR_VQLFL, "VQ+LFl");
+		LightCharacters.put(LitCHR.CHR_UQLFL, "UQ+LFl");
+		LightCharacters.put(LitCHR.CHR_AL, "Al");
+		LightCharacters.put(LitCHR.CHR_ALFFL, "Al.FFl");
+	}
+
+	static final EnumMap<CatFOG, String> fogSignals = new EnumMap<>(CatFOG.class);
+	static {
+		fogSignals.put(CatFOG.FOG_EXPL, "Explos");
+		fogSignals.put(CatFOG.FOG_DIA, "Dia");
+		fogSignals.put(CatFOG.FOG_SIRN, "Siren");
+		fogSignals.put(CatFOG.FOG_NAUT, "Horn");
+		fogSignals.put(CatFOG.FOG_REED, "Horn");
+		fogSignals.put(CatFOG.FOG_TYPH, "Horn");
+		fogSignals.put(CatFOG.FOG_BELL, "Bell");
+		fogSignals.put(CatFOG.FOG_WHIS, "Whis");
+		fogSignals.put(CatFOG.FOG_GONG, "Gong");
+		fogSignals.put(CatFOG.FOG_HORN, "Horn");
+	}
+
+	static final DecimalFormat df = new DecimalFormat("#.#");
+
+	public static void addSignals() {
+		if (feature.objs.containsKey(Obj.RADRFL))
+			reflectors();
+		if (feature.objs.containsKey(Obj.FOGSIG))
+			fogSignals();
+		if (feature.objs.containsKey(Obj.RTPBCN))
+			radarTransponders();
+		if (feature.objs.containsKey(Obj.RADSTA))
+			radarStations();
+		if (feature.objs.containsKey(Obj.RDOSTA))
+			radioStations();
+		if (feature.objs.containsKey(Obj.LIGHTS))
+			lights();
+	}
+
+	public static void reflectors() {
+		if (Renderer.zoom >= 14) {
+			switch (feature.type) {
+			case BCNLAT:
+			case BCNCAR:
+			case BCNISD:
+			case BCNSAW:
+			case BCNSPP:
+				if (feature.objs.containsKey(Obj.TOPMAR) || feature.objs.containsKey(Obj.DAYMAR)) {
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -140)));
+				} else {
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -80)));
+				}
+				break;
+			case LITFLT:
+			case LITVES:
+			case BOYINB:
+				if (feature.objs.containsKey(Obj.TOPMAR) || feature.objs.containsKey(Obj.DAYMAR)) {
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -110)));
+				} else {
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -60)));
+				}
+				break;
+			case LITMAJ:
+			case LITMIN:
+				if (feature.objs.containsKey(Obj.TOPMAR) || feature.objs.containsKey(Obj.DAYMAR)) {
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -90)));
+				} else {
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -30)));
+				}
+				break;
+			case BOYLAT:
+			case BOYCAR:
+			case BOYISD:
+			case BOYSAW:
+			case BOYSPP:
+				if (feature.objs.containsKey(Obj.TOPMAR) || feature.objs.containsKey(Obj.DAYMAR)) {
+					if (testAttribute(feature.type, Att.BOYSHP, BoySHP.BOY_PILR) || testAttribute(feature.type, Att.BOYSHP, BoySHP.BOY_SPAR)) {
+						Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(50, -160)));
+					} else {
+						Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(25, -80)));
+					}
+				} else {
+					if (testAttribute(feature.type, Att.BOYSHP, BoySHP.BOY_PILR) || testAttribute(feature.type, Att.BOYSHP, BoySHP.BOY_SPAR)) {
+						Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(30, -100)));
+					} else {
+						Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(10, -50)));
+					}
+				}
+				break;
+			default:
+				break;
+			}
+		}
+	}
+
+	public static void fogSignals() {
+		if (Renderer.zoom >= 11)
+			Renderer.symbol(Beacons.FogSignal);
+		if (Renderer.zoom >= 15) {
+			AttMap atts = feature.objs.get(Obj.FOGSIG).get(0);
+			if (atts != null) {
+				String str = "";
+				if (atts.containsKey(Att.CATFOG)) {
+					str += fogSignals.get(((ArrayList<?>) atts.get(Att.CATFOG).val).get(0));
+				}
+				if (atts.containsKey(Att.SIGGRP)) {
+					str += "(" + atts.get(Att.SIGGRP).val + ")";
+				} else {
+					str += " ";
+				}
+				if (atts.containsKey(Att.SIGPER)) {
+					str += df.format(atts.get(Att.SIGPER).val) + "s";
+				}
+				if (atts.containsKey(Att.VALMXR)) {
+					str += df.format(atts.get(Att.VALMXR).val) + "M";
+				}
+				if (!str.isEmpty()) {
+					Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-60, -30)));
+				}
+			}
+		}
+	}
+
+    public static void radarStations() {
+        if (Renderer.zoom >= 11)
+            Renderer.symbol(Beacons.RadarStation);
+        if (Renderer.zoom >= 15) {
+            CatRAS cat = (CatRAS) getAttEnum(Obj.RADSTA, Att.CATRAS);
+            if (cat == CatRAS.RAS_COST) {
+                Renderer.labelText("Ra", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-60, -70)));
+            }
+        }
+    }
+
+    public static void radarTransponders() {
+        if (Renderer.zoom >= 11)
+            Renderer.symbol(Beacons.RadarStation);
+        if (Renderer.zoom >= 15) {
+            String bstr = "";
+            CatRTB cat = (CatRTB) getAttEnum(Obj.RTPBCN, Att.CATRTB);
+            String wal = getAttStr(Obj.RTPBCN, Att.RADWAL);
+            if ((cat == CatRTB.RTB_RAMK) || (cat == CatRTB.RTB_RACN)) {
+                switch (cat) {
+                case RTB_RAMK:
+                    bstr += " Ramark";
+                    break;
+                case RTB_RACN:
+                    bstr += " Racon";
+                    break;
+                default:
+                    break;
+                }
+                String astr = getAttStr(Obj.RTPBCN, Att.SIGGRP);
+                if (!astr.isEmpty()) {
+                    bstr += "(" + astr + ")";
+                }
+                Double per = (Double) getAttVal(Obj.RTPBCN, Att.SIGPER);
+                Double mxr = (Double) getAttVal(Obj.RTPBCN, Att.VALMXR);
+                if ((per != null) || (mxr != null)) {
+                    bstr += (astr.isEmpty() ? " " : "");
+                    if (per != null)
+                        bstr += (per != 0) ? per.toString() + "s" : "";
+                    if (mxr != null)
+                        bstr += (mxr != 0) ? mxr.toString() + "M" : "";
+                }
+            }
+            if (!wal.isEmpty()) {
+                switch (wal) {
+                case "0.03-X":
+                    bstr += "(3cm)";
+                    break;
+                case "0.10-S":
+                    bstr += "(10cm)";
+                    break;
+                }
+            }
+            if (!bstr.isEmpty()) {
+                Renderer.labelText(bstr, new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-30, -70)));
+            }
+        }
+    }
+
+	@SuppressWarnings("unchecked")
+	public static void radioStations() {
+		String bstr = "";
+		if (Renderer.zoom >= 11) {
+			ArrayList<CatROS> cats = (ArrayList<CatROS>) getAttList(Obj.RDOSTA, Att.CATROS);
+			for (CatROS ros : cats) {
+				switch (ros) {
+				case ROS_OMNI:
+					bstr += " RC";
+					break;
+				case ROS_DIRL:
+					bstr += " RD";
+					break;
+				case ROS_ROTP:
+					bstr += " RW";
+					break;
+				case ROS_CNSL:
+					bstr += " Consol";
+					break;
+				case ROS_RDF:
+					bstr += " RG";
+					break;
+				case ROS_QTA:
+					bstr += " R";
+					break;
+				case ROS_AERO:
+					bstr += " AeroRC";
+					break;
+				case ROS_DECA:
+					bstr += " Decca";
+					break;
+				case ROS_LORN:
+					bstr += " Loran";
+					break;
+				case ROS_DGPS:
+					bstr += " DGPS";
+					break;
+				case ROS_TORN:
+					bstr += " Toran";
+					break;
+				case ROS_OMGA:
+					bstr += " Omega";
+					break;
+				case ROS_SYLD:
+					bstr += " Syledis";
+					break;
+				case ROS_CHKA:
+					bstr += " Chiaka";
+					break;
+				case ROS_PCOM:
+				case ROS_COMB:
+				case ROS_FACS:
+				case ROS_TIME:
+					break;
+                case ROS_AISB:
+                case ROS_PAIS:
+					bstr += " AIS";
+					break;
+				default:
+					break;
+				}
+			}
+			Renderer.symbol(Beacons.RadarStation);
+		}
+		if (Renderer.zoom >= 15) {
+			if (!bstr.isEmpty()) {
+				Renderer.labelText(bstr, new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-30, -110)));
+			}
+		}
+	}
+
+	static class Sect {
+		int dir;
+		LitCHR chr;
+		ColCOL col;
+		ColCOL alt;
+		String grp;
+		double per;
+		double rng;
+	}
+
+    @SuppressWarnings("unchecked")
+    public static void lights() {
+        Enum<ColCOL> col = null;
+        Enum<ColCOL> tcol = null;
+        ObjTab lights = feature.objs.get(Obj.LIGHTS);
+		if (lights != null) {
+			for (AttMap atts : lights.values()) {
+				if (atts.containsKey(Att.COLOUR)) {
+					ArrayList<Enum<ColCOL>> cols = (ArrayList<Enum<ColCOL>>) atts.get(Att.COLOUR).val;
+					if (cols.size() == 1) {
+						if (atts.containsKey(Att.CATLIT)
+								&& ((ArrayList<?>) atts.get(Att.CATLIT).val).contains(CatLIT.LIT_FLDL)) {
+							Renderer.symbol(Beacons.Floodlight,
+									new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(90))));
+						} else {
+							tcol = cols.get(0);
+							if (col == null) {
+								col = tcol;
+							} else if (tcol != col) {
+								col = ColCOL.COL_MAG;
+								break;
+							}
+						}
+					} else {
+						col = ColCOL.COL_MAG;
+						break;
+					}
+				}
+			}
+			if (col != null) {
+				Renderer.symbol(Beacons.LightFlare, new Scheme(LightColours.get(col)),
+						new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.toRadians(120))));
+			}
+			String str = "";
+			if ((lights.get(1) != null) && (Renderer.zoom >= 12)) {
+				for (AttMap atts : lights.values()) {
+					Enum<ColCOL> col1 = null;
+					Enum<ColCOL> col2 = null;
+					double radius = 0.5;
+					if (atts.containsKey(Att.VALNMR)) {
+						radius += Math.log10((Double) atts.get(Att.VALNMR).val) * 2.0;
+					}
+					radius /= Math.pow(Renderer.zoom, 4) / 5000;
+					double s1 = 361;
+					double s2 = 361;
+					Double dir = null;
+					if (atts.containsKey(Att.COLOUR)) {
+						ArrayList<Enum<ColCOL>> cols = (ArrayList<Enum<ColCOL>>) atts.get(Att.COLOUR).val;
+						col1 = cols.get(0);
+						if (cols.size() > 1)
+							col2 = cols.get(1);
+					} else {
+						continue;
+					}
+					if (atts.containsKey(Att.CATLIT)) {
+						ArrayList<CatLIT> cats = (ArrayList<CatLIT>) atts.get(Att.CATLIT).val;
+						if (cats.contains(CatLIT.LIT_DIR)) {
+							if (atts.containsKey(Att.ORIENT)) {
+								dir = (Double) atts.get(Att.ORIENT).val;
+								s1 = ((dir - 4) + 360) % 360;
+								s2 = (dir + 4) % 360;
+								for (AttMap satts : lights.values()) {
+									double ss1 = 361;
+									double ss2 = 361;
+									Double sdir = null;
+									if (satts == atts)
+										continue;
+									ArrayList<CatLIT> scats = (ArrayList<CatLIT>) (satts.containsKey(Att.CATLIT)
+											? (ArrayList<CatLIT>) satts.get(Att.CATLIT).val : new ArrayList<>());
+									if (scats.contains(CatLIT.LIT_DIR)) {
+										if (satts.containsKey(Att.ORIENT)) {
+											sdir = (Double) satts.get(Att.ORIENT).val;
+											ss1 = sdir;
+											ss2 = sdir;
+										}
+									} else {
+										if (satts.containsKey(Att.SECTR1)) {
+											ss1 = (Double) satts.get(Att.SECTR1).val;
+										}
+										if (satts.containsKey(Att.SECTR2)) {
+											ss2 = (Double) satts.get(Att.SECTR2).val;
+										}
+									}
+									if ((ss1 > 360) || (ss2 > 360))
+										continue;
+									if (sdir != null) {
+										if (((dir - sdir + 360) % 360) < 8) {
+											s1 = ((((sdir > dir) ? 360 : 0) + sdir + dir) / 2) % 360;
+										}
+										if (((sdir - dir + 360) % 360) < 8) {
+											s2 = ((((dir > sdir) ? 360 : 0) + sdir + dir) / 2) % 360;
+										}
+									} else {
+										if (((dir - ss2 + 360) % 360) < 4) {
+											s1 = ss2;
+										}
+										if (((ss1 - dir + 360) % 360) < 4) {
+											s2 = ss1;
+										}
+									}
+								}
+							}
+						}
+					}
+					if ((s1 > 360) && atts.containsKey(Att.SECTR1)) {
+						s1 = (Double) atts.get(Att.SECTR1).val;
+					} else if (dir == null) {
+						continue;
+					}
+					if ((s2 > 360) && atts.containsKey(Att.SECTR2)) {
+						s2 = (Double) atts.get(Att.SECTR2).val;
+					} else if (dir == null) {
+						continue;
+					}
+					str = "";
+					if (atts.containsKey(Att.LITCHR)) {
+						str += LightCharacters.get(((ArrayList<LitCHR>) atts.get(Att.LITCHR).val).get(0));
+					}
+					if (atts.containsKey(Att.SIGGRP)) {
+						str += "(" + atts.get(Att.SIGGRP).val + ")";
+					} else if (!str.isEmpty()) {
+						str += ".";
+					}
+					if (atts.containsKey(Att.COLOUR)) {
+						ArrayList<Enum<ColCOL>> cols = (ArrayList<Enum<ColCOL>>) atts.get(Att.COLOUR).val;
+						str += LightLetters.get(cols.get(0));
+						if (cols.size() > 1)
+							str += LightLetters.get(cols.get(1));
+					}
+					if (atts.containsKey(Att.SIGPER)) {
+						str += "." + df.format(atts.get(Att.SIGPER).val) + "s";
+					}
+					if ((s1 < 360) && (s2 < 360) && (s1 != s2))
+						Renderer.lightSector(LightColours.get(col1), LightColours.get(col2), radius, s1, s2, dir,
+								(Renderer.zoom >= 15) ? str : "");
+				}
+				if (Renderer.zoom >= 15) {
+					class LitSect {
+						boolean dir;
+						LitCHR chr;
+						ColCOL col;
+						String grp;
+						double per;
+						double rng;
+						double hgt;
+					}
+
+					ArrayList<LitSect> litatts = new ArrayList<>();
+					for (AttMap atts : lights.values()) {
+						LitSect sect = new LitSect();
+						sect.dir = (atts.containsKey(Att.CATLIT)
+								&& ((ArrayList<CatLIT>) atts.get(Att.CATLIT).val).contains(CatLIT.LIT_DIR));
+						sect.chr = atts.containsKey(Att.LITCHR) ? ((ArrayList<LitCHR>) atts.get(Att.LITCHR).val).get(0)
+								: LitCHR.CHR_UNKN;
+						switch (sect.chr) {
+						case CHR_AL:
+							sect.chr = LitCHR.CHR_F;
+							break;
+						case CHR_ALOC:
+							sect.chr = LitCHR.CHR_OC;
+							break;
+						case CHR_ALLFL:
+							sect.chr = LitCHR.CHR_LFL;
+							break;
+						case CHR_ALFL:
+							sect.chr = LitCHR.CHR_FL;
+							break;
+						case CHR_ALFFL:
+							sect.chr = LitCHR.CHR_FFL;
+							break;
+						default:
+							break;
+						}
+						sect.grp = atts.containsKey(Att.SIGGRP) ? (String) atts.get(Att.SIGGRP).val : "";
+						sect.per = atts.containsKey(Att.SIGPER) ? (Double) atts.get(Att.SIGPER).val : 0.0;
+						sect.rng = atts.containsKey(Att.VALNMR) ? (Double) atts.get(Att.VALNMR).val : 0.0;
+						sect.hgt = atts.containsKey(Att.HEIGHT) ? (Double) atts.get(Att.HEIGHT).val : 0.0;
+						ArrayList<ColCOL> cols = (ArrayList<ColCOL>) (atts.containsKey(Att.COLOUR)
+								? atts.get(Att.COLOUR).val : new ArrayList<>());
+						sect.col = cols.size() > 0 ? cols.get(0) : ColCOL.COL_UNK;
+						if ((sect.chr != LitCHR.CHR_UNKN) && (sect.col != null))
+							litatts.add(sect);
+					}
+					ArrayList<ArrayList<LitSect>> groupings = new ArrayList<>();
+					for (LitSect lit : litatts) {
+						boolean found = false;
+						for (ArrayList<LitSect> group : groupings) {
+							LitSect mem = group.get(0);
+							if (lit.dir == mem.dir && lit.chr == mem.chr && lit.grp.equals(mem.grp)
+									&& lit.per == mem.per && lit.hgt == mem.hgt) {
+								group.add(lit);
+								found = true;
+							}
+						}
+						if (!found) {
+							ArrayList<LitSect> tmp = new ArrayList<>();
+							tmp.add(lit);
+							groupings.add(tmp);
+						}
+					}
+					for (boolean moved = true; moved;) {
+						moved = false;
+						for (int i = 0; i < groupings.size() - 1; i++) {
+							if (groupings.get(i).size() < groupings.get(i + 1).size()) {
+								ArrayList<LitSect> tmp = groupings.remove(i);
+								groupings.add(i + 1, tmp);
+								moved = true;
+							}
+						}
+					}
+					class ColRng {
+						ColCOL col;
+						double rng;
+
+						ColRng(ColCOL c, double r) {
+							col = c;
+							rng = r;
+						}
+					}
+
+					int y = -30;
+					for (ArrayList<LitSect> group : groupings) {
+						ArrayList<ColRng> colrng = new ArrayList<>();
+						for (LitSect lit : group) {
+							boolean found = false;
+							for (ColRng cr : colrng) {
+								if (cr.col == lit.col) {
+									if (lit.rng > cr.rng) {
+										cr.rng = lit.rng;
+									}
+									found = true;
+								}
+							}
+							if (!found) {
+								colrng.add(new ColRng(lit.col, lit.rng));
+							}
+						}
+						for (boolean moved = true; moved;) {
+							moved = false;
+							for (int i = 0; i < colrng.size() - 1; i++) {
+								if (colrng.get(i).rng < colrng.get(i + 1).rng) {
+									ColRng tmp = colrng.remove(i);
+									colrng.add(i + 1, tmp);
+									moved = true;
+								}
+							}
+						}
+						LitSect tmp = group.get(0);
+						str = tmp.dir ? "Dir" : "";
+						str += LightCharacters.get(tmp.chr);
+						if (!tmp.grp.isEmpty())
+							str += "(" + tmp.grp + ")";
+						else
+							str += ".";
+						for (ColRng cr : colrng) {
+							str += LightLetters.get(cr.col);
+						}
+						if ((tmp.per > 0) || (tmp.hgt > 0) || (colrng.get(0).rng > 0))
+							str += ".";
+						if (tmp.per > 0)
+							str += df.format(tmp.per) + "s";
+						if (tmp.hgt > 0)
+							str += df.format(tmp.hgt) + "m";
+						if (colrng.get(0).rng > 0)
+							str += df.format(colrng.get(0).rng) + ((colrng.size() > 1)
+									? ((colrng.size() > 2) ? ("-" + df.format(colrng.get(colrng.size() - 1).rng))
+											: ("/" + df.format(colrng.get(1).rng)))
+									: "") + "M";
+						Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black,
+								new Delta(Handle.TL, AffineTransform.getTranslateInstance(60, y)));
+						y += 40;
+						str = "";
+					}
+				}
+			} else {
+				AttMap atts = lights.get(0);
+				if ((Renderer.zoom >= 15) && (atts != null)) {
+					ArrayList<CatLIT> cats = new ArrayList<>();
+					if (atts.containsKey(Att.CATLIT)) {
+						cats = (ArrayList<CatLIT>) atts.get(Att.CATLIT).val;
+					}
+					str = (cats.contains(CatLIT.LIT_AIR) || cats.contains(CatLIT.LIT_AERO)) ? "Aero"
+							: cats.contains(CatLIT.LIT_DIR) ? "Dir" : "";
+					str += atts.containsKey(Att.MLTYLT) ? atts.get(Att.MLTYLT).val : "";
+					if (atts.containsKey(Att.LITCHR)) {
+						LitCHR chr = ((ArrayList<LitCHR>) atts.get(Att.LITCHR).val).get(0);
+						if (atts.containsKey(Att.SIGGRP)) {
+							String grp = (String) atts.get(Att.SIGGRP).val;
+							switch (chr) {
+							case CHR_QLFL:
+								str += String.format("Q(%s)+LFl", grp);
+								break;
+							case CHR_VQLFL:
+								str += String.format("VQ(%s)+LFl", grp);
+								break;
+							case CHR_UQLFL:
+								str += String.format("UQ(%s)+LFl", grp);
+								break;
+							default:
+								str += String.format("%s(%s)", LightCharacters.get(chr), grp);
+								break;
+							}
+						} else {
+							str += LightCharacters.get(chr);
+						}
+					}
+					if (atts.containsKey(Att.COLOUR)) {
+						ArrayList<ColCOL> cols = (ArrayList<ColCOL>) atts.get(Att.COLOUR).val;
+						if (!((cols.size() == 1) && (cols.get(0) == ColCOL.COL_WHT))) {
+							if (!str.isEmpty() && !str.endsWith(")")) {
+								str += ".";
+							}
+							for (ColCOL acol : cols) {
+								str += LightLetters.get(acol);
+							}
+						}
+					}
+					str += cats.contains(CatLIT.LIT_VERT) ? "(vert)" : "";
+					str += cats.contains(CatLIT.LIT_HORI) ? "(hor)" : "";
+					str += (!str.isEmpty() && (atts.containsKey(Att.SIGPER) || atts.containsKey(Att.HEIGHT)
+							|| atts.containsKey(Att.VALMXR)) && !str.endsWith(")")) ? "." : "";
+					str += atts.containsKey(Att.SIGPER) ? df.format(atts.get(Att.SIGPER).val) + "s" : "";
+					str += atts.containsKey(Att.HEIGHT) ? df.format(atts.get(Att.HEIGHT).val) + "m" : "";
+					str += atts.containsKey(Att.VALNMR) ? df.format(atts.get(Att.VALNMR).val) + "M" : "";
+					str += cats.contains(CatLIT.LIT_FRNT) ? "(Front)" : "";
+					str += cats.contains(CatLIT.LIT_REAR) ? "(Rear)" : "";
+					str += cats.contains(CatLIT.LIT_UPPR) ? "(Upper)" : "";
+					str += cats.contains(CatLIT.LIT_LOWR) ? "(Lower)" : "";
+					Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black,
+							new Delta(Handle.TL, AffineTransform.getTranslateInstance(60, -30)));
+				}
+			}
+		}
+	}
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57att.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57att.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57att.java	(revision 36424)
@@ -0,0 +1,640 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.util.EnumMap;
+import java.util.HashMap;
+
+import s57.S57obj.Obj;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class S57att { // S57 Attribute lookup tables & methods
+    private S57att() {
+        // Hide default constructor for utilities classes
+    }
+    // CHECKSTYLE.OFF: LineLength
+
+    public enum Att {
+        UNKATT, AGENCY, BCNSHP, BUISHP, BOYSHP, BURDEP, CALSGN, CATAIR, CATACH, CATBRG, CATBUA, CATCBL, CATCAN, CATCAM, CATCHP, CATCOA, CATCTR, CATCON, CATCRN, CATDAM,
+        CATDIS, CATDOC, CATDPG, CATFNC, CATFRY, CATFIF, CATFOG, CATFOR, CATGAT, CATHAF, CATHLK, CATICE, CATINB, CATLND, CATLMK, CATLAM, CATLIT, CATMFA, CATMPA, CATMOR,
+        CATNAV, CATOBS, CATOFP, CATOLB, CATPLE, CATPIL, CATPIP, CATPRA, CATPYL, CATRAS, CATRTB, CATROS, CATTRK, CATRSC, CATREA, CATROD, CATRUN, CATSEA, CATSLC, CATSIT,
+        CATSIW, CATSIL, CATSLO, CATSCF, CATSPM, CATTSS, CATVEG, CATWAT, CATWED, CATWRK, COLOUR, COLPAT, COMCHA, CPDATE, CSCALE, CONDTN, CONRAD, CONVIS, CURVEL, DATEND,
+        DATSTA, DRVAL1, DRVAL2, ELEVAT, ESTRNG, EXCLIT, EXPSOU, FUNCTN, HEIGHT, HORACC, HORCLR, HORLEN, HORWID, ICEFAC, INFORM, JRSDTN, LIFCAP, LITCHR, LITVIS, MARSYS,
+        MLTYLT, NATION, NATCON, NATSUR, NATQUA, NMDATE, OBJNAM, ORIENT, PEREND, PERSTA, PICREP, PILDST, PRCTRY, PRODCT, PUBREF, QUASOU, RADWAL, RADIUS, RYRMGV, RESTRN,
+        SCAMIN, SCVAL1, SCVAL2, SECTR1, SECTR2, SHIPAM, SIGFRQ, SIGGEN, SIGGRP, SIGPER, SIGSEQ, SOUACC, SDISMX, SDISMN, SORDAT, SORIND, STATUS, SURATH, SUREND, SURSTA,
+        SURTYP, TECSOU, TXTDSC, TS_TSP, TS_TSV, T_ACWL, T_HWLW, T_MTOD, T_THDF, T_TINT, T_TSVL, T_VAHC, TIMEND, TIMSTA, TOPSHP, TRAFIC, VALACM, VALDCO, VALLMA, VALMAG,
+        VALMXR, VALNMR, VALSOU, VERACC, VERCLR, VERCCL, VERCOP, VERCSA, VERDAT, VERLEN, WATLEV, CAT_TS, NINFOM, NOBJNM, NPLDST, NTXTDS, HORDAT, POSACC, QUAPOS, CLSDNG,
+        DIRIMP, DISBK1, DISBK2, DISIPU, DISIPD, ELEVA1, ELEVA2, FNCTNM, WTWDIS, BUNVES, BNKWTW, COMCTN, HORCLL, HORCLW, TRSHGD, UNLOCD, HIGWAT, HIGNAM, LOWWAT, LOWNAM,
+        MEAWAT, MEANAM, OTHWAT, OTHNAM, REFLEV, SDRLEV, VCRLEV, SCHREF, USESHP, CURVHW, CURVLW, CURVMW, CURVOW, APTREF, SHPTYP, UPDMSG, ADDMRK, CATNMK, CATBRT, CATBUN,
+        CATCCL, CATCOM, CATHBR, CATRFD, CATTML, CATGAG, CATVTR, CATTAB, CATEXS, LG_SPD, LG_SPR, LG_BME, LG_LGS, LG_DRT, LG_WDP, LG_WDU, LG_REL, LG_FNC, LG_DES, LG_PBR,
+        LC_CSI, LC_CSE, LC_ASI, LC_ASE, LC_CCI, LC_CCE, LC_BM1, LC_BM2, LC_LG1, LC_LG2, LC_DR1, LC_DR2, LC_SP1, LC_SP2, LC_WD1, LC_WD2, CATCVR, HUNITS, CATOPA, CATSCH,
+        CATVAN
+    }
+
+    private static final EnumMap<Att, Integer> AttS57 = new EnumMap<>(Att.class);
+    static {
+        AttS57.put(Att.UNKATT, 0); AttS57.put(Att.AGENCY, 1); AttS57.put(Att.BCNSHP, 2); AttS57.put(Att.BUISHP, 3); AttS57.put(Att.BOYSHP, 4); AttS57.put(Att.BURDEP, 5);
+        AttS57.put(Att.CALSGN, 6); AttS57.put(Att.CATAIR, 7); AttS57.put(Att.CATACH, 8); AttS57.put(Att.CATBRG, 9); AttS57.put(Att.CATBUA, 10); AttS57.put(Att.CATCBL, 11);
+        AttS57.put(Att.CATCAN, 12); AttS57.put(Att.CATCAM, 13); AttS57.put(Att.CATCHP, 14); AttS57.put(Att.CATCOA, 15); AttS57.put(Att.CATCTR, 16); AttS57.put(Att.CATCON, 17);
+        AttS57.put(Att.CATCVR, 18); AttS57.put(Att.CATCRN, 19); AttS57.put(Att.CATDAM, 20); AttS57.put(Att.CATDIS, 21); AttS57.put(Att.CATDOC, 22); AttS57.put(Att.CATDPG, 23);
+        AttS57.put(Att.CATFNC, 24); AttS57.put(Att.CATFRY, 25); AttS57.put(Att.CATFIF, 26); AttS57.put(Att.CATFOG, 27); AttS57.put(Att.CATFOR, 28); AttS57.put(Att.CATGAT, 29);
+        AttS57.put(Att.CATHAF, 30); AttS57.put(Att.CATHLK, 31); AttS57.put(Att.CATICE, 32); AttS57.put(Att.CATINB, 33); AttS57.put(Att.CATLND, 34); AttS57.put(Att.CATLMK, 35);
+        AttS57.put(Att.CATLAM, 36); AttS57.put(Att.CATLIT, 37); AttS57.put(Att.CATMFA, 38); AttS57.put(Att.CATMPA, 39); AttS57.put(Att.CATMOR, 40); AttS57.put(Att.CATNAV, 41);
+        AttS57.put(Att.CATOBS, 42); AttS57.put(Att.CATOFP, 43); AttS57.put(Att.CATOLB, 44); AttS57.put(Att.CATPLE, 45); AttS57.put(Att.CATPIL, 46); AttS57.put(Att.CATPIP, 47);
+        AttS57.put(Att.CATPRA, 48); AttS57.put(Att.CATPYL, 49); AttS57.put(Att.CATRAS, 51); AttS57.put(Att.CATRTB, 52); AttS57.put(Att.CATROS, 53); AttS57.put(Att.CATTRK, 54);
+        AttS57.put(Att.CATRSC, 55); AttS57.put(Att.CATREA, 56); AttS57.put(Att.CATROD, 57); AttS57.put(Att.CATRUN, 58); AttS57.put(Att.CATSEA, 59); AttS57.put(Att.CATSLC, 60);
+        AttS57.put(Att.CATSIT, 61); AttS57.put(Att.CATSIW, 62); AttS57.put(Att.CATSIL, 63); AttS57.put(Att.CATSLO, 64); AttS57.put(Att.CATSCF, 65); AttS57.put(Att.CATSPM, 66);
+        AttS57.put(Att.CATTSS, 67); AttS57.put(Att.CATVEG, 68); AttS57.put(Att.CATWAT, 69); AttS57.put(Att.CATWED, 70); AttS57.put(Att.CATWRK, 71); AttS57.put(Att.COLOUR, 75);
+        AttS57.put(Att.COLPAT, 76); AttS57.put(Att.COMCHA, 77); AttS57.put(Att.CONDTN, 81); AttS57.put(Att.CONRAD, 82); AttS57.put(Att.CONVIS, 83); AttS57.put(Att.CURVEL, 84);
+        AttS57.put(Att.DATEND, 85); AttS57.put(Att.DATSTA, 86); AttS57.put(Att.DRVAL1, 87); AttS57.put(Att.DRVAL2, 88); AttS57.put(Att.ELEVAT, 90); AttS57.put(Att.ESTRNG, 91);
+        AttS57.put(Att.EXCLIT, 92); AttS57.put(Att.EXPSOU, 93); AttS57.put(Att.FUNCTN, 94); AttS57.put(Att.HEIGHT, 95); AttS57.put(Att.HUNITS, 96); AttS57.put(Att.HORACC, 97);
+        AttS57.put(Att.HORCLR, 98); AttS57.put(Att.HORLEN, 99); AttS57.put(Att.HORWID, 100); AttS57.put(Att.ICEFAC, 101); AttS57.put(Att.INFORM, 102); AttS57.put(Att.JRSDTN, 103);
+        AttS57.put(Att.LIFCAP, 106); AttS57.put(Att.LITCHR, 107); AttS57.put(Att.LITVIS, 108); AttS57.put(Att.MARSYS, 109); AttS57.put(Att.MLTYLT, 110); AttS57.put(Att.NATION, 111);
+        AttS57.put(Att.NATCON, 112); AttS57.put(Att.NATSUR, 113); AttS57.put(Att.NATQUA, 114); AttS57.put(Att.NMDATE, 115); AttS57.put(Att.OBJNAM, 116); AttS57.put(Att.ORIENT, 117);
+        AttS57.put(Att.PEREND, 118); AttS57.put(Att.PERSTA, 119); AttS57.put(Att.PICREP, 120); AttS57.put(Att.PILDST, 121); AttS57.put(Att.PRCTRY, 122); AttS57.put(Att.PRODCT, 123);
+        AttS57.put(Att.PUBREF, 124); AttS57.put(Att.QUASOU, 125); AttS57.put(Att.RADWAL, 126); AttS57.put(Att.RADIUS, 127); AttS57.put(Att.RYRMGV, 130); AttS57.put(Att.RESTRN, 131);
+        AttS57.put(Att.SCAMIN, 133); AttS57.put(Att.SCVAL1, 134); AttS57.put(Att.SCVAL2, 135); AttS57.put(Att.SECTR1, 136); AttS57.put(Att.SECTR2, 137); AttS57.put(Att.SHIPAM, 138);
+        AttS57.put(Att.SIGFRQ, 139); AttS57.put(Att.SIGGEN, 140); AttS57.put(Att.SIGGRP, 141); AttS57.put(Att.SIGPER, 142); AttS57.put(Att.SIGSEQ, 143); AttS57.put(Att.SOUACC, 144);
+        AttS57.put(Att.SDISMX, 145); AttS57.put(Att.SDISMN, 146); AttS57.put(Att.SORDAT, 147); AttS57.put(Att.SORIND, 148); AttS57.put(Att.STATUS, 149); AttS57.put(Att.SURATH, 150);
+        AttS57.put(Att.SUREND, 151); AttS57.put(Att.SURSTA, 152); AttS57.put(Att.SURTYP, 153); AttS57.put(Att.TECSOU, 156); AttS57.put(Att.TXTDSC, 158); AttS57.put(Att.TIMEND, 168);
+        AttS57.put(Att.TIMSTA, 169); AttS57.put(Att.TOPSHP, 171); AttS57.put(Att.TRAFIC, 172); AttS57.put(Att.VALACM, 173); AttS57.put(Att.VALDCO, 174); AttS57.put(Att.VALLMA, 175);
+        AttS57.put(Att.VALMAG, 176); AttS57.put(Att.VALMXR, 177); AttS57.put(Att.VALNMR, 178); AttS57.put(Att.VALSOU, 179); AttS57.put(Att.VERACC, 180); AttS57.put(Att.VERCLR, 181);
+        AttS57.put(Att.VERCCL, 182); AttS57.put(Att.VERCOP, 183); AttS57.put(Att.VERCSA, 184); AttS57.put(Att.VERDAT, 185); AttS57.put(Att.VERLEN, 186); AttS57.put(Att.WATLEV, 187);
+        AttS57.put(Att.CAT_TS, 188); AttS57.put(Att.NINFOM, 300); AttS57.put(Att.NOBJNM, 301); AttS57.put(Att.NPLDST, 302); AttS57.put(Att.NTXTDS, 304); AttS57.put(Att.HORDAT, 400);
+        AttS57.put(Att.POSACC, 401); AttS57.put(Att.QUAPOS, 402); AttS57.put(Att.CATOPA, 900); AttS57.put(Att.CATSCH, 901); AttS57.put(Att.CATVAN, 902);
+    }
+
+    private static final EnumMap<Att, Integer> AttIENC = new EnumMap<>(Att.class);
+    static {
+        AttIENC.put(Att.CATACH, 17000); AttIENC.put(Att.CATDIS, 17001); AttIENC.put(Att.CATSIT, 17002); AttIENC.put(Att.CATSIW, 17003); AttIENC.put(Att.RESTRN, 17004);
+        AttIENC.put(Att.VERDAT, 17005); AttIENC.put(Att.CATBRG, 17006); AttIENC.put(Att.CATFRY, 17007); AttIENC.put(Att.CATHAF, 17008); AttIENC.put(Att.MARSYS, 17009);
+        AttIENC.put(Att.CATCHP, 17010); AttIENC.put(Att.CATLAM, 17011); AttIENC.put(Att.CATSLC, 17012); AttIENC.put(Att.ADDMRK, 17050); AttIENC.put(Att.CATNMK, 17052);
+        AttIENC.put(Att.CLSDNG, 17055); AttIENC.put(Att.DIRIMP, 17056); AttIENC.put(Att.DISBK1, 17057); AttIENC.put(Att.DISBK2, 17058); AttIENC.put(Att.DISIPU, 17059);
+        AttIENC.put(Att.DISIPD, 17060); AttIENC.put(Att.ELEVA1, 17061); AttIENC.put(Att.ELEVA2, 17062); AttIENC.put(Att.FNCTNM, 17063); AttIENC.put(Att.WTWDIS, 17064);
+        AttIENC.put(Att.BUNVES, 17065); AttIENC.put(Att.CATBRT, 17066); AttIENC.put(Att.CATBUN, 17067); AttIENC.put(Att.CATCCL, 17069); AttIENC.put(Att.CATHBR, 17070);
+        AttIENC.put(Att.CATRFD, 17071); AttIENC.put(Att.CATTML, 17072); AttIENC.put(Att.COMCTN, 17073); AttIENC.put(Att.HORCLL, 17074); AttIENC.put(Att.HORCLW, 17075);
+        AttIENC.put(Att.TRSHGD, 17076); AttIENC.put(Att.UNLOCD, 17077); AttIENC.put(Att.CATGAG, 17078); AttIENC.put(Att.HIGWAT, 17080); AttIENC.put(Att.HIGNAM, 17081);
+        AttIENC.put(Att.LOWWAT, 17082); AttIENC.put(Att.LOWNAM, 17083); AttIENC.put(Att.MEAWAT, 17084); AttIENC.put(Att.MEANAM, 17085); AttIENC.put(Att.OTHWAT, 17086);
+        AttIENC.put(Att.OTHNAM, 17087); AttIENC.put(Att.REFLEV, 17088); AttIENC.put(Att.SDRLEV, 17089); AttIENC.put(Att.VCRLEV, 17090); AttIENC.put(Att.CATVTR, 17091);
+        AttIENC.put(Att.CATTAB, 17092); AttIENC.put(Att.SCHREF, 17093); AttIENC.put(Att.USESHP, 17094); AttIENC.put(Att.CURVHW, 17095); AttIENC.put(Att.CURVLW, 17096);
+        AttIENC.put(Att.CURVMW, 17097); AttIENC.put(Att.CURVOW, 17098); AttIENC.put(Att.APTREF, 17099); AttIENC.put(Att.CATEXS, 17100); AttIENC.put(Att.CATCBL, 17101);
+        AttIENC.put(Att.CATHLK, 17102); AttIENC.put(Att.HUNITS, 17103); AttIENC.put(Att.WATLEV, 17104); AttIENC.put(Att.LG_SPD, 18001); AttIENC.put(Att.LG_SPR, 18002);
+        AttIENC.put(Att.LG_BME, 18003); AttIENC.put(Att.LG_LGS, 18004); AttIENC.put(Att.LG_DRT, 18005); AttIENC.put(Att.LG_WDP, 18006); AttIENC.put(Att.LG_WDU, 18007);
+        AttIENC.put(Att.LG_REL, 18008); AttIENC.put(Att.LG_FNC, 18009); AttIENC.put(Att.LG_DES, 18010); AttIENC.put(Att.LG_PBR, 18011); AttIENC.put(Att.LC_CSI, 18012);
+        AttIENC.put(Att.LC_CSE, 18013); AttIENC.put(Att.LC_ASI, 18014); AttIENC.put(Att.LC_ASE, 18015); AttIENC.put(Att.LC_CCI, 18016); AttIENC.put(Att.LC_CCE, 18017);
+        AttIENC.put(Att.LC_BM1, 18018); AttIENC.put(Att.LC_BM2, 18019); AttIENC.put(Att.LC_LG1, 18020); AttIENC.put(Att.LC_LG2, 18021); AttIENC.put(Att.LC_DR1, 18022);
+        AttIENC.put(Att.LC_DR2, 18023); AttIENC.put(Att.LC_SP1, 18024); AttIENC.put(Att.LC_SP2, 18025); AttIENC.put(Att.LC_WD1, 18026); AttIENC.put(Att.LC_WD2, 18027);
+        AttIENC.put(Att.SHPTYP, 33066); AttIENC.put(Att.UPDMSG, 40000); AttIENC.put(Att.BNKWTW, 17999);
+    }
+
+    private static final EnumMap<Att, String> AttStr = new EnumMap<>(Att.class);
+    static {
+        AttStr.put(Att.UNKATT, ""); AttStr.put(Att.AGENCY, "agency"); AttStr.put(Att.BCNSHP, "shape"); AttStr.put(Att.BUISHP, "shape"); AttStr.put(Att.BOYSHP, "shape");
+        AttStr.put(Att.BURDEP, "depth_buried"); AttStr.put(Att.CALSGN, "callsign"); AttStr.put(Att.CATAIR, "category"); AttStr.put(Att.CATACH, "category");
+        AttStr.put(Att.CATBRG, "category"); AttStr.put(Att.CATBUA, "category"); AttStr.put(Att.CATCBL, "category"); AttStr.put(Att.CATCAN, "category");
+        AttStr.put(Att.CATCAM, "category"); AttStr.put(Att.CATCHP, "category"); AttStr.put(Att.CATCOA, "category"); AttStr.put(Att.CATCTR, "category");
+        AttStr.put(Att.CATCON, "category"); AttStr.put(Att.CATCRN, "category"); AttStr.put(Att.CATDAM, "category"); AttStr.put(Att.CATDIS, "category");
+        AttStr.put(Att.CATDOC, "category"); AttStr.put(Att.CATDPG, "category"); AttStr.put(Att.CATFNC, "category"); AttStr.put(Att.CATFRY, "category");
+        AttStr.put(Att.CATFIF, "category"); AttStr.put(Att.CATFOG, "category"); AttStr.put(Att.CATFOR, "category"); AttStr.put(Att.CATGAT, "category");
+        AttStr.put(Att.CATHAF, "category"); AttStr.put(Att.CATHLK, "category"); AttStr.put(Att.CATICE, "category"); AttStr.put(Att.CATINB, "category");
+        AttStr.put(Att.CATLND, "category"); AttStr.put(Att.CATLMK, "category"); AttStr.put(Att.CATLAM, "category"); AttStr.put(Att.CATLIT, "category");
+        AttStr.put(Att.CATMFA, "category"); AttStr.put(Att.CATMPA, "category"); AttStr.put(Att.CATMOR, "category"); AttStr.put(Att.CATNAV, "category");
+        AttStr.put(Att.CATOBS, "category"); AttStr.put(Att.CATOFP, "category"); AttStr.put(Att.CATOLB, "category"); AttStr.put(Att.CATPLE, "category");
+        AttStr.put(Att.CATPIL, "category"); AttStr.put(Att.CATPIP, "category"); AttStr.put(Att.CATPRA, "category"); AttStr.put(Att.CATPYL, "category");
+        AttStr.put(Att.CATRAS, "category"); AttStr.put(Att.CATRTB, "category"); AttStr.put(Att.CATROS, "category"); AttStr.put(Att.CATTRK, "category");
+        AttStr.put(Att.CATRSC, "category"); AttStr.put(Att.CATREA, "category"); AttStr.put(Att.CATROD, "category"); AttStr.put(Att.CATRUN, "category");
+        AttStr.put(Att.CATSEA, "category"); AttStr.put(Att.CATSLC, "category"); AttStr.put(Att.CATSIT, "category"); AttStr.put(Att.CATSIW, "category");
+        AttStr.put(Att.CATSIL, "category"); AttStr.put(Att.CATSLO, "category"); AttStr.put(Att.CATSCF, "category"); AttStr.put(Att.CATSPM, "category");
+        AttStr.put(Att.CATTSS, "category"); AttStr.put(Att.CATVEG, "category"); AttStr.put(Att.CATWAT, "category"); AttStr.put(Att.CATWED, "category");
+        AttStr.put(Att.CATWRK, "category"); AttStr.put(Att.COLOUR, "colour"); AttStr.put(Att.COLPAT, "colour_pattern"); AttStr.put(Att.COMCHA, "channel");
+        AttStr.put(Att.CONDTN, "condition"); AttStr.put(Att.CONRAD, "reflectivity"); AttStr.put(Att.CONVIS, "conspicuity"); AttStr.put(Att.CURVEL, "velocity");
+        AttStr.put(Att.DATEND, "end_date"); AttStr.put(Att.DATSTA, "start_date"); AttStr.put(Att.DRVAL1, "minimum_depth"); AttStr.put(Att.DRVAL2, "maximum_depth");
+        AttStr.put(Att.ELEVAT, "elevation"); AttStr.put(Att.ESTRNG, "estimated_range"); AttStr.put(Att.EXCLIT, "exhibition"); AttStr.put(Att.EXPSOU, "exposition");
+        AttStr.put(Att.FUNCTN, "function"); AttStr.put(Att.HEIGHT, "height"); AttStr.put(Att.HUNITS, "units"); AttStr.put(Att.HORACC, "accuracy");
+        AttStr.put(Att.HORCLR, "clearance_width"); AttStr.put(Att.HORLEN, "length"); AttStr.put(Att.HORWID, "width"); AttStr.put(Att.ICEFAC, "factor");
+        AttStr.put(Att.INFORM, "information"); AttStr.put(Att.JRSDTN, "jurisdiction"); AttStr.put(Att.LIFCAP, "maximum_load"); AttStr.put(Att.LITCHR, "character");
+        AttStr.put(Att.LITVIS, "visibility"); AttStr.put(Att.MARSYS, "system"); AttStr.put(Att.MLTYLT, "multiple"); AttStr.put(Att.NATION, "nation");
+        AttStr.put(Att.NATCON, "construction"); AttStr.put(Att.NATSUR, "surface"); AttStr.put(Att.NATQUA, "surface_qualification"); AttStr.put(Att.NMDATE, "nm_date");
+        AttStr.put(Att.OBJNAM, "name"); AttStr.put(Att.ORIENT, "orientation"); AttStr.put(Att.PEREND, "period_end"); AttStr.put(Att.PERSTA, "period_start");
+        AttStr.put(Att.PICREP, "picture"); AttStr.put(Att.PILDST, "pilot_district"); AttStr.put(Att.PRCTRY, "producing_country"); AttStr.put(Att.PRODCT, "product");
+        AttStr.put(Att.PUBREF, "reference"); AttStr.put(Att.QUASOU, "quality"); AttStr.put(Att.RADWAL, "wavelength"); AttStr.put(Att.RADIUS, "radius");
+        AttStr.put(Att.RYRMGV, "year"); AttStr.put(Att.RESTRN, "restriction"); AttStr.put(Att.SECTR1, "sector_start"); AttStr.put(Att.SECTR2, "sector_end");
+        AttStr.put(Att.SHIPAM, "shift"); AttStr.put(Att.SIGFRQ, "frequency"); AttStr.put(Att.SIGGEN, "generation"); AttStr.put(Att.SIGGRP, "group");
+        AttStr.put(Att.SIGPER, "period"); AttStr.put(Att.SIGSEQ, "sequence"); AttStr.put(Att.SOUACC, "sounding_accuracy"); AttStr.put(Att.SDISMX, "maximum_sounding");
+        AttStr.put(Att.SDISMN, "minimum_sounding"); AttStr.put(Att.SORDAT, "source_date"); AttStr.put(Att.SORIND, "source"); AttStr.put(Att.STATUS, "status");
+        AttStr.put(Att.SURATH, "authority"); AttStr.put(Att.SUREND, "survey_end"); AttStr.put(Att.SURSTA, "survey_start"); AttStr.put(Att.SURTYP, "survey");
+        AttStr.put(Att.TECSOU, "technique"); AttStr.put(Att.TXTDSC, "document"); AttStr.put(Att.TIMEND, "end_time"); AttStr.put(Att.TIMSTA, "start_time");
+        AttStr.put(Att.TOPSHP, "shape"); AttStr.put(Att.TRAFIC, "traffic_flow"); AttStr.put(Att.VALACM, "variation_change"); AttStr.put(Att.VALDCO, "depth");
+        AttStr.put(Att.VALLMA, "anomaly"); AttStr.put(Att.VALMAG, "variation"); AttStr.put(Att.VALMXR, "maximum_range"); AttStr.put(Att.VALNMR, "range");
+        AttStr.put(Att.VALSOU, "depth"); AttStr.put(Att.VERACC, "vertical_accuracy"); AttStr.put(Att.VERCLR, "clearance_height");
+        AttStr.put(Att.VERCCL, "clearance_height_closed"); AttStr.put(Att.VERCOP, "clearance_height_open"); AttStr.put(Att.VERCSA, "clearance_height_safe");
+        AttStr.put(Att.VERDAT, "vertical_datum"); AttStr.put(Att.VERLEN, "vertical_length"); AttStr.put(Att.WATLEV, "water_level"); AttStr.put(Att.CAT_TS, "category");
+        AttStr.put(Att.NINFOM, "national_information"); AttStr.put(Att.NOBJNM, "national_name"); AttStr.put(Att.NPLDST, "national_pilot_district");
+        AttStr.put(Att.NTXTDS, "national_description"); AttStr.put(Att.HORDAT, "horizontal_datum"); AttStr.put(Att.POSACC, "positional_accuracy");
+        AttStr.put(Att.QUAPOS, "position_quality"); AttStr.put(Att.ADDMRK, "addition"); AttStr.put(Att.BNKWTW, "bank"); AttStr.put(Att.CATNMK, "category");
+        AttStr.put(Att.CLSDNG, "danger_class"); AttStr.put(Att.DIRIMP, "impact"); AttStr.put(Att.DISBK1, "distance_start"); AttStr.put(Att.DISBK2, "distance_end");
+        AttStr.put(Att.DISIPU, "distance_up"); AttStr.put(Att.DISIPD, "distance_down"); AttStr.put(Att.ELEVA1, "minimum_elevation");
+        AttStr.put(Att.ELEVA2, "maximum_elevation"); AttStr.put(Att.FNCTNM, "function"); AttStr.put(Att.WTWDIS, "distance"); AttStr.put(Att.BUNVES, "availability");
+        AttStr.put(Att.CATBRT, "category"); AttStr.put(Att.CATBUN, "category"); AttStr.put(Att.CATCCL, "category"); AttStr.put(Att.CATHBR, "category");
+        AttStr.put(Att.CATRFD, "category"); AttStr.put(Att.CATTML, "category"); AttStr.put(Att.COMCTN, "communication"); AttStr.put(Att.HORCLL, "horizontal_clearance_length");
+        AttStr.put(Att.HORCLW, "horizontal_clearance_width"); AttStr.put(Att.TRSHGD, "goods"); AttStr.put(Att.UNLOCD, ""); AttStr.put(Att.CATGAG, "category");
+        AttStr.put(Att.HIGWAT, "high_value"); AttStr.put(Att.HIGNAM, "high_name"); AttStr.put(Att.LOWWAT, "low_value"); AttStr.put(Att.LOWNAM, "low_name");
+        AttStr.put(Att.MEAWAT, "mean_value"); AttStr.put(Att.MEANAM, "mean_name"); AttStr.put(Att.OTHWAT, "local_value"); AttStr.put(Att.OTHNAM, "local_name");
+        AttStr.put(Att.REFLEV, "gravity_reference"); AttStr.put(Att.SDRLEV, "sounding_name"); AttStr.put(Att.VCRLEV, "vertical_name"); AttStr.put(Att.CATVTR, "category");
+        AttStr.put(Att.CATTAB, "operation"); AttStr.put(Att.SCHREF, "schedule"); AttStr.put(Att.USESHP, "use"); AttStr.put(Att.CURVHW, "high_velocity");
+        AttStr.put(Att.CURVLW, "low_velocity"); AttStr.put(Att.CURVMW, "mean_velocity"); AttStr.put(Att.CURVOW, "other_velocity"); AttStr.put(Att.APTREF, "passing_time");
+        AttStr.put(Att.CATCOM, "category"); AttStr.put(Att.CATCVR, "category"); AttStr.put(Att.CATEXS, "category"); AttStr.put(Att.SHPTYP, "ship");
+        AttStr.put(Att.UPDMSG, "message"); AttStr.put(Att.CATOPA, "category"); AttStr.put(Att.CATSCH, "category"); AttStr.put(Att.CATVAN, "category");
+    }
+
+    private static final EnumMap<Obj, Att> Accuracy = new EnumMap<>(Obj.class); static {
+        Accuracy.put(Obj.UNKOBJ, Att.HORACC); }
+
+    private static final EnumMap<Obj, Att> Addition = new EnumMap<>(Obj.class); static {
+        Addition.put(Obj.UNKOBJ, Att.ADDMRK); }
+
+    private static final EnumMap<Obj, Att> Agency = new EnumMap<>(Obj.class); static {
+        Agency.put(Obj.UNKOBJ, Att.AGENCY); }
+
+    private static final EnumMap<Obj, Att> Anomaly = new EnumMap<>(Obj.class); static {
+        Anomaly.put(Obj.UNKOBJ, Att.VALLMA); }
+
+    private static final EnumMap<Obj, Att> Authority = new EnumMap<>(Obj.class); static {
+        Authority.put(Obj.UNKOBJ, Att.SURATH); }
+
+    private static final EnumMap<Obj, Att> Availability = new EnumMap<>(Obj.class); static {
+        Availability.put(Obj.UNKOBJ, Att.BUNVES); }
+
+    private static final EnumMap<Obj, Att> Bank = new EnumMap<>(Obj.class); static {
+        Bank.put(Obj.UNKOBJ, Att.BNKWTW); }
+
+    private static final EnumMap<Obj, Att> Callsign = new EnumMap<>(Obj.class); static {
+        Callsign.put(Obj.UNKOBJ, Att.CALSGN); }
+
+    private static final EnumMap<Obj, Att> Category = new EnumMap<>(Obj.class);
+    static {
+        Category.put(Obj.ACHARE, Att.CATACH); Category.put(Obj.ACHBRT, Att.CATACH); Category.put(Obj.AIRARE, Att.CATAIR); Category.put(Obj.BCNCAR, Att.CATCAM); Category.put(Obj.BCNLAT, Att.CATLAM);
+        Category.put(Obj.BCNSPP, Att.CATSPM); Category.put(Obj.BOYLAT, Att.CATLAM); Category.put(Obj.BOYINB, Att.CATINB); Category.put(Obj.BOYSPP, Att.CATSPM); Category.put(Obj.DAYMAR, Att.CATSPM);
+        Category.put(Obj.BRIDGE, Att.CATBRG); Category.put(Obj.BUAARE, Att.CATBUA); Category.put(Obj.BUNSTA, Att.CATBUN); Category.put(Obj.CANALS, Att.CATCAN);
+        Category.put(Obj.CBLARE, Att.CATCBL); Category.put(Obj.CBLOHD, Att.CATCBL); Category.put(Obj.CBLSUB, Att.CATCBL); Category.put(Obj.CHKPNT, Att.CATCHP); Category.put(Obj.COMARE, Att.CATCOM);
+        Category.put(Obj.COALNE, Att.CATCOA); Category.put(Obj.CONVYR, Att.CATCON); Category.put(Obj.CRANES, Att.CATCRN); Category.put(Obj.CTRPNT, Att.CATCTR); Category.put(Obj.DAMCON, Att.CATDAM);
+        Category.put(Obj.DISMAR, Att.CATDIS); Category.put(Obj.DMPGRD, Att.CATDPG); Category.put(Obj.DOCARE, Att.CATDOC); Category.put(Obj.EXCNST, Att.CATEXS); Category.put(Obj.FERYRT, Att.CATFRY);
+        Category.put(Obj.FNCLNE, Att.CATFNC); Category.put(Obj.FOGSIG, Att.CATFOG); Category.put(Obj.FORSTC, Att.CATFOR); Category.put(Obj.FSHFAC, Att.CATFIF); Category.put(Obj.GATCON, Att.CATGAT);
+        Category.put(Obj.HRBFAC, Att.CATHAF); Category.put(Obj.HRBARE, Att.CATHBR); Category.put(Obj.HRBBSN, Att.CATHBR); Category.put(Obj.HULKES, Att.CATHLK); Category.put(Obj.ICEARE, Att.CATICE);
+        Category.put(Obj.LNDRGN, Att.CATLND); Category.put(Obj.LNDMRK, Att.CATLMK); Category.put(Obj.LIGHTS, Att.CATLIT); Category.put(Obj.M_COVR, Att.CATCVR); Category.put(Obj.MARCUL, Att.CATMFA);
+        Category.put(Obj.MIPARE, Att.CATMPA); Category.put(Obj.MORFAC, Att.CATMOR); Category.put(Obj.NAVLNE, Att.CATNAV); Category.put(Obj.NOTMRK, Att.CATNMK); Category.put(Obj.OBSTRN, Att.CATOBS);
+        Category.put(Obj.OFSPLF, Att.CATOFP); Category.put(Obj.OILBAR, Att.CATOLB); Category.put(Obj.OSPARE, Att.CATOPA); Category.put(Obj.PILPNT, Att.CATPLE); Category.put(Obj.PILBOP, Att.CATPIL);
+        Category.put(Obj.PIPARE, Att.CATPIP); Category.put(Obj.PIPOHD, Att.CATPIP); Category.put(Obj.PIPSOL, Att.CATPIP); Category.put(Obj.PRDARE, Att.CATPRA); Category.put(Obj.PYLONS, Att.CATPYL);
+        Category.put(Obj.RADSTA, Att.CATRAS); Category.put(Obj.RCRTCL, Att.CATTRK); Category.put(Obj.RCTLPT, Att.CATTRK); Category.put(Obj.RDOSTA, Att.CATROS); Category.put(Obj.RDOCAL, Att.CATCOM);
+        Category.put(Obj.RECTRC, Att.CATTRK); Category.put(Obj.REFDMP, Att.CATRFD); Category.put(Obj.RESARE, Att.CATREA); Category.put(Obj.RSCSTA, Att.CATRSC);
+        Category.put(Obj.RTPBCN, Att.CATRTB); Category.put(Obj.ROADWY, Att.CATROD); Category.put(Obj.RUNWAY, Att.CATRUN); Category.put(Obj.SEAARE, Att.CATSEA); Category.put(Obj.SILTNK, Att.CATSIL);
+        Category.put(Obj.SISTAT, Att.CATSIT); Category.put(Obj.SISTAW, Att.CATSIW); Category.put(Obj.SLCONS, Att.CATSLC); Category.put(Obj.SLOTOP, Att.CATSLO); Category.put(Obj.SLOGRD, Att.CATSLO);
+        Category.put(Obj.SMCFAC, Att.CATSCF); Category.put(Obj.TERMNL, Att.CATTML); Category.put(Obj.TS_FEB, Att.CAT_TS); Category.put(Obj.TSELNE, Att.CATTSS); Category.put(Obj.TSEZNE, Att.CATTSS);
+        Category.put(Obj.TSSBND, Att.CATTSS); Category.put(Obj.TSSCRS, Att.CATTSS); Category.put(Obj.TSSLPT, Att.CATTSS); Category.put(Obj.TSSRON, Att.CATTSS); Category.put(Obj.TWRTPT, Att.CATTRK);
+        Category.put(Obj.VEGATN, Att.CATVEG); Category.put(Obj.VEHTRF, Att.CATVTR); Category.put(Obj.WATTUR, Att.CATWAT); Category.put(Obj.WEDKLP, Att.CATWED); Category.put(Obj.WRECKS, Att.CATWRK);
+        Category.put(Obj.WTWAXS, Att.CATCCL); Category.put(Obj.WTWARE, Att.CATCCL); Category.put(Obj.WTWGAG, Att.CATGAG); Category.put(Obj.BERTHS, Att.CATBRT); Category.put(Obj.VAATON, Att.CATVAN);
+    }
+
+    private static final EnumMap<Obj, Att> Channel = new EnumMap<>(Obj.class); static {
+        Channel.put(Obj.UNKOBJ, Att.COMCHA); }
+
+    private static final EnumMap<Obj, Att> Character = new EnumMap<>(Obj.class); static {
+        Character.put(Obj.UNKOBJ, Att.LITCHR); }
+
+    private static final EnumMap<Obj, Att> Clearance_height = new EnumMap<>(Obj.class); static {
+        Clearance_height.put(Obj.UNKOBJ, Att.VERCLR); }
+
+    private static final EnumMap<Obj, Att> Clearance_height_closed = new EnumMap<>(Obj.class); static {
+        Clearance_height_closed.put(Obj.UNKOBJ, Att.VERCCL); }
+
+    private static final EnumMap<Obj, Att> Clearance_height_open = new EnumMap<>(Obj.class); static {
+        Clearance_height_open.put(Obj.UNKOBJ, Att.VERCOP); }
+
+    private static final EnumMap<Obj, Att> Clearance_height_safe = new EnumMap<>(Obj.class); static {
+        Clearance_height_safe.put(Obj.UNKOBJ, Att.VERCSA); }
+
+    private static final EnumMap<Obj, Att> Clearance_width = new EnumMap<>(Obj.class); static {
+        Clearance_width.put(Obj.UNKOBJ, Att.HORCLR); }
+
+    private static final EnumMap<Obj, Att> Colour = new EnumMap<>(Obj.class); static {
+        Colour.put(Obj.UNKOBJ, Att.COLOUR); }
+
+    private static final EnumMap<Obj, Att> Colour_pattern = new EnumMap<>(Obj.class); static {
+        Colour_pattern.put(Obj.UNKOBJ, Att.COLPAT); }
+
+    private static final EnumMap<Obj, Att> Communication = new EnumMap<>(Obj.class); static {
+        Communication.put(Obj.UNKOBJ, Att.COMCTN); }
+
+    private static final EnumMap<Obj, Att> Condition = new EnumMap<>(Obj.class); static {
+        Condition.put(Obj.UNKOBJ, Att.CONDTN); }
+
+    private static final EnumMap<Obj, Att> Conspicuity = new EnumMap<>(Obj.class); static {
+        Conspicuity.put(Obj.UNKOBJ, Att.CONVIS); }
+
+    private static final EnumMap<Obj, Att> Construction = new EnumMap<>(Obj.class); static {
+        Construction.put(Obj.UNKOBJ, Att.NATCON); }
+
+    private static final EnumMap<Obj, Att> Danger_class = new EnumMap<>(Obj.class); static {
+        Danger_class.put(Obj.UNKOBJ, Att.CLSDNG); }
+
+    private static final EnumMap<Obj, Att> Depth = new EnumMap<>(Obj.class); static {
+        Depth.put(Obj.UNKOBJ, Att.VALDCO); Depth.put(Obj.SOUNDG, Att.VALSOU); }
+
+    private static final EnumMap<Obj, Att> Depth_buried = new EnumMap<>(Obj.class); static {
+        Depth_buried.put(Obj.UNKOBJ, Att.BURDEP); }
+
+    private static final EnumMap<Obj, Att> Description = new EnumMap<>(Obj.class); static {
+        Description.put(Obj.UNKOBJ, Att.TXTDSC); }
+
+    private static final EnumMap<Obj, Att> Distance = new EnumMap<>(Obj.class); static {
+        Distance.put(Obj.UNKOBJ, Att.WTWDIS); }
+
+    private static final EnumMap<Obj, Att> Distance_down = new EnumMap<>(Obj.class); static {
+        Distance_down.put(Obj.UNKOBJ, Att.DISIPD); }
+
+    private static final EnumMap<Obj, Att> Distance_end = new EnumMap<>(Obj.class); static {
+        Distance_end.put(Obj.UNKOBJ, Att.DISBK2); }
+
+    private static final EnumMap<Obj, Att> Distance_start = new EnumMap<>(Obj.class); static {
+        Distance_start.put(Obj.UNKOBJ, Att.DISBK1); }
+
+    private static final EnumMap<Obj, Att> Distance_up = new EnumMap<>(Obj.class); static {
+        Distance_up.put(Obj.UNKOBJ, Att.DISIPU); }
+
+    private static final EnumMap<Obj, Att> Elevation = new EnumMap<>(Obj.class); static {
+        Elevation.put(Obj.UNKOBJ, Att.ELEVAT); }
+
+    private static final EnumMap<Obj, Att> End_date = new EnumMap<>(Obj.class); static {
+        End_date.put(Obj.UNKOBJ, Att.DATEND); }
+
+    private static final EnumMap<Obj, Att> End_time = new EnumMap<>(Obj.class); static {
+        End_time.put(Obj.UNKOBJ, Att.TIMEND); }
+
+    private static final EnumMap<Obj, Att> Estimated_range = new EnumMap<>(Obj.class); static {
+        Estimated_range.put(Obj.UNKOBJ, Att.ESTRNG); }
+
+    private static final EnumMap<Obj, Att> Exhibition = new EnumMap<>(Obj.class); static {
+        Exhibition.put(Obj.UNKOBJ, Att.EXCLIT); }
+
+    private static final EnumMap<Obj, Att> Exposition = new EnumMap<>(Obj.class); static {
+        Exposition.put(Obj.UNKOBJ, Att.EXPSOU); }
+
+    private static final EnumMap<Obj, Att> Factor = new EnumMap<>(Obj.class); static {
+        Factor.put(Obj.UNKOBJ, Att.ICEFAC); }
+
+    private static final EnumMap<Obj, Att> Frequency = new EnumMap<>(Obj.class); static {
+        Frequency.put(Obj.UNKOBJ, Att.SIGFRQ); }
+
+    private static final EnumMap<Obj, Att> Function = new EnumMap<>(Obj.class); static {
+        Function.put(Obj.BUISGL, Att.FUNCTN); Function.put(Obj.LNDMRK, Att.FUNCTN); Function.put(Obj.NOTMRK, Att.FNCTNM); }
+
+    private static final EnumMap<Obj, Att> Generation = new EnumMap<>(Obj.class); static {
+        Generation.put(Obj.UNKOBJ, Att.SIGGEN); }
+
+    private static final EnumMap<Obj, Att> Goods = new EnumMap<>(Obj.class); static {
+        Goods.put(Obj.UNKOBJ, Att.TRSHGD); }
+
+    private static final EnumMap<Obj, Att> Gravity_reference = new EnumMap<>(Obj.class); static {
+        Gravity_reference.put(Obj.UNKOBJ, Att.REFLEV); }
+
+    private static final EnumMap<Obj, Att> Group = new EnumMap<>(Obj.class); static {
+        Group.put(Obj.UNKOBJ, Att.SIGGRP); }
+
+    private static final EnumMap<Obj, Att> Height = new EnumMap<>(Obj.class); static {
+        Height.put(Obj.UNKOBJ, Att.HEIGHT); }
+
+    private static final EnumMap<Obj, Att> High_name = new EnumMap<>(Obj.class); static {
+        High_name.put(Obj.UNKOBJ, Att.HIGNAM); }
+
+    private static final EnumMap<Obj, Att> High_value = new EnumMap<>(Obj.class); static {
+        High_value.put(Obj.UNKOBJ, Att.HIGWAT); }
+
+    private static final EnumMap<Obj, Att> High_velocity = new EnumMap<>(Obj.class); static {
+        High_velocity.put(Obj.UNKOBJ, Att.CURVHW); }
+
+    private static final EnumMap<Obj, Att> Horizontal_clearance_length = new EnumMap<>(Obj.class); static {
+        Horizontal_clearance_length.put(Obj.UNKOBJ, Att.HORCLL); }
+
+    private static final EnumMap<Obj, Att> Horizontal_clearance_width = new EnumMap<>(Obj.class); static {
+        Horizontal_clearance_width.put(Obj.UNKOBJ, Att.HORCLW); }
+
+    private static final EnumMap<Obj, Att> Horizontal_datum = new EnumMap<>(Obj.class); static {
+        Horizontal_datum.put(Obj.UNKOBJ, Att.HORDAT); }
+
+    private static final EnumMap<Obj, Att> Impact = new EnumMap<>(Obj.class); static {
+        Impact.put(Obj.UNKOBJ, Att.DIRIMP); }
+
+    private static final EnumMap<Obj, Att> Information = new EnumMap<>(Obj.class); static {
+        Information.put(Obj.UNKOBJ, Att.INFORM); }
+
+    private static final EnumMap<Obj, Att> Jurisdiction = new EnumMap<>(Obj.class); static {
+        Jurisdiction.put(Obj.UNKOBJ, Att.JRSDTN); }
+
+    private static final EnumMap<Obj, Att> Length = new EnumMap<>(Obj.class); static {
+        Length.put(Obj.UNKOBJ, Att.HORLEN); }
+
+    private static final EnumMap<Obj, Att> Local_name = new EnumMap<>(Obj.class); static {
+        Local_name.put(Obj.UNKOBJ, Att.OTHNAM); }
+
+    private static final EnumMap<Obj, Att> Local_value = new EnumMap<>(Obj.class); static {
+        Local_value.put(Obj.UNKOBJ, Att.OTHWAT); }
+
+    private static final EnumMap<Obj, Att> Low_name = new EnumMap<>(Obj.class); static {
+        Low_name.put(Obj.UNKOBJ, Att.LOWNAM); }
+
+    private static final EnumMap<Obj, Att> Low_value = new EnumMap<>(Obj.class); static {
+        Low_value.put(Obj.UNKOBJ, Att.LOWWAT); }
+
+    private static final EnumMap<Obj, Att> Low_velocity = new EnumMap<>(Obj.class); static {
+        Low_velocity.put(Obj.UNKOBJ, Att.CURVLW); }
+
+    private static final EnumMap<Obj, Att> Maximum_depth = new EnumMap<>(Obj.class); static {
+        Maximum_depth.put(Obj.UNKOBJ, Att.DRVAL2); }
+
+    private static final EnumMap<Obj, Att> Maximum_elevation = new EnumMap<>(Obj.class); static {
+        Maximum_elevation.put(Obj.UNKOBJ, Att.ELEVA2); }
+
+    private static final EnumMap<Obj, Att> Maximum_load = new EnumMap<>(Obj.class); static {
+        Maximum_load.put(Obj.UNKOBJ, Att.LIFCAP); }
+
+    private static final EnumMap<Obj, Att> Maximum_range = new EnumMap<>(Obj.class); static {
+        Maximum_range.put(Obj.UNKOBJ, Att.VALMXR); }
+
+    private static final EnumMap<Obj, Att> Maximum_sounding = new EnumMap<>(Obj.class); static {
+        Maximum_sounding.put(Obj.UNKOBJ, Att.SDISMX); }
+
+    private static final EnumMap<Obj, Att> Mean_name = new EnumMap<>(Obj.class); static {
+        Mean_name.put(Obj.UNKOBJ, Att.MEANAM); }
+
+    private static final EnumMap<Obj, Att> Mean_value = new EnumMap<>(Obj.class); static {
+        Mean_value.put(Obj.UNKOBJ, Att.MEAWAT); }
+
+    private static final EnumMap<Obj, Att> Mean_velocity = new EnumMap<>(Obj.class); static {
+        Mean_velocity.put(Obj.UNKOBJ, Att.CURVMW); }
+
+    private static final EnumMap<Obj, Att> Message = new EnumMap<>(Obj.class); static {
+        Message.put(Obj.UNKOBJ, Att.UPDMSG); }
+
+    private static final EnumMap<Obj, Att> Minimum_depth = new EnumMap<>(Obj.class); static {
+        Minimum_depth.put(Obj.UNKOBJ, Att.DRVAL1); }
+
+    private static final EnumMap<Obj, Att> Minimum_elevation = new EnumMap<>(Obj.class); static {
+        Minimum_elevation.put(Obj.UNKOBJ, Att.ELEVA1); }
+
+    private static final EnumMap<Obj, Att> Minimum_sounding = new EnumMap<>(Obj.class); static {
+        Minimum_sounding.put(Obj.UNKOBJ, Att.SDISMN); }
+
+    private static final EnumMap<Obj, Att> Multiple = new EnumMap<>(Obj.class); static {
+        Multiple.put(Obj.UNKOBJ, Att.MLTYLT); }
+
+    private static final EnumMap<Obj, Att> Name = new EnumMap<>(Obj.class); static {
+        Name.put(Obj.UNKOBJ, Att.OBJNAM); }
+
+    private static final EnumMap<Obj, Att> National_information = new EnumMap<>(Obj.class); static {
+        National_information.put(Obj.UNKOBJ, Att.NINFOM); }
+
+    private static final EnumMap<Obj, Att> Nationality = new EnumMap<>(Obj.class); static {
+        Nationality.put(Obj.UNKOBJ, Att.NATION); }
+
+    private static final EnumMap<Obj, Att> National_description = new EnumMap<>(Obj.class); static {
+        National_description.put(Obj.UNKOBJ, Att.NTXTDS); }
+
+    private static final EnumMap<Obj, Att> National_name = new EnumMap<>(Obj.class); static {
+        National_name.put(Obj.UNKOBJ, Att.NOBJNM); }
+
+    private static final EnumMap<Obj, Att> National_pilot_district = new EnumMap<>(Obj.class); static {
+        National_pilot_district.put(Obj.UNKOBJ, Att.NPLDST); }
+
+    private static final EnumMap<Obj, Att> Nm_date = new EnumMap<>(Obj.class); static {
+        Nm_date.put(Obj.UNKOBJ, Att.NMDATE); }
+
+    private static final EnumMap<Obj, Att> Other_velocity = new EnumMap<>(Obj.class); static {
+        Other_velocity.put(Obj.UNKOBJ, Att.CURVOW); }
+
+    private static final EnumMap<Obj, Att> Operation = new EnumMap<>(Obj.class); static {
+        Operation.put(Obj.UNKOBJ, Att.CATTAB); }
+
+    private static final EnumMap<Obj, Att> Orientation = new EnumMap<>(Obj.class); static {
+        Orientation.put(Obj.UNKOBJ, Att.ORIENT); }
+
+    private static final EnumMap<Obj, Att> Passing_time = new EnumMap<>(Obj.class); static {
+        Passing_time.put(Obj.UNKOBJ, Att.APTREF); }
+
+    private static final EnumMap<Obj, Att> Period = new EnumMap<>(Obj.class); static {
+        Period.put(Obj.UNKOBJ, Att.SIGPER); }
+
+    private static final EnumMap<Obj, Att> Period_end = new EnumMap<>(Obj.class); static {
+        Period_end.put(Obj.UNKOBJ, Att.PEREND); }
+
+    private static final EnumMap<Obj, Att> Period_start = new EnumMap<>(Obj.class); static {
+        Period_start.put(Obj.UNKOBJ, Att.PERSTA); }
+
+    private static final EnumMap<Obj, Att> Pilot_district = new EnumMap<>(Obj.class); static {
+        Pilot_district.put(Obj.UNKOBJ, Att.PILDST); }
+
+    private static final EnumMap<Obj, Att> Position_quality = new EnumMap<>(Obj.class); static {
+        Position_quality.put(Obj.UNKOBJ, Att.QUAPOS); }
+
+    private static final EnumMap<Obj, Att> Positional_accuracy = new EnumMap<>(Obj.class); static {
+        Positional_accuracy.put(Obj.UNKOBJ, Att.POSACC); }
+
+    private static final EnumMap<Obj, Att> Producing_country = new EnumMap<>(Obj.class); static {
+        Producing_country.put(Obj.UNKOBJ, Att.PRCTRY); }
+
+    private static final EnumMap<Obj, Att> Product = new EnumMap<>(Obj.class); static {
+        Product.put(Obj.UNKOBJ, Att.PRODCT); }
+
+    private static final EnumMap<Obj, Att> Quality = new EnumMap<>(Obj.class); static {
+        Quality.put(Obj.UNKOBJ, Att.QUASOU); }
+
+   private static final EnumMap<Obj, Att> Range = new EnumMap<>(Obj.class); static {
+        Range.put(Obj.UNKOBJ, Att.VALNMR); }
+
+    private static final EnumMap<Obj, Att> Reference = new EnumMap<>(Obj.class); static {
+        Reference.put(Obj.UNKOBJ, Att.PUBREF); }
+
+    private static final EnumMap<Obj, Att> Reflectivity = new EnumMap<>(Obj.class); static {
+        Reflectivity.put(Obj.UNKOBJ, Att.CONRAD); }
+
+    private static final EnumMap<Obj, Att> Restriction = new EnumMap<>(Obj.class); static {
+        Restriction.put(Obj.UNKOBJ, Att.RESTRN); }
+
+    private static final EnumMap<Obj, Att> Schedule = new EnumMap<>(Obj.class); static {
+        Schedule.put(Obj.UNKOBJ, Att.SCHREF); }
+
+    private static final EnumMap<Obj, Att> Shape = new EnumMap<>(Obj.class); static {
+        Shape.put(Obj.BCNCAR, Att.BCNSHP); Shape.put(Obj.BCNISD, Att.BCNSHP);
+        Shape.put(Obj.BCNLAT, Att.BCNSHP); Shape.put(Obj.BCNSAW, Att.BCNSHP); Shape.put(Obj.BCNSPP, Att.BCNSHP); Shape.put(Obj.BUISGL, Att.BUISHP);
+        Shape.put(Obj.BOYCAR, Att.BOYSHP); Shape.put(Obj.BOYISD, Att.BOYSHP); Shape.put(Obj.BOYLAT, Att.BOYSHP); Shape.put(Obj.BOYSAW, Att.BOYSHP); Shape.put(Obj.BOYSPP, Att.BOYSHP);
+        Shape.put(Obj.BOYINB, Att.BOYSHP); Shape.put(Obj.DAYMAR, Att.TOPSHP); Shape.put(Obj.TOPMAR, Att.TOPSHP); Shape.put(Obj.MORFAC, Att.BOYSHP);
+        Shape.put(Obj.SILTNK, Att.BUISHP);
+    }
+
+    private static final EnumMap<Obj, Att> Sector_end = new EnumMap<>(Obj.class); static {
+        Sector_end.put(Obj.UNKOBJ, Att.SECTR2); }
+
+    private static final EnumMap<Obj, Att> Sector_start = new EnumMap<>(Obj.class); static {
+        Sector_start.put(Obj.UNKOBJ, Att.SECTR1); }
+
+    private static final EnumMap<Obj, Att> Sequence = new EnumMap<>(Obj.class); static {
+        Sequence.put(Obj.UNKOBJ, Att.SIGSEQ); }
+
+    private static final EnumMap<Obj, Att> Shift = new EnumMap<>(Obj.class); static {
+        Shift.put(Obj.UNKOBJ, Att.SHIPAM); }
+
+    private static final EnumMap<Obj, Att> Ship = new EnumMap<>(Obj.class); static {
+        Ship.put(Obj.UNKOBJ, Att.SHPTYP); }
+
+    private static final EnumMap<Obj, Att> Sounding_accuracy = new EnumMap<>(Obj.class); static {
+        Sounding_accuracy.put(Obj.UNKOBJ, Att.SOUACC); }
+
+    private static final EnumMap<Obj, Att> Sounding_name = new EnumMap<>(Obj.class); static {
+        Sounding_name.put(Obj.UNKOBJ, Att.SDRLEV); }
+
+    private static final EnumMap<Obj, Att> Start_date = new EnumMap<>(Obj.class); static {
+        Start_date.put(Obj.UNKOBJ, Att.DATSTA); }
+
+    private static final EnumMap<Obj, Att> Start_time = new EnumMap<>(Obj.class); static {
+        Start_time.put(Obj.UNKOBJ, Att.TIMSTA); }
+
+    private static final EnumMap<Obj, Att> Status = new EnumMap<>(Obj.class); static {
+        Status.put(Obj.UNKOBJ, Att.STATUS); }
+
+    private static final EnumMap<Obj, Att> Surface = new EnumMap<>(Obj.class); static {
+        Surface.put(Obj.UNKOBJ, Att.NATSUR); }
+
+    private static final EnumMap<Obj, Att> Surface_qualification = new EnumMap<>(Obj.class); static {
+        Surface_qualification.put(Obj.UNKOBJ, Att.NATQUA); }
+
+    private static final EnumMap<Obj, Att> Survey = new EnumMap<>(Obj.class); static {
+        Survey.put(Obj.UNKOBJ, Att.SURTYP); }
+
+    private static final EnumMap<Obj, Att> Survey_end = new EnumMap<>(Obj.class); static {
+        Survey_end.put(Obj.UNKOBJ, Att.SUREND); }
+
+    private static final EnumMap<Obj, Att> Survey_start = new EnumMap<>(Obj.class); static {
+        Survey_start.put(Obj.UNKOBJ, Att.SURSTA); }
+
+    private static final EnumMap<Obj, Att> System = new EnumMap<>(Obj.class); static {
+        System.put(Obj.UNKOBJ, Att.MARSYS); }
+
+    private static final EnumMap<Obj, Att> Technique = new EnumMap<>(Obj.class); static {
+        Technique.put(Obj.UNKOBJ, Att.TECSOU); }
+
+    private static final EnumMap<Obj, Att> Traffic_flow = new EnumMap<>(Obj.class); static {
+        Traffic_flow.put(Obj.UNKOBJ, Att.TRAFIC); }
+
+    private static final EnumMap<Obj, Att> Units = new EnumMap<>(Obj.class); static {
+        Units.put(Obj.UNKOBJ, Att.HUNITS); }
+
+    private static final EnumMap<Obj, Att> Use = new EnumMap<>(Obj.class); static {
+        Use.put(Obj.UNKOBJ, Att.USESHP); }
+
+    private static final EnumMap<Obj, Att> Variation = new EnumMap<>(Obj.class); static {
+        Variation.put(Obj.UNKOBJ, Att.VALMAG); }
+
+    private static final EnumMap<Obj, Att> Variation_change = new EnumMap<>(Obj.class); static {
+        Variation_change.put(Obj.UNKOBJ, Att.VALACM); }
+
+    private static final EnumMap<Obj, Att> Velocity = new EnumMap<>(Obj.class); static {
+        Velocity.put(Obj.UNKOBJ, Att.CURVEL); }
+
+    private static final EnumMap<Obj, Att> Vertical_accuracy = new EnumMap<>(Obj.class); static {
+        Vertical_accuracy.put(Obj.UNKOBJ, Att.VERACC); }
+
+    private static final EnumMap<Obj, Att> Vertical_datum = new EnumMap<>(Obj.class); static {
+        Vertical_datum.put(Obj.UNKOBJ, Att.VERDAT); }
+
+    private static final EnumMap<Obj, Att> Vertical_length = new EnumMap<>(Obj.class); static {
+        Vertical_length.put(Obj.UNKOBJ, Att.VERLEN); }
+
+    private static final EnumMap<Obj, Att> Vertical_name = new EnumMap<>(Obj.class); static {
+        Vertical_name.put(Obj.UNKOBJ, Att.VCRLEV); }
+
+    private static final EnumMap<Obj, Att> Visibility = new EnumMap<>(Obj.class); static {
+        Visibility.put(Obj.UNKOBJ, Att.LITVIS); }
+
+    private static final EnumMap<Obj, Att> Water_level = new EnumMap<>(Obj.class); static {
+        Water_level.put(Obj.UNKOBJ, Att.WATLEV); }
+
+    private static final EnumMap<Obj, Att> Wavelength = new EnumMap<>(Obj.class); static {
+        Wavelength.put(Obj.UNKOBJ, Att.RADWAL); }
+
+    private static final EnumMap<Obj, Att> Width = new EnumMap<>(Obj.class); static {
+        Width.put(Obj.UNKOBJ, Att.HORWID); }
+
+    private static final EnumMap<Obj, Att> Year = new EnumMap<>(Obj.class); static {
+        Year.put(Obj.UNKOBJ, Att.RYRMGV); }
+
+    private static final HashMap<String, EnumMap<Obj, Att>> StrAtt = new HashMap<>();
+    static {
+        StrAtt.put("accuracy", Accuracy); StrAtt.put("addition", Addition); StrAtt.put("agency", Agency); StrAtt.put("anomaly", Anomaly); StrAtt.put("authority", Authority);
+        StrAtt.put("availability", Availability); StrAtt.put("bank", Bank); StrAtt.put("callsign", Callsign); StrAtt.put("category", Category); StrAtt.put("channel", Channel);
+        StrAtt.put("character", Character); StrAtt.put("clearance_height", Clearance_height); StrAtt.put("clearance_height_closed", Clearance_height_closed);
+        StrAtt.put("clearance_height_open", Clearance_height_open); StrAtt.put("clearance_height_safe", Clearance_height_safe); StrAtt.put("clearance_width", Clearance_width);
+        StrAtt.put("colour", Colour); StrAtt.put("colour_pattern", Colour_pattern); StrAtt.put("communication", Communication); StrAtt.put("condition", Condition);
+        StrAtt.put("conspicuity", Conspicuity); StrAtt.put("construction", Construction); StrAtt.put("danger_class", Danger_class); StrAtt.put("depth", Depth);
+        StrAtt.put("depth_buried", Depth_buried); StrAtt.put("description", Description); StrAtt.put("distance", Distance); StrAtt.put("distance_down", Distance_down);
+        StrAtt.put("distance_end", Distance_end); StrAtt.put("distance_start", Distance_start); StrAtt.put("distance_up", Distance_up); StrAtt.put("elevation", Elevation);
+        StrAtt.put("end_date", End_date); StrAtt.put("end_time", End_time); StrAtt.put("estimated_range", Estimated_range); StrAtt.put("exhibition", Exhibition);
+        StrAtt.put("exposition", Exposition); StrAtt.put("factor", Factor); StrAtt.put("frequency", Frequency); StrAtt.put("function", Function);
+        StrAtt.put("generation", Generation); StrAtt.put("goods", Goods); StrAtt.put("gravity_reference", Gravity_reference); StrAtt.put("group", Group);
+        StrAtt.put("height", Height); StrAtt.put("high_name", High_name); StrAtt.put("high_value", High_value); StrAtt.put("high_velocity", High_velocity);
+        StrAtt.put("horizontal_clearance_length", Horizontal_clearance_length); StrAtt.put("horizontal_clearance_width", Horizontal_clearance_width);
+        StrAtt.put("horizontal_datum", Horizontal_datum); StrAtt.put("impact", Impact); StrAtt.put("information", Information); StrAtt.put("jurisdiction", Jurisdiction);
+        StrAtt.put("length", Length); StrAtt.put("local_name", Local_name); StrAtt.put("local_value", Local_value); StrAtt.put("low_name", Low_name);
+        StrAtt.put("low_value", Low_value); StrAtt.put("low_velocity", Low_velocity); StrAtt.put("maximum_depth", Maximum_depth); StrAtt.put("maximum_elevation", Maximum_elevation);
+        StrAtt.put("maximum_load", Maximum_load); StrAtt.put("maximum_range", Maximum_range); StrAtt.put("maximum_sounding", Maximum_sounding); StrAtt.put("mean_name", Mean_name);
+        StrAtt.put("mean_value", Mean_value); StrAtt.put("mean_velocity", Mean_velocity); StrAtt.put("message", Message); StrAtt.put("minimum_depth", Minimum_depth);
+        StrAtt.put("minimum_elevation", Minimum_elevation); StrAtt.put("minimum_sounding", Minimum_sounding); StrAtt.put("multiple", Multiple); StrAtt.put("name", Name);
+        StrAtt.put("national_information", National_information); StrAtt.put("nationality", Nationality); StrAtt.put("national_description", National_description);
+        StrAtt.put("national_name", National_name); StrAtt.put("national_pilot_district", National_pilot_district); StrAtt.put("nm_date", Nm_date); StrAtt.put("other_velocity", Other_velocity);
+        StrAtt.put("operation", Operation); StrAtt.put("orientation", Orientation); StrAtt.put("passing_time", Passing_time); StrAtt.put("period", Period); StrAtt.put("period_end", Period_end);
+        StrAtt.put("period_start", Period_start); StrAtt.put("pilot_district", Pilot_district); StrAtt.put("position_quality", Position_quality); StrAtt.put("positional_accuracy", Positional_accuracy);
+        StrAtt.put("producing_country", Producing_country); StrAtt.put("product", Product); StrAtt.put("quality", Quality); StrAtt.put("range", Range);
+        StrAtt.put("reference", Reference); StrAtt.put("reflectivity", Reflectivity); StrAtt.put("restriction", Restriction); StrAtt.put("schedule", Schedule); StrAtt.put("shape", Shape);
+        StrAtt.put("sector_end", Sector_end); StrAtt.put("sector_start", Sector_start); StrAtt.put("sequence", Sequence); StrAtt.put("shift", Shift); StrAtt.put("ship", Ship);
+        StrAtt.put("sounding_accuracy", Sounding_accuracy); StrAtt.put("sounding_name", Sounding_name); StrAtt.put("start_date", Start_date); StrAtt.put("start_time", Start_time);
+        StrAtt.put("status", Status); StrAtt.put("surface", Surface); StrAtt.put("surface_qualification", Surface_qualification); StrAtt.put("survey", Survey);
+        StrAtt.put("survey_end", Survey_end); StrAtt.put("survey_start", Survey_start); StrAtt.put("system", System); StrAtt.put("technique", Technique); StrAtt.put("traffic_flow", Traffic_flow);
+        StrAtt.put("units", Units); StrAtt.put("use", Use); StrAtt.put("variation", Variation); StrAtt.put("variation_change", Variation_change); StrAtt.put("velocity", Velocity);
+        StrAtt.put("vertical_accuracy", Vertical_accuracy); StrAtt.put("vertical_datum", Vertical_datum); StrAtt.put("vertical_length", Vertical_length); StrAtt.put("vertical_name", Vertical_name);
+        StrAtt.put("visibility", Visibility); StrAtt.put("water_level", Water_level); StrAtt.put("wavelength", Wavelength); StrAtt.put("width", Width); StrAtt.put("year", Year);
+    }
+
+    public static Att decodeAttribute(long attl) { // Convert S57 attribute code to SCM attribute enumeration
+        for (Att att : AttS57.keySet()) {
+            if (AttS57.get(att) == attl) return att;
+        }
+        for (Att att : AttIENC.keySet()) {
+            if (AttIENC.get(att) == attl) return att;
+        }
+        return Att.UNKATT;
+    }
+
+    public static Integer encodeAttribute(Att attribute) { // Convert SCM attribute enumeration to S57 attribute code
+        return AttS57.get(attribute) != 0 ? AttS57.get(attribute) : AttIENC.get(attribute);
+    }
+
+    public static String stringAttribute(Att attribute) { // Convert SCM enumeration to OSM attribute string
+        String str = AttStr.get(attribute);
+        return str != null ? str : "";
+    }
+
+    public static Att enumAttribute(String attribute, Obj obj) { // Convert OSM attribute string to SCM enumeration
+        if ((attribute != null) && !attribute.isEmpty()) {
+            EnumMap<Obj, Att> map = StrAtt.get(attribute);
+            if (map != null) {
+                if (map.containsKey(obj)) {
+                    return map.get(obj);
+                } else if (map.containsKey(Obj.UNKOBJ)) {
+                    return map.get(Obj.UNKOBJ);
+                } else {
+                    return Att.UNKATT;
+                }
+            }
+        }
+        return Att.UNKATT;
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57box.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57box.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57box.java	(revision 36424)
@@ -0,0 +1,179 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.util.ArrayList;
+
+import s57.S57map.AttMap;
+import s57.S57map.Edge;
+import s57.S57map.Feature;
+import s57.S57map.ObjTab;
+import s57.S57map.Pflag;
+import s57.S57map.Prim;
+import s57.S57map.Rflag;
+import s57.S57map.Snode;
+import s57.S57obj.Obj;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class S57box { //S57 bounding box truncation
+    private S57box() {
+        // Hide default constructor for utilities classes
+    }
+    // CHECKSTYLE.OFF: LineLength
+
+    enum Ext { I, N, W, S, E }
+
+    static Ext getExt(S57map map, double lat, double lon) {
+        if ((lat >= map.bounds.maxlat) && (lon < map.bounds.maxlon)) {
+            return Ext.N;
+        } else if (lon <= map.bounds.minlon) {
+            return Ext.W;
+        } else if (lat <= map.bounds.minlat) {
+            return Ext.S;
+        } else if (lon >= map.bounds.maxlon) {
+            return Ext.E;
+        }
+        return Ext.I;
+    }
+
+    public static void bBox(S57map map) {
+        /* Truncations
+         * Points: delete point features outside BB
+         * Lines: Truncate edges at BB boundaries
+         * Areas: Truncate edges of outers & inners and add new border edges. Merge inners to outer where necessary
+         * Remove nodes outside BB
+         * Remove edges that are completely outside BB
+         */
+        class Land {
+            long first;
+            Snode start;
+            Ext sbound;
+            long last;
+            Snode end;
+            Ext ebound;
+            Feature land;
+
+            Land(Feature l) {
+                land = l;
+                first = last = 0;
+                start = end = null;
+                sbound = ebound = Ext.I;
+            }
+        }
+
+        if (map.features.get(Obj.COALNE) != null) {
+            ArrayList<Feature> coasts = new ArrayList<>();
+            ArrayList<Land> lands = new ArrayList<>();
+            if (map.features.get(Obj.LNDARE) == null) {
+                map.features.put(Obj.LNDARE, new ArrayList<Feature>());
+            }
+            for (Feature feature : map.features.get(Obj.COALNE)) {
+                Feature land = new Feature();
+                land.id = ++map.xref;
+                land.type = Obj.LNDARE;
+                land.reln = Rflag.MASTER;
+                land.objs.put(Obj.LNDARE, new ObjTab());
+                land.objs.get(Obj.LNDARE).put(0, new AttMap());
+                if (feature.geom.prim == Pflag.AREA) {
+                    land.geom = feature.geom;
+                    map.features.get(Obj.LNDARE).add(land);
+                } else if (feature.geom.prim == Pflag.LINE) {
+                    land.geom.prim = Pflag.LINE;
+                    land.geom.elems.addAll(feature.geom.elems);
+                    coasts.add(land);
+                }
+            }
+            while (coasts.size() > 0) {
+                Feature land = coasts.remove(0);
+                Edge fedge = map.edges.get(land.geom.elems.get(0).id);
+                long first = fedge.first;
+                long last = map.edges.get(land.geom.elems.get(land.geom.elems.size() - 1).id).last;
+                if (coasts.size() > 0) {
+                    boolean added = true;
+                    while (added) {
+                        added = false;
+                        for (int i = 0; i < coasts.size(); i++) {
+                            Feature coast = coasts.get(i);
+                            Edge edge = map.edges.get(coast.geom.elems.get(0).id);
+                            if (edge.first == last) {
+                                land.geom.elems.add(coast.geom.elems.get(0));
+                                last = edge.last;
+                                coasts.remove(i--);
+                                added = true;
+                            } else if (edge.last == first) {
+                                land.geom.elems.add(0, coast.geom.elems.get(0));
+                                first = edge.first;
+                                coasts.remove(i--);
+                                added = true;
+                            }
+                        }
+                    }
+                }
+                lands.add(new Land(land));
+            }
+            ArrayList<Land> islands = new ArrayList<>();
+            for (Land land : lands) {
+                map.sortGeom(land.land);
+                if (land.land.geom.prim == Pflag.AREA) {
+                    islands.add(land);
+                    map.features.get(Obj.LNDARE).add(land.land);
+                }
+            }
+            for (Land island : islands) {
+                lands.remove(island);
+            }
+            for (Land land : lands) {
+                land.first = map.edges.get(land.land.geom.elems.get(0).id).first;
+                land.start = map.nodes.get(land.first);
+                land.sbound = getExt(map, land.start.lat, land.start.lon);
+                land.last = map.edges.get(land.land.geom.elems.get(land.land.geom.comps.get(0).size - 1).id).last;
+                land.end = map.nodes.get(land.last);
+                land.ebound = getExt(map, land.end.lat, land.end.lon);
+            }
+            islands = new ArrayList<>();
+            for (Land land : lands) {
+                if ((land.sbound == Ext.I) || (land.ebound == Ext.I)) {
+                    islands.add(land);
+                }
+            }
+            for (Land island : islands) {
+                lands.remove(island);
+            }
+            for (Land land : lands) {
+                Edge nedge = new Edge();
+                nedge.first = land.last;
+                nedge.last = land.first;
+                Ext bound = land.ebound;
+                while (bound != land.sbound) {
+                    switch (bound) {
+                    case N:
+                        nedge.nodes.add(1L);
+                        bound = Ext.W;
+                        break;
+                    case W:
+                        nedge.nodes.add(2L);
+                        bound = Ext.S;
+                        break;
+                    case S:
+                        nedge.nodes.add(3L);
+                        bound = Ext.E;
+                        break;
+                    case E:
+                        nedge.nodes.add(4L);
+                        bound = Ext.N;
+                        break;
+                    default:
+                        continue;
+                    }
+                }
+                map.edges.put(++map.xref, nedge);
+                land.land.geom.elems.add(new Prim(map.xref));
+                land.land.geom.comps.get(0).size++;
+                land.land.geom.prim = Pflag.AREA;
+                map.features.get(Obj.LNDARE).add(land.land);
+            }
+        }
+        return;
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57dat.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57dat.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57dat.java	(revision 36424)
@@ -0,0 +1,506 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.EnumMap;
+
+import s57.S57map.Feature;
+import s57.S57map.Pflag;
+import s57.S57obj.Obj;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class S57dat { // S57 ENC file fields lookup tables & methods
+    private S57dat() {
+        // Hide default constructor for utilities classes
+    }
+    // CHECKSTYLE.OFF: LineLength
+
+    public static class S57conv {
+        int asc;    // 0=A(), 1+=A(n)
+        int bin;    // 0=ASCII, +ve=b1n(unsigned LE), -ve=b2n(signed LE), n>8=b1(n/8)(unsigned BE)
+        S57conv(int a, int b) {
+            asc = a; bin = b;
+        }
+    }
+
+    public enum S57subf { I8RN, RCNM, RCID, EXPP, INTU, DSNM, EDTN, UPDN, UADT, ISDT, STED, PRSP, PSDN, PRED, PROF, AGEN, COMT, DSTR, AALL, NALL, NOMR, NOCR, NOGR, NOLR, NOIN, NOCN,
+        NOED, NOFA, HDAT, VDAT, SDAT, CSCL, DUNI, HUNI, PUNI, COUN, COMF, SOMF, PROJ, PRP1, PRP2, PRP3, PRP4, FEAS, FNOR, FPMF, RPID, RYCO, RXCO, CURP, RXVL, RYVL, PRCO, ESDT,
+        LSDT, DCRT, CODT, PACC, HACC, SACC, FILE, LFIL, VOLM, IMPL, SLAT, WLON, NLAT, ELON, CRCS, NAM1, NAM2, OORA, OAAC, OACO, OALL, OATY, DEFN, AUTH, RFTP, RFVL, ATLB, ATDO,
+        ADMU, ADFT, RAVA, DVAL, DVSD, OBLB, ASET, PRIM, GRUP, OBJL, RVER, RUIN, FIDN, FIDS, ATTL, ATVL, FFUI, FFIX, NFPT, LNAM, RIND, FSUI, FSIX, NSPT, NAME, ORNT, USAG, MASK,
+        VPUI, VPIX, NVPT, TOPI, CCUI, CCIX, CCNC, YCOO, XCOO, VE3D, ATYP, SURF, ORDR, RESO, STPT, CTPT, ENPT, CDPM, CDPR }
+
+    private static final EnumMap<S57subf, S57conv> convs = new EnumMap<>(S57subf.class);
+    static {
+        convs.put(S57subf.I8RN, new S57conv(5, 2));
+        convs.put(S57subf.RCNM, new S57conv(2, 1)); convs.put(S57subf.RCID, new S57conv(10, 4)); convs.put(S57subf.EXPP, new S57conv(1, 1));
+        convs.put(S57subf.INTU, new S57conv(1, 1)); convs.put(S57subf.DSNM, new S57conv(0, 0)); convs.put(S57subf.EDTN, new S57conv(0, 0));
+        convs.put(S57subf.UPDN, new S57conv(0, 0)); convs.put(S57subf.UADT, new S57conv(8, 0)); convs.put(S57subf.ISDT, new S57conv(8, 0));
+        convs.put(S57subf.STED, new S57conv(4, 0)); convs.put(S57subf.PRSP, new S57conv(3, 1)); convs.put(S57subf.PSDN, new S57conv(0, 0));
+        convs.put(S57subf.PRED, new S57conv(0, 0)); convs.put(S57subf.PROF, new S57conv(2, 1)); convs.put(S57subf.AGEN, new S57conv(2, 2));
+        convs.put(S57subf.COMT, new S57conv(0, 0)); convs.put(S57subf.DSTR, new S57conv(2, 1)); convs.put(S57subf.AALL, new S57conv(1, 1));
+        convs.put(S57subf.NALL, new S57conv(1, 1)); convs.put(S57subf.NOMR, new S57conv(0, 4)); convs.put(S57subf.NOCR, new S57conv(0, 4));
+        convs.put(S57subf.NOGR, new S57conv(0, 4)); convs.put(S57subf.NOLR, new S57conv(0, 4)); convs.put(S57subf.NOIN, new S57conv(0, 4));
+        convs.put(S57subf.NOCN, new S57conv(0, 4)); convs.put(S57subf.NOED, new S57conv(0, 4)); convs.put(S57subf.NOFA, new S57conv(0, 4));
+        convs.put(S57subf.HDAT, new S57conv(3, 1)); convs.put(S57subf.VDAT, new S57conv(2, 1)); convs.put(S57subf.SDAT, new S57conv(2, 1));
+        convs.put(S57subf.CSCL, new S57conv(0, 4)); convs.put(S57subf.DUNI, new S57conv(2, 1)); convs.put(S57subf.HUNI, new S57conv(2, 1));
+        convs.put(S57subf.PUNI, new S57conv(2, 1)); convs.put(S57subf.COUN, new S57conv(2, 1)); convs.put(S57subf.COMF, new S57conv(0, 4));
+        convs.put(S57subf.SOMF, new S57conv(0, 4)); convs.put(S57subf.PROJ, new S57conv(3, 1)); convs.put(S57subf.PRP1, new S57conv(0, -4));
+        convs.put(S57subf.PRP2, new S57conv(0, -4)); convs.put(S57subf.PRP3, new S57conv(0, -4)); convs.put(S57subf.PRP4, new S57conv(0, -4));
+        convs.put(S57subf.FEAS, new S57conv(0, -4)); convs.put(S57subf.FNOR, new S57conv(0, -4)); convs.put(S57subf.FPMF, new S57conv(0, 4));
+        convs.put(S57subf.RPID, new S57conv(1, 1)); convs.put(S57subf.RYCO, new S57conv(0, -4)); convs.put(S57subf.RXCO, new S57conv(0, -4));
+        convs.put(S57subf.CURP, new S57conv(2, 1)); convs.put(S57subf.RXVL, new S57conv(0, -4)); convs.put(S57subf.RYVL, new S57conv(0, -4));
+        convs.put(S57subf.PRCO, new S57conv(2, 2)); convs.put(S57subf.ESDT, new S57conv(8, 0)); convs.put(S57subf.LSDT, new S57conv(8, 0));
+        convs.put(S57subf.DCRT, new S57conv(0, 0)); convs.put(S57subf.CODT, new S57conv(8, 0)); convs.put(S57subf.PACC, new S57conv(0, 4));
+        convs.put(S57subf.HACC, new S57conv(0, 4)); convs.put(S57subf.SACC, new S57conv(0, 4)); convs.put(S57subf.FILE, new S57conv(0, 0));
+        convs.put(S57subf.LFIL, new S57conv(0, 0)); convs.put(S57subf.VOLM, new S57conv(0, 0)); convs.put(S57subf.IMPL, new S57conv(3, 0));
+        convs.put(S57subf.SLAT, new S57conv(0, 0)); convs.put(S57subf.WLON, new S57conv(0, 0)); convs.put(S57subf.NLAT, new S57conv(0, 0));
+        convs.put(S57subf.ELON, new S57conv(0, 0)); convs.put(S57subf.CRCS, new S57conv(0, 0)); convs.put(S57subf.NAM1, new S57conv(12, 5));
+        convs.put(S57subf.NAM2, new S57conv(12, 5)); convs.put(S57subf.OORA, new S57conv(1, 1)); convs.put(S57subf.OAAC, new S57conv(6, 0));
+        convs.put(S57subf.OACO, new S57conv(5, 2)); convs.put(S57subf.OALL, new S57conv(0, 0)); convs.put(S57subf.OATY, new S57conv(1, 1));
+        convs.put(S57subf.DEFN, new S57conv(0, 0)); convs.put(S57subf.AUTH, new S57conv(2, 2)); convs.put(S57subf.RFTP, new S57conv(2, 1));
+        convs.put(S57subf.RFVL, new S57conv(0, 0)); convs.put(S57subf.ATLB, new S57conv(5, 2)); convs.put(S57subf.ATDO, new S57conv(1, 1));
+        convs.put(S57subf.ADMU, new S57conv(0, 0)); convs.put(S57subf.ADFT, new S57conv(0, 0)); convs.put(S57subf.RAVA, new S57conv(1, 1));
+        convs.put(S57subf.DVAL, new S57conv(0, 0)); convs.put(S57subf.DVSD, new S57conv(0, 0)); convs.put(S57subf.OBLB, new S57conv(5, 2));
+        convs.put(S57subf.ASET, new S57conv(1, 1)); convs.put(S57subf.PRIM, new S57conv(1, 1)); convs.put(S57subf.GRUP, new S57conv(3, 1));
+        convs.put(S57subf.OBJL, new S57conv(5, 2)); convs.put(S57subf.RVER, new S57conv(3, 2)); convs.put(S57subf.RUIN, new S57conv(1, 1));
+        convs.put(S57subf.FIDN, new S57conv(10, 4)); convs.put(S57subf.FIDS, new S57conv(5, 2)); convs.put(S57subf.ATTL, new S57conv(5, 2));
+        convs.put(S57subf.ATVL, new S57conv(0, 0)); convs.put(S57subf.FFUI, new S57conv(1, 1)); convs.put(S57subf.FFIX, new S57conv(0, 2));
+        convs.put(S57subf.NFPT, new S57conv(0, 2)); convs.put(S57subf.LNAM, new S57conv(17, 8)); convs.put(S57subf.RIND, new S57conv(0, 1));
+        convs.put(S57subf.FSUI, new S57conv(1, 1)); convs.put(S57subf.FSIX, new S57conv(0, 2)); convs.put(S57subf.NSPT, new S57conv(0, 2));
+        convs.put(S57subf.NAME, new S57conv(12, 5)); convs.put(S57subf.ORNT, new S57conv(1, 1)); convs.put(S57subf.USAG, new S57conv(1, 1));
+        convs.put(S57subf.MASK, new S57conv(1, 1)); convs.put(S57subf.VPUI, new S57conv(1, 1)); convs.put(S57subf.VPIX, new S57conv(0, 2));
+        convs.put(S57subf.NVPT, new S57conv(0, 2)); convs.put(S57subf.TOPI, new S57conv(1, 1)); convs.put(S57subf.CCUI, new S57conv(1, 1));
+        convs.put(S57subf.CCIX, new S57conv(0, 2)); convs.put(S57subf.CCNC, new S57conv(0, 2)); convs.put(S57subf.YCOO, new S57conv(0, -4));
+        convs.put(S57subf.XCOO, new S57conv(0, -4)); convs.put(S57subf.VE3D, new S57conv(0, -4)); convs.put(S57subf.ATYP, new S57conv(1, 1));
+        convs.put(S57subf.SURF, new S57conv(1, 1)); convs.put(S57subf.ORDR, new S57conv(1, 1)); convs.put(S57subf.RESO, new S57conv(0, 4));
+        convs.put(S57subf.STPT, new S57conv(0, 0)); convs.put(S57subf.CTPT, new S57conv(0, 0)); convs.put(S57subf.ENPT, new S57conv(0, 0));
+        convs.put(S57subf.CDPM, new S57conv(0, 0)); convs.put(S57subf.CDPR, new S57conv(0, 0));
+    }
+
+    public enum S57field { I8RI, DSID, DSSI, DSPM, DSPR, DSRC, DSHT, DSAC, CATD, CATX, DDDF, DDDR, DDDI, DDOM, DDRF, DDSI, DDSC,
+        FRID, FOID, LNAM, ATTF, NATF, FFPC, FFPT, FSPC, FSPT, VRID, ATTV, VRPC, VRPT, SGCC, SG2D, SG3D, ARCC, AR2D, EL2D, CT2D }
+
+    private static ArrayList<S57subf> S57i8ri = new ArrayList<>(Arrays.asList(S57subf.I8RN));
+    private static ArrayList<S57subf> S57dsid = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.EXPP, S57subf.INTU, S57subf.DSNM, S57subf.EDTN, S57subf.UPDN,
+            S57subf.UADT, S57subf.ISDT, S57subf.STED, S57subf.PRSP, S57subf.PSDN, S57subf.PRED, S57subf.PROF, S57subf.AGEN, S57subf.COMT));
+    private static ArrayList<S57subf> S57dssi = new ArrayList<>(Arrays.asList(S57subf.DSTR, S57subf.AALL, S57subf.NALL, S57subf.NOMR, S57subf.NOCR, S57subf.NOGR, S57subf.NOLR,
+            S57subf.NOIN, S57subf.NOCN, S57subf.NOED, S57subf.NOFA));
+    private static ArrayList<S57subf> S57dspm = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.HDAT, S57subf.VDAT, S57subf.SDAT, S57subf.CSCL, S57subf.DUNI,
+            S57subf.HUNI, S57subf.PUNI, S57subf.COUN, S57subf.COMF, S57subf.SOMF, S57subf.COMT));
+    private static ArrayList<S57subf> S57dspr = new ArrayList<>(Arrays.asList(S57subf.PROJ, S57subf.PRP1, S57subf.PRP2, S57subf.PRP3, S57subf.PRP4, S57subf.FEAS, S57subf.FNOR,
+            S57subf.FPMF, S57subf.COMT));
+    private static ArrayList<S57subf> S57dsrc = new ArrayList<>(Arrays.asList(S57subf.RPID, S57subf.RYCO, S57subf.RXCO, S57subf.CURP, S57subf.FPMF, S57subf.RXVL, S57subf.RYVL,
+            S57subf.COMT));
+    private static ArrayList<S57subf> S57dsht = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.PRCO, S57subf.ESDT, S57subf.LSDT, S57subf.DCRT, S57subf.CODT, S57subf.COMT));
+    private static ArrayList<S57subf> S57dsac = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.PACC, S57subf.HACC, S57subf.SACC, S57subf.FPMF, S57subf.COMT));
+    private static ArrayList<S57subf> S57catd = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.FILE, S57subf.LFIL, S57subf.VOLM, S57subf.IMPL, S57subf.SLAT,
+            S57subf.WLON, S57subf.NLAT, S57subf.ELON, S57subf.CRCS, S57subf.COMT));
+    private static ArrayList<S57subf> S57catx = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.NAM1, S57subf.NAM2, S57subf.COMT));
+    private static ArrayList<S57subf> S57dddf = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.OORA, S57subf.OAAC, S57subf.OACO, S57subf.OALL, S57subf.OATY,
+            S57subf.DEFN, S57subf.AUTH, S57subf.COMT));
+    private static ArrayList<S57subf> S57dddr = new ArrayList<>(Arrays.asList(S57subf.RFTP, S57subf.RFVL));
+    private static ArrayList<S57subf> S57dddi = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.ATLB, S57subf.ATDO, S57subf.ADMU, S57subf.ADFT, S57subf.AUTH, S57subf.COMT));
+    private static ArrayList<S57subf> S57ddom = new ArrayList<>(Arrays.asList(S57subf.RAVA, S57subf.DVAL, S57subf.DVSD, S57subf.DEFN, S57subf.AUTH));
+    private static ArrayList<S57subf> S57ddrf = new ArrayList<>(Arrays.asList(S57subf.RFTP, S57subf.RFVL));
+    private static ArrayList<S57subf> S57ddsi = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.OBLB));
+    private static ArrayList<S57subf> S57ddsc = new ArrayList<>(Arrays.asList(S57subf.ATLB, S57subf.ASET, S57subf.AUTH));
+    private static ArrayList<S57subf> S57frid = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.PRIM, S57subf.GRUP, S57subf.OBJL, S57subf.RVER, S57subf.RUIN));
+    private static ArrayList<S57subf> S57foid = new ArrayList<>(Arrays.asList(S57subf.AGEN, S57subf.FIDN, S57subf.FIDS));
+    private static ArrayList<S57subf> S57lnam = new ArrayList<>(Arrays.asList(S57subf.LNAM));
+    private static ArrayList<S57subf> S57attf = new ArrayList<>(Arrays.asList(S57subf.ATTL, S57subf.ATVL));
+    private static ArrayList<S57subf> S57natf = new ArrayList<>(Arrays.asList(S57subf.ATTL, S57subf.ATVL));
+    private static ArrayList<S57subf> S57ffpc = new ArrayList<>(Arrays.asList(S57subf.FFUI, S57subf.FFIX, S57subf.NFPT));
+    private static ArrayList<S57subf> S57ffpt = new ArrayList<>(Arrays.asList(S57subf.LNAM, S57subf.RIND, S57subf.COMT));
+    private static ArrayList<S57subf> S57fspc = new ArrayList<>(Arrays.asList(S57subf.FSUI, S57subf.FSIX, S57subf.NSPT));
+    private static ArrayList<S57subf> S57fspt = new ArrayList<>(Arrays.asList(S57subf.NAME, S57subf.ORNT, S57subf.USAG, S57subf.MASK));
+    private static ArrayList<S57subf> S57vrid = new ArrayList<>(Arrays.asList(S57subf.RCNM, S57subf.RCID, S57subf.RVER, S57subf.RUIN));
+    private static ArrayList<S57subf> S57attv = new ArrayList<>(Arrays.asList(S57subf.ATTL, S57subf.ATVL));
+    private static ArrayList<S57subf> S57vrpc = new ArrayList<>(Arrays.asList(S57subf.VPUI, S57subf.VPIX, S57subf.NVPT));
+    private static ArrayList<S57subf> S57vrpt = new ArrayList<>(Arrays.asList(S57subf.NAME, S57subf.ORNT, S57subf.USAG, S57subf.TOPI, S57subf.MASK));
+    private static ArrayList<S57subf> S57sgcc = new ArrayList<>(Arrays.asList(S57subf.CCUI, S57subf.CCIX, S57subf.CCNC));
+    private static ArrayList<S57subf> S57sg2d = new ArrayList<>(Arrays.asList(S57subf.YCOO, S57subf.XCOO));
+    private static ArrayList<S57subf> S57sg3d = new ArrayList<>(Arrays.asList(S57subf.YCOO, S57subf.XCOO, S57subf.VE3D));
+    private static ArrayList<S57subf> S57arcc = new ArrayList<>(Arrays.asList(S57subf.ATYP, S57subf.SURF, S57subf.ORDR, S57subf.RESO, S57subf.FPMF));
+    private static ArrayList<S57subf> S57ar2d = new ArrayList<>(Arrays.asList(S57subf.STPT, S57subf.CTPT, S57subf.ENPT, S57subf.YCOO, S57subf.XCOO));
+    private static ArrayList<S57subf> S57el2d = new ArrayList<>(Arrays.asList(S57subf.STPT, S57subf.CTPT, S57subf.ENPT, S57subf.CDPM, S57subf.CDPR, S57subf.YCOO, S57subf.XCOO));
+    private static ArrayList<S57subf> S57ct2d = new ArrayList<>(Arrays.asList(S57subf.YCOO, S57subf.XCOO));
+
+    private static final EnumMap<S57field, ArrayList<S57subf>> fields = new EnumMap<>(S57field.class);
+    static {
+        fields.put(S57field.I8RI, S57i8ri);
+        fields.put(S57field.DSID, S57dsid); fields.put(S57field.DSSI, S57dssi); fields.put(S57field.DSPM, S57dspm); fields.put(S57field.DSPR, S57dspr);
+        fields.put(S57field.DSRC, S57dsrc); fields.put(S57field.DSHT, S57dsht); fields.put(S57field.DSAC, S57dsac); fields.put(S57field.CATD, S57catd);
+        fields.put(S57field.CATX, S57catx); fields.put(S57field.DDDF, S57dddf); fields.put(S57field.DDDR, S57dddr); fields.put(S57field.DDDI, S57dddi);
+        fields.put(S57field.DDOM, S57ddom); fields.put(S57field.DDRF, S57ddrf); fields.put(S57field.DDSI, S57ddsi); fields.put(S57field.DDSC, S57ddsc);
+        fields.put(S57field.FRID, S57frid); fields.put(S57field.FOID, S57foid); fields.put(S57field.LNAM, S57lnam); fields.put(S57field.ATTF, S57attf);
+        fields.put(S57field.NATF, S57natf); fields.put(S57field.FFPC, S57ffpc); fields.put(S57field.FFPT, S57ffpt); fields.put(S57field.FFPC, S57fspc);
+        fields.put(S57field.FSPT, S57fspt); fields.put(S57field.VRID, S57vrid); fields.put(S57field.ATTV, S57attv); fields.put(S57field.VRPC, S57vrpc);
+        fields.put(S57field.VRPT, S57vrpt); fields.put(S57field.SGCC, S57sgcc); fields.put(S57field.SG2D, S57sg2d); fields.put(S57field.SG3D, S57sg3d);
+        fields.put(S57field.ARCC, S57arcc); fields.put(S57field.AR2D, S57ar2d); fields.put(S57field.EL2D, S57el2d); fields.put(S57field.CT2D, S57ct2d);
+    }
+
+    private static byte[] leader = {'0', '0', '0', '0', '0', ' ', 'D', ' ', ' ', ' ', ' ', ' ', '0', '0', '0', '0', '0', ' ', ' ', ' ', '0', '0', '0', '4'};
+    private static byte[] buffer;
+    private static int offset;
+    private static int maxoff;
+    private static int index;
+    private static S57field field;
+    private static String aall = "US-ASCII";
+    private static String nall = "US-ASCII";
+    public static int rnum;
+
+    private static S57conv findSubf(S57subf subf) {
+        ArrayList<S57subf> subs = fields.get(field);
+        boolean wrap = false;
+        while (true) {
+            if (index == subs.size()) {
+                if (!wrap) {
+                    index = 0;
+                    wrap = true;
+                } else {
+                    System.out.println("ERROR: Subfield not found " + subf.name() + " in " + field.name() + " in record " + rnum);
+                    System.exit(-1);
+                }
+            }
+            S57subf sub = subs.get(index++);
+            S57conv conv = convs.get(sub);
+            if (sub == subf) {
+                return conv;
+            } else {
+                offset += (conv.bin != 0) ? ((conv.bin < 8) ? Math.abs(conv.bin) : conv.bin / 8) : conv.asc;
+            }
+        }
+    }
+
+    public static void setField(byte[] buf, int off, S57field fld, int len) {
+        buffer = buf;
+        offset = off;
+        maxoff = off + len - 1;
+        field = fld;
+        index = 0;
+    }
+
+    public static boolean more() {
+        return (offset < maxoff);
+    }
+
+    public static Object decSubf(byte[] buf, int off, S57field fld, S57subf subf) {
+        buffer = buf;
+        offset = off;
+        index = 0;
+        return decSubf(fld, subf);
+    }
+
+    public static Object decSubf(S57field fld, S57subf subf) {
+        field = fld;
+        index = 0;
+        return decSubf(subf);
+    }
+
+    public static Object decSubf(S57subf subf) {
+        S57conv conv = findSubf(subf);
+        if (conv.bin == 0) {
+            String str = "";
+            int i = 0;
+            if (conv.asc == 0) {
+                for (i = 0; buffer[offset+i] != 0x1f; i++) { }
+                try {
+                    String charset = "";
+                    if (field == S57field.ATTF) charset = aall;
+                    else if (field == S57field.NATF) charset = nall;
+                    else charset = "US-ASCII";
+                    str = new String(buffer, offset, i, charset);
+                } catch (UnsupportedEncodingException e) {
+                    System.err.println(e.getMessage());
+                    System.exit(-1);
+                }
+                offset += i + 1;
+            } else {
+                str = new String(buffer, offset, conv.asc);
+                offset += conv.asc;
+            }
+            return str;
+        } else {
+            int f = Math.abs(conv.bin);
+            if (f < 5) {
+                long val = buffer[offset + --f];
+                if (conv.bin > 0)
+                    val &= 0xff;
+                while (f > 0) {
+                    val = (val << 8) + (buffer[offset + --f] & 0xff);
+                }
+                offset += Math.abs(conv.bin);
+                if ((subf == S57subf.AALL) || (subf == S57subf.NALL)) {
+                    String charset = "";
+                    switch ((int) val) {
+                    case 0:
+                        charset = "US-ASCII";
+                        break;
+                    case 1:
+                        charset = "ISO-8859-1";
+                        break;
+                    case 2:
+                        charset = "UTF-16LE";
+                        break;
+                    }
+                    if (subf == S57subf.NALL) {
+                        nall = charset;
+                    } else {
+                        aall = charset;
+                    }
+                }
+                return val;
+            } else {
+                if (f == 5) {
+                    long val = buffer[offset++] & 0xff;
+                    f--;
+                    while (f > 0) {
+                        val = (val << 8) + (buffer[offset + --f] & 0xff);
+                    }
+                    offset += 4;
+                    return val;
+                } else {
+                    long val = buffer[offset++] & 0xff;
+                    val = (val << 8) + (buffer[offset++] & 0xff);
+                    f = 4;
+                    while (f > 0) {
+                        val = (val << 8) + (buffer[offset + --f] & 0xff);
+                    }
+                    offset += 4;
+                    f = 2;
+                    while (f > 0) {
+                        val = (val << 8) + (buffer[offset + --f] & 0xff);
+                    }
+                    offset += 2;
+                    return val;
+                }
+            }
+        }
+    }
+
+    public static byte[] encSubf(S57subf subf, Object val) {
+        S57conv conv = convs.get(subf);
+        if ((conv.bin == 0) || asc) {
+            String sval = "";
+            if (val instanceof String) {
+                sval = (String) val;
+            } else if (val instanceof Integer) {
+                sval = ((Integer) val).toString();
+            } else if (val instanceof Long) {
+                sval = ((Long) val).toString();
+            } else if (val instanceof Double) {
+                sval = ((Double) val).toString();
+            }
+            index = sval.length();
+            try {
+                buffer = (sval + " ").getBytes("ISO-8859-1");
+            } catch (Exception e) {
+                System.err.println(e.getMessage());
+                System.exit(-1);
+            }
+            if (conv.asc == 0) {
+                buffer[index] = 0x01f;
+            } else {
+                buffer = Arrays.copyOf(buffer, conv.asc);
+                while (index < buffer.length) {
+                    buffer[index++] = ' ';
+                }
+            }
+        } else {
+            int f = Math.abs(conv.bin);
+            long lval;
+            if (val instanceof String) {
+                lval = Long.parseLong((String) val);
+            } else if (val instanceof Double) {
+                double dval = (double) val;
+                lval = (long) dval;
+            } else if (val instanceof Integer) {
+                lval = (int) val;
+            } else {
+                lval = (long) val;
+            }
+            buffer = new byte[f];
+            for (int i = 0; i < f; i++) {
+                buffer[i] = (byte) (lval & 0xff);
+                lval >>= 8;
+            }
+        }
+        return buffer;
+    }
+
+    static class Index {
+        byte[] field;
+        int length;
+        int offset;
+        Index(byte[] id, int l, int o) {
+            field = id;
+            length = l;
+            offset = o;
+        }
+    }
+
+    public static class Fparams {
+        public S57field field;
+        public Object[] params;
+        public Fparams(S57field f, Object[] p) {
+            field = f;
+            params = p;
+        }
+    }
+
+    static boolean asc = false;
+
+    public static byte[] encRecord(String i8rn, ArrayList<Fparams> fparams) {
+        asc = true;
+        return encRecord(Integer.parseInt(i8rn), fparams);
+    }
+
+    public static byte[] encRecord(int i8rn, ArrayList<Fparams> fparams) {
+        ArrayList<Index> index = new ArrayList<>();
+        int offset = 3;
+        int maxlen = 3;
+        byte[] buf = encSubf(S57subf.I8RN, i8rn);
+        buf = Arrays.copyOf(buf, 3);
+        buf[2] = 0x1e;
+        index.add(new Index("0001".getBytes(), 3, 0));
+        for (Fparams sfparams : fparams) {
+            for (int ip = 0; ip < sfparams.params.length;) {
+                for (S57subf subf : fields.get(sfparams.field)) {
+                    byte[] next = encSubf(subf, sfparams.params[ip++]);
+                    buf = Arrays.copyOf(buf, (buf.length + next.length));
+                    System.arraycopy(next, 0, buf, (buf.length - next.length), next.length);
+                }
+            }
+            buf = Arrays.copyOf(buf, (buf.length + 1));
+            buf[buf.length-1] = 0x1e;
+            int flen = buf.length - offset;
+            index.add(new Index(sfparams.field.toString().getBytes(StandardCharsets.UTF_8), flen, offset));
+            maxlen = (flen > maxlen) ? flen : maxlen;
+            offset += flen;
+        }
+        int mlen = String.valueOf(maxlen).length();
+        String ffmt = "%0" + mlen + "d";
+        int olen = String.valueOf(offset).length();
+        String ofmt = "%0" + olen + "d";
+        int ilen = 4 + mlen + olen;
+        int isiz = (ilen * index.size()) + 1;
+        byte[] ibuf = new byte[isiz];
+        int i = 0;
+        for (Index item : index) {
+            for (byte ch : item.field) {
+                ibuf[i++] = ch;
+            }
+            byte[] digits = String.format(ffmt, item.length).getBytes();
+            for (byte ch : digits) {
+                ibuf[i++] = ch;
+            }
+            digits = String.format(ofmt, item.offset).getBytes();
+            for (byte ch : digits) {
+                ibuf[i++] = ch;
+            }
+        }
+        ibuf[i] = 0x1e;
+        byte[] fbuf = Arrays.copyOf(leader, (leader.length + ibuf.length + buf.length));
+        System.arraycopy(ibuf, 0, fbuf, leader.length, ibuf.length);
+        System.arraycopy(buf, 0, fbuf, (leader.length + ibuf.length), buf.length);
+        fbuf[20] = (byte) (mlen + 0x30);
+        fbuf[21] = (byte) (olen + 0x30);
+        System.arraycopy(String.format("%05d", fbuf.length).getBytes(), 0, fbuf, 0, 5);
+        System.arraycopy(String.format("%05d", (leader.length + ibuf.length)).getBytes(), 0, fbuf, 12, 5);
+        asc = false;
+        return fbuf;
+    }
+
+    enum Prims { N, P, L, A, PA, PL, LA, PLA }
+
+    private static final EnumMap<Obj, Prims> S57prims = new EnumMap<>(Obj.class);
+    static {
+        S57prims.put(Obj.UNKOBJ, Prims.PLA); S57prims.put(Obj.M_COVR, Prims.A); S57prims.put(Obj.M_NSYS, Prims.A); S57prims.put(Obj.AIRARE, Prims.PA);
+        S57prims.put(Obj.ACHBRT, Prims.PA); S57prims.put(Obj.ACHARE, Prims.PA); S57prims.put(Obj.BCNCAR, Prims.P); S57prims.put(Obj.BCNISD, Prims.P);
+        S57prims.put(Obj.BCNLAT, Prims.P); S57prims.put(Obj.BCNSAW, Prims.P); S57prims.put(Obj.BCNSPP, Prims.P); S57prims.put(Obj.BERTHS, Prims.PLA);
+        S57prims.put(Obj.BRIDGE, Prims.PLA); S57prims.put(Obj.BUISGL, Prims.PA); S57prims.put(Obj.BUAARE, Prims.PA); S57prims.put(Obj.BOYCAR, Prims.P);
+        S57prims.put(Obj.BOYINB, Prims.P); S57prims.put(Obj.BOYISD, Prims.P); S57prims.put(Obj.BOYLAT, Prims.P); S57prims.put(Obj.BOYSAW, Prims.P);
+        S57prims.put(Obj.BOYSPP, Prims.P); S57prims.put(Obj.CBLARE, Prims.A); S57prims.put(Obj.CBLOHD, Prims.L); S57prims.put(Obj.CBLSUB, Prims.L);
+        S57prims.put(Obj.CANALS, Prims.A); S57prims.put(Obj.CTSARE, Prims.PA); S57prims.put(Obj.CAUSWY, Prims.LA); S57prims.put(Obj.CTNARE, Prims.PA);
+        S57prims.put(Obj.CHKPNT, Prims.PA); S57prims.put(Obj.CGUSTA, Prims.P); S57prims.put(Obj.COALNE, Prims.L); S57prims.put(Obj.CONZNE, Prims.A);
+        S57prims.put(Obj.COSARE, Prims.A); S57prims.put(Obj.CTRPNT, Prims.P); S57prims.put(Obj.CONVYR, Prims.LA); S57prims.put(Obj.CRANES, Prims.PA);
+        S57prims.put(Obj.CURENT, Prims.P); S57prims.put(Obj.CUSZNE, Prims.A); S57prims.put(Obj.DAMCON, Prims.LA); S57prims.put(Obj.DAYMAR, Prims.P);
+        S57prims.put(Obj.DWRTCL, Prims.L); S57prims.put(Obj.DWRTPT, Prims.A); S57prims.put(Obj.DEPARE, Prims.A); S57prims.put(Obj.DEPCNT, Prims.L);
+        S57prims.put(Obj.DISMAR, Prims.P); S57prims.put(Obj.DOCARE, Prims.A); S57prims.put(Obj.DRGARE, Prims.A); S57prims.put(Obj.DRYDOC, Prims.A);
+        S57prims.put(Obj.DMPGRD, Prims.PA); S57prims.put(Obj.DYKCON, Prims.L); S57prims.put(Obj.EXEZNE, Prims.A); S57prims.put(Obj.FAIRWY, Prims.A);
+        S57prims.put(Obj.FNCLNE, Prims.L); S57prims.put(Obj.FERYRT, Prims.LA); S57prims.put(Obj.FSHZNE, Prims.A); S57prims.put(Obj.FSHFAC, Prims.PLA);
+        S57prims.put(Obj.FSHGRD, Prims.A); S57prims.put(Obj.FLODOC, Prims.A); S57prims.put(Obj.FOGSIG, Prims.P); S57prims.put(Obj.FORSTC, Prims.PLA);
+        S57prims.put(Obj.FRPARE, Prims.A); S57prims.put(Obj.GATCON, Prims.PLA); S57prims.put(Obj.GRIDRN, Prims.PA); S57prims.put(Obj.HRBARE, Prims.A);
+        S57prims.put(Obj.HRBFAC, Prims.PA); S57prims.put(Obj.HULKES, Prims.PA); S57prims.put(Obj.ICEARE, Prims.A); S57prims.put(Obj.ICNARE, Prims.PA);
+        S57prims.put(Obj.ISTZNE, Prims.A); S57prims.put(Obj.LAKARE, Prims.A); S57prims.put(Obj.LNDARE, Prims.PLA); S57prims.put(Obj.LNDELV, Prims.PL);
+        S57prims.put(Obj.LNDRGN, Prims.PA); S57prims.put(Obj.LNDMRK, Prims.PLA); S57prims.put(Obj.LIGHTS, Prims.P); S57prims.put(Obj.LITFLT, Prims.P);
+        S57prims.put(Obj.LITVES, Prims.P); S57prims.put(Obj.LOCMAG, Prims.PLA); S57prims.put(Obj.LOKBSN, Prims.A); S57prims.put(Obj.LOGPON, Prims.PA);
+        S57prims.put(Obj.MAGVAR, Prims.PLA); S57prims.put(Obj.MARCUL, Prims.PLA); S57prims.put(Obj.MIPARE, Prims.PA); S57prims.put(Obj.MORFAC, Prims.PLA);
+        S57prims.put(Obj.MPAARE, Prims.PA); S57prims.put(Obj.NAVLNE, Prims.L); S57prims.put(Obj.OBSTRN, Prims.PLA); S57prims.put(Obj.OFSPLF, Prims.PA);
+        S57prims.put(Obj.OSPARE, Prims.A); S57prims.put(Obj.OILBAR, Prims.L); S57prims.put(Obj.PILPNT, Prims.P); S57prims.put(Obj.PILBOP, Prims.PA);
+        S57prims.put(Obj.PIPARE, Prims.PA); S57prims.put(Obj.PIPOHD, Prims.L); S57prims.put(Obj.PIPSOL, Prims.PL); S57prims.put(Obj.PONTON, Prims.LA);
+        S57prims.put(Obj.PRCARE, Prims.PA); S57prims.put(Obj.PRDARE, Prims.PA); S57prims.put(Obj.PYLONS, Prims.PA); S57prims.put(Obj.RADLNE, Prims.L);
+        S57prims.put(Obj.RADRNG, Prims.A); S57prims.put(Obj.RADRFL, Prims.P); S57prims.put(Obj.RADSTA, Prims.P); S57prims.put(Obj.RTPBCN, Prims.P);
+        S57prims.put(Obj.RDOCAL, Prims.PL); S57prims.put(Obj.RDOSTA, Prims.P); S57prims.put(Obj.RAILWY, Prims.L); S57prims.put(Obj.RAPIDS, Prims.PLA);
+        S57prims.put(Obj.RCRTCL, Prims.L); S57prims.put(Obj.RECTRC, Prims.LA); S57prims.put(Obj.RCTLPT, Prims.PA); S57prims.put(Obj.RSCSTA, Prims.P);
+        S57prims.put(Obj.RESARE, Prims.A); S57prims.put(Obj.RETRFL, Prims.P); S57prims.put(Obj.RIVERS, Prims.LA); S57prims.put(Obj.ROADWY, Prims.PLA);
+        S57prims.put(Obj.RUNWAY, Prims.PLA); S57prims.put(Obj.SNDWAV, Prims.PLA); S57prims.put(Obj.SEAARE, Prims.PA); S57prims.put(Obj.SPLARE, Prims.PA);
+        S57prims.put(Obj.SBDARE, Prims.PLA); S57prims.put(Obj.SLCONS, Prims.PLA); S57prims.put(Obj.SISTAT, Prims.P); S57prims.put(Obj.SISTAW, Prims.P);
+        S57prims.put(Obj.SILTNK, Prims.PA); S57prims.put(Obj.SLOTOP, Prims.L); S57prims.put(Obj.SLOGRD, Prims.PA); S57prims.put(Obj.SMCFAC, Prims.PA);
+        S57prims.put(Obj.SOUNDG, Prims.P); S57prims.put(Obj.SPRING, Prims.P); S57prims.put(Obj.STSLNE, Prims.L); S57prims.put(Obj.SUBTLN, Prims.A);
+        S57prims.put(Obj.SWPARE, Prims.A); S57prims.put(Obj.TESARE, Prims.A); S57prims.put(Obj.TS_PRH, Prims.PA); S57prims.put(Obj.TS_PNH, Prims.PA);
+        S57prims.put(Obj.TS_PAD, Prims.PA); S57prims.put(Obj.TS_TIS, Prims.PA); S57prims.put(Obj.T_HMON, Prims.PA); S57prims.put(Obj.T_NHMN, Prims.PA);
+        S57prims.put(Obj.T_TIMS, Prims.PA); S57prims.put(Obj.TIDEWY, Prims.LA); S57prims.put(Obj.TOPMAR, Prims.P); S57prims.put(Obj.TSELNE, Prims.LA);
+        S57prims.put(Obj.TSSBND, Prims.L); S57prims.put(Obj.TSSCRS, Prims.A); S57prims.put(Obj.TSSLPT, Prims.A); S57prims.put(Obj.TSSRON, Prims.A);
+        S57prims.put(Obj.TSEZNE, Prims.A); S57prims.put(Obj.TUNNEL, Prims.LA); S57prims.put(Obj.TWRTPT, Prims.A); S57prims.put(Obj.UWTROC, Prims.P);
+        S57prims.put(Obj.UNSARE, Prims.A); S57prims.put(Obj.VEGATN, Prims.PLA); S57prims.put(Obj.WATTUR, Prims.PLA); S57prims.put(Obj.WATFAL, Prims.PL);
+        S57prims.put(Obj.WEDKLP, Prims.PA); S57prims.put(Obj.WRECKS, Prims.PA); S57prims.put(Obj.TS_FEB, Prims.PA);
+        S57prims.put(Obj.NOTMRK, Prims.P); S57prims.put(Obj.WTWAXS, Prims.L); S57prims.put(Obj.WTWPRF, Prims.L); S57prims.put(Obj.BUNSTA, Prims.PA);
+        S57prims.put(Obj.COMARE, Prims.A); S57prims.put(Obj.HRBBSN, Prims.A); S57prims.put(Obj.LKBSPT, Prims.A); S57prims.put(Obj.PRTARE, Prims.A);
+        S57prims.put(Obj.REFDMP, Prims.P); S57prims.put(Obj.TERMNL, Prims.PA); S57prims.put(Obj.TRNBSN, Prims.PA); S57prims.put(Obj.WTWARE, Prims.A);
+        S57prims.put(Obj.WTWGAG, Prims.PA); S57prims.put(Obj.TISDGE, Prims.N); S57prims.put(Obj.VEHTRF, Prims.PA); S57prims.put(Obj.EXCNST, Prims.PA);
+        S57prims.put(Obj.LG_SDM, Prims.A); S57prims.put(Obj.LG_VSP, Prims.A); S57prims.put(Obj.LITMAJ, Prims.P); S57prims.put(Obj.LITMIN, Prims.P);
+    }
+
+    public static void S57geoms(S57map map) {
+        for (ArrayList<Feature> list : map.features.values()) {
+            for (Feature feature : list) {
+                switch (S57prims.get(feature.type)) {
+                case N:
+                    break;
+                case P:
+                    if (feature.geom.prim != Pflag.POINT) {
+                        //                        Snode node = feature.geom.centre;
+                        //                        node.flg = Nflag.ISOL;
+                        //                        map.nodes.put(++map.xref, node);
+                        //                        feature.geom = map.new Geom(Pflag.POINT);
+                        //                        feature.geom.centre = node;
+                        //                        feature.geom.elems.add(map.new Prim(map.xref));
+                    }
+                    break;
+                case L:
+                    break;
+                case A:
+                    break;
+                case PA:
+                    break;
+                case PL:
+                    break;
+                case LA:
+                    if (feature.geom.prim == Pflag.POINT) {
+                        //                        list.remove(feature);
+                    }
+                    break;
+                case PLA:
+                    // No changes needed
+                    break;
+                }
+            }
+        }
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57dec.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57dec.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57dec.java	(revision 36424)
@@ -0,0 +1,213 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import s57.S57dat.S57field;
+import s57.S57dat.S57subf;
+import s57.S57map.Nflag;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class S57dec { // S57 ENC file input & map conversion
+    private S57dec() {
+        // Hide default constructor for utilities classes
+    }
+    // CHECKSTYLE.OFF: LineLength
+
+    public static void decodeChart(FileInputStream in, S57map map) throws IOException {
+        S57dat.rnum = 0;
+        byte[] leader = new byte[24];
+        byte[] record = new byte[0];
+        boolean ddr = false;
+        int length = 0;
+        int fields = 0;;
+        int mapfl, mapfp, mapts, entry;
+        String tag;
+        int len;
+        int pos;
+        boolean inFeature = false;
+
+        double comf = 1;
+        double somf = 1;
+        long name = 0;
+        S57map.Nflag nflag = Nflag.ANON;
+        S57map.Pflag pflag = S57map.Pflag.NOSP;
+        long objl = 0;
+
+        while (in.read(leader) == 24) {
+            try {
+                length = Integer.parseInt(new String(leader, 0, 5)) - 24;
+                record = new byte[length];
+                ddr = (leader[6] == 'L');
+                fields = Integer.parseInt(new String(leader, 12, 5)) - 24;
+            } catch (Exception e) {
+                System.err.println("Invalid file format - Encrypted/compressed ENC file?");
+                System.exit(-1);
+            }
+            mapfl = leader[20] - '0';
+            mapfp = leader[21] - '0';
+            mapts = leader[23] - '0';
+            entry = mapfl + mapfp + mapts;
+            if (in.read(record) != length)
+                break;
+            for (int idx = 0; idx < fields-1; idx += entry) {
+                tag = new String(record, idx, mapts);
+                len = Integer.parseInt(new String(record, idx+mapts, mapfl));
+                pos = Integer.parseInt(new String(record, idx+mapts+mapfl, mapfp));
+                if (!ddr) {
+                    switch (tag.toString()) {
+                    case "0001":
+                        int i8rn = ((Long) S57dat.decSubf(record, fields + pos, S57field.I8RI, S57subf.I8RN)).intValue();
+                        //                        if (i8rn != ++S57dat.rnum) {
+                        //                            System.err.println("Out of order record ID");
+                        //                            in.close();
+                        //                            System.exit(-1);
+                        //                        }
+                        break;
+                    case "DSSI":
+                        S57dat.decSubf(record, fields + pos, S57field.DSSI, S57subf.AALL);
+                        S57dat.decSubf(S57subf.NALL);
+                        break;
+                    case "DSPM":
+                        comf = (Long) S57dat.decSubf(record, fields + pos, S57field.DSPM, S57subf.COMF);
+                        somf = (Long) S57dat.decSubf(S57subf.SOMF);
+                        break;
+                    case "FRID":
+                        inFeature = true;
+                        switch (((Long) S57dat.decSubf(record, fields + pos, S57field.FRID, S57subf.PRIM)).intValue()) {
+                        case 1:
+                            pflag = S57map.Pflag.POINT;
+                            break;
+                        case 2:
+                            pflag = S57map.Pflag.LINE;
+                            break;
+                        case 3:
+                            pflag = S57map.Pflag.AREA;
+                            break;
+                        default:
+                            pflag = S57map.Pflag.NOSP;
+                        }
+                        objl = (Long) S57dat.decSubf(S57subf.OBJL);
+                        break;
+                    case "FOID":
+                        name = (long) S57dat.decSubf(record, fields + pos, S57field.LNAM, S57subf.LNAM);
+                        map.newFeature(name, pflag, objl);
+                        break;
+                    case "ATTF":
+                        S57dat.setField(record, fields + pos, S57field.ATTF, len);
+                        do {
+                            long attl = (Long) S57dat.decSubf(S57subf.ATTL);
+                            String atvl = ((String) S57dat.decSubf(S57subf.ATVL)).trim();
+                            if (!atvl.isEmpty()) {
+                                map.newAtt(attl, atvl);
+                            }
+                        } while (S57dat.more());
+                        break;
+                    case "FFPT":
+                        S57dat.setField(record, fields + pos, S57field.FFPT, len);
+                        do {
+                            name = (long) S57dat.decSubf(S57subf.LNAM);
+                            int rind = ((Long) S57dat.decSubf(S57subf.RIND)).intValue();
+                            S57dat.decSubf(S57subf.COMT);
+                            map.refObj(name, rind);
+                        } while (S57dat.more());
+                        break;
+                    case "FSPT":
+                        S57dat.setField(record, fields + pos, S57field.FSPT, len);
+                        do {
+                            name = (long) S57dat.decSubf(S57subf.NAME) << 16;
+                            map.newPrim(name, (Long) S57dat.decSubf(S57subf.ORNT), (Long) S57dat.decSubf(S57subf.USAG));
+                            S57dat.decSubf(S57subf.MASK);
+                        } while (S57dat.more());
+                        break;
+                    case "VRID":
+                        inFeature = false;
+                        name = (Long) S57dat.decSubf(record, fields + pos, S57field.VRID, S57subf.RCNM);
+                        switch ((int) name) {
+                        case 110:
+                            nflag = Nflag.ISOL;
+                            break;
+                        case 120:
+                            nflag = Nflag.CONN;
+                            break;
+                        default:
+                            nflag = Nflag.ANON;
+                            break;
+                        }
+                        name <<= 32;
+                        name += (long) S57dat.decSubf(S57subf.RCID);
+                        name <<= 16;
+                        if (nflag == Nflag.ANON) {
+                            map.newEdge(name);
+                        }
+                        break;
+                    case "VRPT":
+                        S57dat.setField(record, fields + pos, S57field.VRPT, len);
+                        do {
+                            long conn = (Long) S57dat.decSubf(S57subf.NAME) << 16;
+                            int topi = ((Long) S57dat.decSubf(S57subf.TOPI)).intValue();
+                            map.addConn(conn, topi);
+                            S57dat.decSubf(S57subf.MASK);
+                        } while (S57dat.more());
+                        break;
+                    case "SG2D":
+                        S57dat.setField(record, fields + pos, S57field.SG2D, len);
+                        do {
+                            double lat = (double) ((Long) S57dat.decSubf(S57subf.YCOO)) / comf;
+                            double lon = (double) ((Long) S57dat.decSubf(S57subf.XCOO)) / comf;
+                            if (nflag == Nflag.ANON) {
+                                map.newNode(++name, lat, lon, nflag);
+                            } else {
+                                map.newNode(name, lat, lon, nflag);
+                            }
+                            lat = Math.toRadians(lat);
+                            lon = Math.toRadians(lon);
+                            if (lat < map.bounds.minlat)
+                                map.bounds.minlat = lat;
+                            if (lat > map.bounds.maxlat)
+                                map.bounds.maxlat = lat;
+                            if (lon < map.bounds.minlon)
+                                map.bounds.minlon = lon;
+                            if (lon > map.bounds.maxlon)
+                                map.bounds.maxlon = lon;
+                        } while (S57dat.more());
+                        break;
+                    case "SG3D":
+                        S57dat.setField(record, fields + pos, S57field.SG3D, len);
+                        do {
+                            double lat = (double) ((Long) S57dat.decSubf(S57subf.YCOO)) / comf;
+                            double lon = (double) ((Long) S57dat.decSubf(S57subf.XCOO)) / comf;
+                            double depth = (double) ((Long) S57dat.decSubf(S57subf.VE3D)) / somf;
+                            map.newNode(name++, lat, lon, depth);
+                            lat = Math.toRadians(lat);
+                            lon = Math.toRadians(lon);
+                            if (lat < map.bounds.minlat)
+                                map.bounds.minlat = lat;
+                            if (lat > map.bounds.maxlat)
+                                map.bounds.maxlat = lat;
+                            if (lon < map.bounds.minlon)
+                                map.bounds.minlon = lon;
+                            if (lon > map.bounds.maxlon)
+                                map.bounds.maxlon = lon;
+                        } while (S57dat.more());
+                        break;
+                    default:
+                        break;
+                    }
+                }
+                if (inFeature) {
+                    map.endFeature();
+                    inFeature = false;
+                }
+            }
+        }
+        map.endFile();
+        in.close();
+
+        return;
+    }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57enc.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57enc.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57enc.java	(revision 36424)
@@ -0,0 +1,388 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.zip.CRC32;
+
+import s57.S57att.Att;
+import s57.S57dat.Fparams;
+import s57.S57dat.S57field;
+import s57.S57map.AttMap;
+import s57.S57map.Feature;
+import s57.S57map.Nflag;
+import s57.S57map.ObjTab;
+import s57.S57map.Pflag;
+import s57.S57map.Prim;
+import s57.S57obj.Obj;
+import s57.S57val.AttVal;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class S57enc { // S57 ENC file generation
+    private S57enc() {
+        // Hide default constructor for utilities classes
+    }
+    // CHECKSTYLE.OFF: LineLength
+
+    private static final byte[] header = {
+
+            '0', '1', '5', '7', '6', '3', 'L', 'E', '1', ' ', '0', '9', '0', '0', '2', '0', '1', ' ', '!', ' ', '3', '4', '0', '4', // Leader
+            '0', '0', '0', '0', '1', '2', '3', '0', '0', '0', '0', '0', '0', '0', '1', '0', '4', '7', '0', '1', '2', '3',
+            'D', 'S', 'I', 'D', '1', '5', '9', '0', '1', '7', '0', 'D', 'S', 'S', 'I', '1', '1', '3', '0', '3', '2', '9',
+            'D', 'S', 'P', 'M', '1', '3', '0', '0', '4', '4', '2', 'F', 'R', 'I', 'D', '1', '0', '0', '0', '5', '7', '2',
+            'F', 'O', 'I', 'D', '0', '7', '0', '0', '6', '7', '2', 'A', 'T', 'T', 'F', '0', '5', '9', '0', '7', '4', '2',
+            'N', 'A', 'T', 'F', '0', '6', '8', '0', '8', '0', '1', 'F', 'F', 'P', 'T', '0', '8', '6', '0', '8', '6', '9',
+            'F', 'S', 'P', 'T', '0', '9', '0', '0', '9', '5', '5', 'V', 'R', 'I', 'D', '0', '7', '8', '1', '0', '4', '5',
+            'A', 'T', 'T', 'V', '0', '5', '8', '1', '1', '2', '3', 'V', 'R', 'P', 'T', '0', '7', '6', '1', '1', '8', '1',
+            'S', 'G', '2', 'D', '0', '4', '8', '1', '2', '5', '7', 'S', 'G', '3', 'D', '0', '7', '0', '1', '3', '0', '5', 0x1e,
+            // File control field
+            '0', '0', '0', '0', ';', '&', ' ', ' ', ' ', 0x1f,
+            '0', '0', '0', '1', 'D', 'S', 'I', 'D', 'D', 'S', 'I', 'D', 'D', 'S', 'S', 'I', '0', '0', '0', '1', 'D', 'S', 'P', 'M',
+            '0', '0', '0', '1', 'F', 'R', 'I', 'D', 'F', 'R', 'I', 'D', 'F', 'O', 'I', 'D', 'F', 'R', 'I', 'D', 'A', 'T', 'T', 'F',
+            'F', 'R', 'I', 'D', 'N', 'A', 'T', 'F', 'F', 'R', 'I', 'D', 'F', 'F', 'P', 'T', 'F', 'R', 'I', 'D', 'F', 'S', 'P', 'T',
+            '0', '0', '0', '1', 'V', 'R', 'I', 'D', 'V', 'R', 'I', 'D', 'A', 'T', 'T', 'V', 'V', 'R', 'I', 'D', 'V', 'R', 'P', 'T',
+            'V', 'R', 'I', 'D', 'S', 'G', '2', 'D', 'V', 'R', 'I', 'D', 'S', 'G', '3', 'D', 0x1e,
+            // Record identifier fields
+            '0', '5', '0', '0', ';', '&', ' ', ' ', ' ', 'I', 'S', 'O', '/', 'I', 'E', 'C', ' ', '8', '2', '1', '1', ' ',
+            'R', 'e', 'c', 'o', 'r', 'd', ' ', 'I', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', 0x1f, 0x1f, '(', 'b', '1', '2', ')', 0x1e,
+            '1', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'D', 'a', 't', 'a', ' ', 'S', 'e', 't', ' ', 'I', 'd', 'e', 'n', 't', 'i',
+            'f', 'i', 'c', 'a', 't', 'i', 'o', 'n', 0x1f, 'R', 'C', 'N', 'M', '!', 'R', 'C', 'I', 'D', '!', 'E', 'X', 'P', 'P', '!',
+            'I', 'N', 'T', 'U', '!', 'D', 'S', 'N', 'M', '!', 'E', 'D', 'T', 'N', '!', 'U', 'P', 'D', 'N', '!', 'U', 'A', 'D', 'T',
+            '!', 'I', 'S', 'D', 'T', '!', 'S', 'T', 'E', 'D', '!', 'P', 'R', 'S', 'P', '!', 'P', 'S', 'D', 'N', '!', 'P', 'R', 'E',
+            'D', '!', 'P', 'R', 'O', 'F', '!', 'A', 'G', 'E', 'N', '!', 'C', 'O', 'M', 'T', 0x1f, '(', 'b', '1', '1', ',', 'b', '1',
+            '4', ',', '2', 'b', '1', '1', ',', '3', 'A', ',', '2', 'A', '(', '8', ')', ',', 'R', '(', '4', ')', ',', 'b', '1', '1',
+            ',', '2', 'A', ',', 'b', '1', '1', ',', 'b', '1', '2', ',', 'A', ')', 0x1e,
+            '1', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'D', 'a', 't', 'a', ' ', 's', 'e', 't', ' ', 's', 't', 'r', 'u', 'c', 't',
+            'u', 'r', 'e', ' ', 'i', 'n', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f,
+            'D', 'S', 'T', 'R', '!', 'A', 'A', 'L', 'L', '!', 'N', 'A', 'L', 'L', '!', 'N', 'O', 'M', 'R', '!', 'N', 'O', 'C', 'R',
+            '!', 'N', 'O', 'G', 'R', '!', 'N', 'O', 'L', 'R', '!', 'N', 'O', 'I', 'N', '!', 'N', 'O', 'C', 'N', '!', 'N', 'O', 'E',
+            'D', '!', 'N', 'O', 'F', 'A', 0x1f, '(', '3', 'b', '1', '1', ',', '8', 'b', '1', '4', ')', 0x1e,
+            '1', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'D', 'a', 't', 'a', ' ', 's', 'e', 't', ' ', 'p', 'a', 'r', 'a', 'm', 'e',
+            't', 'e', 'r', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, 'R', 'C', 'N', 'M', '!', 'R', 'C', 'I', 'D', '!', 'H', 'D', 'A', 'T',
+            '!', 'V', 'D', 'A', 'T', '!', 'S', 'D', 'A', 'T', '!', 'C', 'S', 'C', 'L', '!', 'D', 'U', 'N', 'I', '!', 'H', 'U', 'N',
+            'I', '!', 'P', 'U', 'N', 'I', '!', 'C', 'O', 'U', 'N', '!', 'C', 'O', 'M', 'F', '!', 'S', 'O', 'M', 'F', '!', 'C', 'O',
+            'M', 'T', 0x1f, '(', 'b', '1', '1', ',', 'b', '1', '4', ',', '3', 'b', '1', '1', ',', 'b', '1', '4', ',', '4', 'b', '1',
+            '1', ',', '2', 'b', '1', '4', ',', 'A', ')', 0x1e,
+            '1', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'F', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 'i',
+            'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, 'R', 'C', 'N', 'M', '!', 'R', 'C', 'I', 'D',
+            '!', 'P', 'R', 'I', 'M', '!', 'G', 'R', 'U', 'P', '!', 'O', 'B', 'J', 'L', '!', 'R', 'V', 'E', 'R', '!', 'R', 'U', 'I', 'N', 0x1f,
+            '(', 'b', '1', '1', ',', 'b', '1', '4', ',', '2', 'b', '1', '1', ',', '2', 'b', '1', '2', ',', 'b', '1', '1', ')', 0x1e,
+            '1', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'F', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'o', 'b', 'j', 'e', 'c', 't', ' ', 'i',
+            'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, 'A', 'G', 'E', 'N', '!', 'F', 'I', 'D', 'N',
+            '!', 'F', 'I', 'D', 'S', 0x1f, '(', 'b', '1', '2', ',', 'b', '1', '4', ',', 'b', '1', '2', ')', 0x1e,
+            '2', '6', '0', '0', ';', '&', '-', 'A', ' ', 'F', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 'a',
+            't', 't', 'r', 'i', 'b', 'u', 't', 'e', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, '*', 'A', 'T', 'T', 'L', '!', 'A', 'T', 'V', 'L', 0x1f,
+            '(', 'b', '1', '2', ',', 'A', ')', 0x1e,
+            '2', '6', '0', '0', ';', '&', '-', 'A', ' ', 'F', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 'n', 'a',
+            't', 'i', 'o', 'n', 'a', 'l', ' ', 'a', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, '*', 'A', 'T',
+            'T', 'L', '!', 'A', 'T', 'V', 'L', 0x1f, '(', 'b', '1', '2', ',', 'A', ')', 0x1e,
+            '2', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'F', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 't', 'o',
+            ' ', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'o', 'b', 'j', 'e', 'c', 't', ' ', 'p', 'o', 'i', 'n', 't', 'e', 'r', ' ', 'f', 'i',
+            'e', 'l', 'd', 0x1f, '*', 'L', 'N', 'A', 'M', '!', 'R', 'I', 'N', 'D', '!', 'C', 'O', 'M', 'T', 0x1f, '(', 'B', '(', '6', '4',
+            ')', ',', 'b', '1', '1', ',', 'A', ')', 0x1e,
+            '2', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'F', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 't', 'o',
+            ' ', 's', 'p', 'a', 't', 'i', 'a', 'l', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 'p', 'o', 'i', 'n', 't', 'e', 'r', ' ', 'f', 'i',
+            'e', 'l', 'd', 0x1f, '*', 'N', 'A', 'M', 'E', '!', 'O', 'R', 'N', 'T', '!', 'U', 'S', 'A', 'G', '!', 'M', 'A', 'S', 'K', 0x1f,
+            '(', 'B', '(', '4', '0', ')', ',', '3', 'b', '1', '1', ')', 0x1e,
+            '1', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'V', 'e', 'c', 't', 'o', 'r', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 'i', 'd', 'e',
+            'n', 't', 'i', 'f', 'i', 'e', 'r', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, 'R', 'C', 'N', 'M', '!', 'R', 'C', 'I', 'D', '!', 'R', 'V',
+            'E', 'R', '!', 'R', 'U', 'I', 'N', 0x1f, '(', 'b', '1', '1', ',', 'b', '1', '4', ',', 'b', '1', '2', ',', 'b', '1', '1', ')', 0x1e,
+            '2', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'V', 'e', 'c', 't', 'o', 'r', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 'a', 't', 't',
+            'r', 'i', 'b', 'u', 't', 'e', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, '*', 'A', 'T', 'T', 'L', '!', 'A', 'T', 'V', 'L', 0x1f, '(', 'b',
+            '1', '2', ',', 'A', ')', 0x1e,
+            '2', '6', '0', '0', ';', '&', ' ', ' ', ' ', 'V', 'e', 'c', 't', 'o', 'r', ' ', 'r', 'e', 'c', 'o', 'r', 'd', ' ', 'p', 'o', 'i',
+            'n', 't', 'e', 'r', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, '*', 'N', 'A', 'M', 'E', '!', 'O', 'R', 'N', 'T', '!', 'U', 'S', 'A', 'G',
+            '!', 'T', 'O', 'P', 'I', '!', 'M', 'A', 'S', 'K', 0x1f, '(', 'B', '(', '4', '0', ')', ',', '4', 'b', '1', '1', ')', 0x1e,
+            '2', '6', '0', '0', ';', '&', ' ', ' ', ' ', '2', '-', 'D', ' ', 'c', 'o', 'o', 'r', 'd', 'i', 'n', 'a', 't', 'e', ' ', 'f', 'i',
+            'e', 'l', 'd', 0x1f, '*', 'Y', 'C', 'O', 'O', '!', 'X', 'C', 'O', 'O', 0x1f, '(', '2', 'b', '2', '4', ')', 0x1e,
+            '2', '6', '0', '0', ';', '&', ' ', ' ', ' ', '3', '-', 'D', ' ', 'c', 'o', 'o', 'r', 'd', 'i', 'n', 'a', 't', 'e', ' ', '(', 's',
+            'o', 'u', 'n', 'd', 'i', 'n', 'g', ' ', 'a', 'r', 'r', 'a', 'y', ')', ' ', 'f', 'i', 'e', 'l', 'd', 0x1f, '*', 'Y', 'C', 'O', 'O',
+            '!', 'X', 'C', 'O', 'O', '!', 'V', 'E', '3', 'D', 0x1f, '(', '3', 'b', '2', '4', ')', 0x1e
+    };
+
+    static final double COMF = 10000000;
+    static final double SOMF = 10;
+
+    static String file = "0S000000.000";
+    static int intu = 0;
+    static String code = "0S";
+    static int agen = 3878;
+    static int cscl = 10000;
+    static int vdat = 23;
+    static int duni = 1;
+    static int huni = 1;
+
+    static int idx;
+    static int recs;
+
+    static int isols;
+    static int conns;
+    static int metas;
+    static int geos;
+    static int edges;
+
+    static long hash(long val) {
+        byte[] bval = ByteBuffer.allocate(Long.SIZE).putLong(val).array();
+        CRC32 crc = new CRC32();
+        crc.update(bval);
+        return crc.getValue();
+    }
+
+    public static int encodeChart(S57map map, HashMap<String, String> meta, byte[] buf) throws IndexOutOfBoundsException, UnsupportedEncodingException {
+
+        for (Entry<String, String> entry : meta.entrySet()) {
+            try {
+                switch (entry.getKey()) {
+                case "FILE":
+                    file = entry.getValue();
+                    break;
+                case "INTU":
+                    intu = Integer.parseInt(entry.getValue());
+                    break;
+                case "AGEN":
+                    String[] tokens = entry.getValue().split("/");
+                    code = tokens[0];
+                    agen = Integer.parseInt(tokens[1]);
+                    break;
+                case "VDAT":
+                    vdat = Integer.parseInt(entry.getValue());
+                    break;
+                case "CSCL":
+                    cscl = Integer.parseInt(entry.getValue());
+                    break;
+                case "DUNI":
+                    duni = Integer.parseInt(entry.getValue());
+                    break;
+                case "HUNI":
+                    huni = Integer.parseInt(entry.getValue());
+                    break;
+                }
+            } catch (Exception e) {
+                System.err.println("Meta data (" + entry.getKey() + "=" + entry.getValue() + "):" + e.getMessage());
+                System.exit(-1);
+            }
+        }
+
+        //M_COVR & MNSYS in BB if not in map
+        if (!map.features.containsKey(Obj.M_COVR)) {
+            S57osm.OSMmeta(map);
+        }
+
+        S57dat.S57geoms(map);
+
+        byte[] record;
+        ArrayList<Fparams> fields;
+
+        isols = conns = metas = geos = edges = 0;
+        String date = new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());
+        ArrayList<Fparams> ds = new ArrayList<>();
+        ds.add(new Fparams(S57field.DSID, new Object[] {10, 1, 1, intu, file, "1", "0", date, date, "03.1", 1, "ENC", "2.0", 1, agen, "Generated by OpenSeaMap.org" }));
+        ds.add(new Fparams(S57field.DSSI, new Object[] {2, 1, 2, metas, 0, geos, 0, isols, conns, edges, 0 }));
+        ArrayList<Fparams> dp = new ArrayList<>();
+        dp.add(new Fparams(S57field.DSPM, new Object[] {20, 2, 2, vdat, vdat, cscl, duni, huni, 1, 1, 10000000, 10, "" }));
+
+        System.arraycopy(header, 0, buf, 0, header.length);
+        idx = header.length;
+        record = S57dat.encRecord(1, ds);
+        System.arraycopy(record, 0, buf, idx, record.length);
+        idx += record.length;
+        record = S57dat.encRecord(2, dp);
+        System.arraycopy(record, 0, buf, idx, record.length);
+        idx += record.length;
+        recs = 3;
+
+        // Depths
+        Object[] depths = new Object[0];
+        for (Map.Entry<Long, S57map.Snode> entry : map.nodes.entrySet()) {
+            S57map.Snode node = entry.getValue();
+            if (node.flg == Nflag.DPTH) {
+                Object[] dval = new Object[] {(Math.toDegrees(node.lat) * COMF), (Math.toDegrees(node.lon) * COMF), (node.val * SOMF) };
+                depths = Arrays.copyOf(depths, (depths.length + dval.length));
+                System.arraycopy(dval, 0, depths, (depths.length - dval.length), dval.length);
+            }
+        }
+        if (depths.length > 0) {
+            fields = new ArrayList<>();
+            fields.add(new Fparams(S57field.VRID, new Object[] {110, -2, 1, 1 }));
+            fields.add(new Fparams(S57field.SG3D, depths));
+            record = S57dat.encRecord(recs++, fields);
+            System.arraycopy(record, 0, buf, idx, record.length);
+            idx += record.length;
+            isols++;
+        }
+
+        // Isolated nodes
+        for (Map.Entry<Long, S57map.Snode> entry : map.nodes.entrySet()) {
+            S57map.Snode node = entry.getValue();
+            if (node.flg == Nflag.ISOL) {
+                fields = new ArrayList<>();
+                fields.add(new Fparams(S57field.VRID, new Object[] {110, hash(entry.getKey()), 1, 1 }));
+                fields.add(new Fparams(S57field.SG2D, new Object[] {(Math.toDegrees(node.lat) * COMF), (Math.toDegrees(node.lon) * COMF) }));
+                record = S57dat.encRecord(recs++, fields);
+                System.arraycopy(record, 0, buf, idx, record.length);
+                idx += record.length;
+                isols++;
+            }
+        }
+
+        // Connected nodes
+        for (Map.Entry<Long, S57map.Snode> entry : map.nodes.entrySet()) {
+            S57map.Snode node = entry.getValue();
+            if (node.flg == Nflag.CONN) {
+                fields = new ArrayList<>();
+                fields.add(new Fparams(S57field.VRID, new Object[] {120, hash(entry.getKey()), 1, 1 }));
+                fields.add(new Fparams(S57field.SG2D, new Object[] {(Math.toDegrees(node.lat) * COMF), (Math.toDegrees(node.lon) * COMF) }));
+                record = S57dat.encRecord(recs++, fields);
+                System.arraycopy(record, 0, buf, idx, record.length);
+                idx += record.length;
+                conns++;
+            }
+        }
+
+        // Edges
+        for (Map.Entry<Long, S57map.Edge> entry : map.edges.entrySet()) {
+            S57map.Edge edge = entry.getValue();
+            fields = new ArrayList<>();
+            fields.add(new Fparams(S57field.VRID, new Object[] {130, hash(entry.getKey()), 1, 1}));
+            fields.add(new Fparams(S57field.VRPT, new Object[] {(((hash(edge.first) & 0xffffffff) << 8) + 120L), 255, 255, 1, 255, (((hash(edge.last) & 0xffffffff) << 8) + 120L), 255, 255, 2, 255 }));
+            Object[] nodes = new Object[0];
+            for (long ref : edge.nodes) {
+                Object[] nval = new Object[] {(Math.toDegrees(map.nodes.get(ref).lat) * COMF), (Math.toDegrees(map.nodes.get(ref).lon) * COMF) };
+                nodes = Arrays.copyOf(nodes, (nodes.length + nval.length));
+                System.arraycopy(nval, 0, nodes, (nodes.length - nval.length), nval.length);
+            }
+            if (nodes.length > 0) {
+                fields.add(new Fparams(S57field.SG2D, nodes));
+            }
+            record = S57dat.encRecord(recs++, fields);
+            System.arraycopy(record, 0, buf, idx, record.length);
+            idx += record.length;
+            edges++;
+        }
+
+        // Meta & Geo objects
+        boolean soundings = false;
+        for (Entry<Obj, ArrayList<Feature>> entry : map.features.entrySet()) {
+            Obj obj = entry.getKey();
+            for (Feature feature : entry.getValue()) {
+                if (obj == Obj.SOUNDG) {
+                    if (soundings) {
+                        continue;
+                    } else {
+                        soundings = true;
+                    }
+                }
+                int prim = feature.geom.prim.ordinal();
+                prim = (prim == 0) ? 255 : prim;
+                int grup = ((obj == Obj.DEPARE) || (obj == Obj.DRGARE) || (obj == Obj.FLODOC) || (obj == Obj.HULKES) || (obj == Obj.LNDARE) || (obj == Obj.PONTON) || (obj == Obj.UNSARE)) ? 1 : 2;
+
+                ArrayList<Fparams> geom = new ArrayList<>();
+                int outers = 0;
+                outers = (feature.geom.prim == Pflag.POINT) ? 1 : feature.geom.comps.get(0).size;
+                for (Prim elem : feature.geom.elems) {
+                    if (feature.geom.prim == Pflag.POINT) {
+                        if (obj == Obj.SOUNDG) {
+                            geom.add(new Fparams(S57field.FSPT, new Object[] {((-2 << 8) + 110L), 255, 255, 255 }));
+                        } else {
+                            geom.add(new Fparams(S57field.FSPT, new Object[] {((hash(elem.id) << 8) + ((map.nodes.get(elem.id).flg == Nflag.CONN) ? 120L : 110L)), 255, 255, 255 }));
+                        }
+                    } else {
+                        geom.add(new Fparams(S57field.FSPT, new Object[] {((hash(elem.id) << 8) + 130L), (elem.forward ? 1 : 2), ((outers-- > 0) ? 1 : 2), 2 }));
+                    }
+                }
+
+                ArrayList<ArrayList<Fparams>> objects = new ArrayList<>();
+                ArrayList<Long> slaves = new ArrayList<>();
+                long slaveid = feature.id + 0x0100000000000000L;
+                for (Entry<Obj, ObjTab> objs : feature.objs.entrySet()) {
+                    Obj objobj = objs.getKey();
+                    boolean master = true;
+                    for (Entry<Integer, AttMap> object : objs.getValue().entrySet()) {
+                        ArrayList<Fparams> objatts = new ArrayList<>();
+                        master = (feature.type == objobj) && ((object.getKey() == 0) || (object.getKey() == 1));
+                        long id = hash(master ? feature.id : slaveid);
+                        objatts.add(new Fparams(S57field.FRID, new Object[] {100, id, prim, grup, S57obj.encodeType(objobj), 1, 1}));
+                        objatts.add(new Fparams(S57field.FOID, new Object[] {agen, id, 1}));
+                        Object[] attf = new Object[0];
+                        Object[] natf = new Object[0];
+                        AttMap atts = new AttMap();
+                        atts.putAll(object.getValue());
+                        if (master) {
+                            atts.putAll(feature.atts);
+                        }
+                        for (Entry<Att, AttVal<?>> att : atts.entrySet()) {
+                            if (!((obj == Obj.SOUNDG) && (att.getKey() == Att.VALSOU))) {
+                                long attl = S57att.encodeAttribute(att.getKey());
+                                Object[] next = new Object[] {attl, S57val.encodeValue(att.getValue(), att.getKey())};
+                                if ((attl < 300) || (attl > 304)) {
+                                    attf = Arrays.copyOf(attf, (attf.length + next.length));
+                                    System.arraycopy(next, 0, attf, (attf.length - next.length), next.length);
+                                } else {
+                                    natf = Arrays.copyOf(natf, (natf.length + next.length));
+                                    System.arraycopy(next, 0, natf, (natf.length - next.length), next.length);
+                                }
+                            }
+                        }
+                        if (attf.length > 0) {
+                            objatts.add(new Fparams(S57field.ATTF, attf));
+                        }
+                        if (natf.length > 0) {
+                            objatts.add(new Fparams(S57field.NATF, attf));
+                        }
+                        if (master) {
+                            objects.add(objatts);
+                        } else {
+                            slaves.add(id);
+                            objects.add(0, objatts);
+                            slaveid += 0x0100000000000000L;
+                        }
+                    }
+                }
+
+                if (!slaves.isEmpty()) {
+                    ArrayList<Fparams> refs = new ArrayList<>();
+                    Object[] params = new Object[0];
+                    while (!slaves.isEmpty()) {
+                        long id = slaves.remove(0);
+                        Object[] next = new Object[] {(long) ((((id & 0xffffffff) + 0x100000000L) << 16) + (agen & 0xffff)), 2, "" };
+                        params = Arrays.copyOf(params, (params.length + next.length));
+                        System.arraycopy(next, 0, params, (params.length - next.length), next.length);
+                    }
+                    refs.add(new Fparams(S57field.FFPT, params));
+                    objects.get(objects.size() - 1).addAll(refs);
+                }
+
+                for (ArrayList<Fparams> object : objects) {
+                    object.addAll(geom);
+                    record = S57dat.encRecord(recs++, object);
+                    System.arraycopy(record, 0, buf, idx, record.length);
+                    idx += record.length;
+                    if ((obj == Obj.M_COVR) || (obj == Obj.M_NSYS)) {
+                        metas++;
+                    } else {
+                        geos++;
+                    }
+                }
+            }
+        }
+
+        // Re-write DSID/DSSI with final totals
+        ds = new ArrayList<>();
+        ds.add(new Fparams(S57field.DSID, new Object[] {10, 1, 1, intu, file, "1", "0", date, date, "03.1", 1, "ENC", "2.0", 1, agen, "Generated by OpenSeaMap.org" }));
+        ds.add(new Fparams(S57field.DSSI, new Object[] {2, 1, 2, metas, 0, geos, 0, isols, conns, edges, 0 }));
+        record = S57dat.encRecord(1, ds);
+        System.arraycopy(record, 0, buf, header.length, record.length);
+
+        return idx;
+    }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57map.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57map.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57map.java	(revision 36424)
@@ -0,0 +1,973 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.util.ArrayList;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.ListIterator;
+
+import s57.S57att.Att;
+import s57.S57obj.Obj;
+import s57.S57osm.KeyVal;
+import s57.S57val.AttVal;
+
+/**
+ * @author Malcolm Herring
+ */
+public class S57map { // S57/OSM map generation methods
+    // CHECKSTYLE.OFF: LineLength
+
+    public static class MapBounds {
+        public double minlat;
+        public double minlon;
+        public double maxlat;
+        public double maxlon;
+        public MapBounds() {
+            minlat = Math.toRadians(90);
+            minlon = Math.toRadians(180);
+            maxlat = Math.toRadians(-90);
+            maxlon = Math.toRadians(-180);
+        }
+    }
+
+    public enum Nflag {
+        ANON,    // Edge inner nodes
+        ISOL,    // Node not part of Edge
+        CONN,    // Edge first and last nodes
+        TRNK, // Edge truncated polygon nodes
+        DPTH    // Sounding nodes
+    }
+
+    public static class Snode {    // All coordinates in map
+        public double lat;    // Latitude in radians
+        public double lon;    // Longitude in radians
+        public Nflag flg;        // Role of node
+        public double val;    // Optional value
+
+        public Snode() {
+            flg = Nflag.ANON;
+            lat = 0;
+            lon = 0;
+            val = 0;
+        }
+
+        public Snode(double ilat, double ilon) {
+            flg = Nflag.ANON;
+            lat = ilat;
+            lon = ilon;
+            val = 0;
+        }
+
+        public Snode(double ilat, double ilon, Nflag iflg) {
+            lat = ilat;
+            lon = ilon;
+            flg = iflg;
+            val = 0;
+        }
+
+        public Snode(double ilat, double ilon, double ival) {
+            flg = Nflag.DPTH;
+            lat = ilat;
+            lon = ilon;
+            val = ival;
+        }
+    }
+
+    public static class Edge {        // A polyline segment
+        public long first;    // First CONN node
+        public long last;        // Last CONN node
+        public ArrayList<Long> nodes; // Inner ANON nodes
+
+        public Edge() {
+            first = 0;
+            last = 0;
+            nodes = new ArrayList<>();
+        }
+    }
+
+    public enum Rflag {
+        UNKN, MASTER, SLAVE
+    }
+
+    public static class Reln {
+        public long id;
+        public Rflag reln;
+        public Reln(long i, Rflag r) {
+            id = i;
+            reln = r;
+        }
+    }
+
+    public static class RelTab extends ArrayList<Reln> {
+        public RelTab() {
+            super();
+        }
+    }
+
+    public static class ObjTab extends HashMap<Integer, AttMap> {
+        public ObjTab() {
+            super();
+        }
+    }
+
+    public static class ObjMap extends EnumMap<Obj, ObjTab> {
+        public ObjMap() {
+            super(Obj.class);
+        }
+    }
+
+    public static class AttMap extends HashMap<Att, AttVal<?>> {
+        public AttMap() {
+            super();
+        }
+    }
+
+    public static class NodeTab extends HashMap<Long, Snode> {
+        public NodeTab() {
+            super();
+        }
+    }
+
+    public static class EdgeTab extends HashMap<Long, Edge> {
+        public EdgeTab() {
+            super();
+        }
+    }
+
+    public static class FtrMap extends EnumMap<Obj, ArrayList<Feature>> {
+        public FtrMap() {
+            super(Obj.class);
+        }
+    }
+
+    public static class FtrTab extends HashMap<Long, Feature> {
+        public FtrTab() {
+            super();
+        }
+    }
+
+    public static class Prim {                // Spatial element
+        public long id;                    // Snode ID for POINTs, Edge ID for LINEs & AREAs)
+        public boolean forward;    // Direction of vector used (LINEs & AREAs)
+        public boolean outer;        // Exterior/Interior boundary (AREAs)
+        public boolean trunc;        // Cell limit truncation
+        public Prim() {
+            id = 0; forward = true; outer = true; trunc = false;
+        }
+
+        public Prim(long i) {
+            id = i; forward = true; outer = true; trunc = false;
+        }
+
+        public Prim(long i, boolean o) {
+            id = i; forward = true; outer = o; trunc = false;
+        }
+
+        public Prim(long i, boolean f, boolean o) {
+            id = i; forward = f; outer = o; trunc = false;
+        }
+
+        public Prim(long i, boolean f, boolean o, boolean t) {
+            id = i; forward = f; outer = o; trunc = t;
+        }
+    }
+
+    public static class Comp {            // Composite spatial element
+        public long ref;            // ID of Comp
+        public int size;            // Number of Prims in this Comp
+        public Comp(long r, int s) {
+            ref = r;
+            size = s;
+        }
+    }
+
+    public enum Pflag {
+        NOSP, POINT, LINE, AREA
+    }
+
+    public static class Geom {                            // Geometric structure of feature
+        public Pflag prim;                        // Geometry type
+        public ArrayList<Prim> elems;    // Ordered list of elements
+        public int outers;                        // Number of outers
+        public int inners;                        // Number of inners
+        public ArrayList<Comp> comps;    // Ordered list of compounds
+        public double area;                        // Area of feature
+        public double length;                    // Length of feature
+        public Snode centre;                    // Centre of feature
+        public Geom(Pflag p) {
+            prim = p;
+            elems = new ArrayList<>();
+            outers = inners = 0;
+            comps = new ArrayList<>();
+            area = 0;
+            length = 0;
+            centre = new Snode();
+        }
+    }
+
+    public static class Feature {
+        public long id;                // Ref for this feature
+        public Rflag reln;        // Relationship status
+        public Geom geom;            // Geometry data
+        public Obj type;            // Feature type
+        public AttMap atts;        // Feature attributes
+        public RelTab rels;        // Related objects
+        public ObjMap objs;        // Slave object attributes
+
+        public Feature() {
+            id = 0;
+            reln = Rflag.UNKN;
+            geom = new Geom(Pflag.NOSP);
+            type = Obj.UNKOBJ;
+            atts = new AttMap();
+            rels = new RelTab();
+            objs = new ObjMap();
+        }
+    }
+
+    public MapBounds bounds;
+    public NodeTab nodes;
+    public EdgeTab edges;
+    public FtrMap features;
+    public FtrTab index;
+    public long xref;
+
+    private long cref;
+    private Feature feature;
+    private Edge edge;
+    private ArrayList<KeyVal<?>> osm;
+    private boolean sea;
+
+    public S57map(boolean s) {
+        sea = s;
+        nodes = new NodeTab();      // All nodes in map
+        edges = new EdgeTab();      // All edges in map
+        feature = new Feature();    // Current feature being built
+        features = new FtrMap();    // All features in map, grouped by type
+        index = new FtrTab();       // Feature look-up table
+        bounds = new MapBounds();
+        cref = 0x0000ffffffff0000L; // Compound reference generator
+        xref = 0x0fff000000000000L; // Extras reference generator
+    }
+
+    // S57 map building methods
+
+    public void newNode(long id, double lat, double lon, Nflag flag) {
+        nodes.put(id, new Snode(Math.toRadians(lat), Math.toRadians(lon), flag));
+        if (flag == Nflag.ANON) {
+            edge.nodes.add(id);
+        }
+    }
+
+    public void newNode(long id, double lat, double lon, double depth) {
+        nodes.put(id, new Snode(Math.toRadians(lat), Math.toRadians(lon), depth));
+    }
+
+    public void newFeature(long id, Pflag p, long objl) {
+        feature = new Feature();
+        Obj obj = S57obj.decodeType(objl);
+        feature.geom = new Geom(p);
+        feature.type = obj;
+        if (obj != Obj.UNKOBJ) {
+            index.put(id, feature);
+            feature.id = id;
+        }
+    }
+
+    public void refObj(long id, int rind) {
+        Rflag r = Rflag.UNKN;
+        switch (rind) {
+        case 1:
+            r = Rflag.MASTER;
+            break;
+        case 2:
+            r = Rflag.SLAVE;
+            break;
+        case 3:
+            r = Rflag.UNKN;
+            break;
+        }
+        feature.rels.add(new Reln(id, r));
+    }
+
+    public void endFeature() {
+
+    }
+
+    public void newAtt(long attl, String atvl) {
+        Att att = S57att.decodeAttribute(attl);
+        AttVal<?> val = S57val.decodeValue(atvl, att);
+        feature.atts.put(att, val);
+    }
+
+    public void newPrim(long id, long ornt, long usag) {
+        feature.geom.elems.add(new Prim(id, (ornt != 2), (usag != 2)));
+    }
+
+    public void addConn(long id, int topi) {
+        if (topi == 1) {
+            edge.first = id;
+        } else {
+            edge.last = id;
+        }
+    }
+
+    public void newEdge(long id) {
+        edge = new Edge();
+        edges.put(id, edge);
+    }
+
+    public void endFile() {
+        for (long id : index.keySet()) {
+            Feature feature = index.get(id);
+            sortGeom(feature);
+            for (Reln reln : feature.rels) {
+                Feature rel = index.get(reln.id);
+                if (cmpGeoms(feature.geom, rel.geom)) {
+                    switch (reln.reln) {
+                    case SLAVE:
+                        feature.reln = Rflag.MASTER;
+                        break;
+                    default:
+                        feature.reln = Rflag.UNKN;
+                        break;
+                    }
+                    rel.reln = reln.reln;
+                } else {
+                    reln.reln = Rflag.UNKN;
+                }
+            }
+        }
+        for (long id : index.keySet()) {
+            Feature feature = index.get(id);
+            if (feature.reln == Rflag.UNKN) {
+                feature.reln = Rflag.MASTER;
+            }
+            if ((feature.type != Obj.UNKOBJ) && (feature.reln == Rflag.MASTER)) {
+                if (features.get(feature.type) == null) {
+                    features.put(feature.type, new ArrayList<Feature>());
+                }
+                features.get(feature.type).add(feature);
+            }
+        }
+        for (long id : index.keySet()) {
+            Feature feature = index.get(id);
+            for (Reln reln : feature.rels) {
+                Feature rel = index.get(reln.id);
+                if (rel.reln == Rflag.SLAVE) {
+                    if (feature.objs.get(rel.type) == null) {
+                        feature.objs.put(rel.type, new ObjTab());
+                    }
+                    ObjTab tab = feature.objs.get(rel.type);
+                    int ix = tab.size();
+                    tab.put(ix, rel.atts);
+                }
+            }
+        }
+    }
+
+    // OSM map building methods
+
+    public void addNode(long id, double lat, double lon) {
+        nodes.put(id, new Snode(Math.toRadians(lat), Math.toRadians(lon)));
+        feature = new Feature();
+        feature.id = id;
+        feature.reln = Rflag.UNKN;
+        feature.geom.prim = Pflag.POINT;
+        feature.geom.elems.add(new Prim(id));
+        edge = null;
+        osm = new ArrayList<>();
+    }
+
+    public void addEdge(long id) {
+        feature = new Feature();
+        feature.id = id;
+        feature.reln = Rflag.UNKN;
+        feature.geom.prim = Pflag.LINE;
+        feature.geom.elems.add(new Prim(id));
+        edge = new Edge();
+        osm = new ArrayList<>();
+    }
+
+    public void addToEdge(long node) {
+        if (edge.first == 0) {
+            edge.first = node;
+            nodes.get(node).flg = Nflag.CONN;
+        } else {
+            if (edge.last != 0) {
+                edge.nodes.add(edge.last);
+            }
+            edge.last = node;
+        }
+    }
+
+    public void addArea(long id) {
+        feature = new Feature();
+        feature.id = id;
+        feature.reln = Rflag.UNKN;
+        feature.geom.prim = Pflag.AREA;
+        edge = null;
+        osm = new ArrayList<>();
+    }
+
+    public void addToArea(long id, boolean outer) {
+        feature.geom.elems.add(new Prim(id, outer));
+    }
+
+    public void addTag(String key, String val) {
+        feature.reln = Rflag.MASTER;
+        String[] subkeys = key.split(":");
+        if ((subkeys.length > 1) && subkeys[0].equals("seamark")) {
+            Obj obj = S57obj.enumType(subkeys[1]);
+            if ((subkeys.length > 2) && (obj != Obj.UNKOBJ)) {
+                int idx = 0;
+                Att att = Att.UNKATT;
+                try {
+                    idx = Integer.parseInt(subkeys[2]);
+                    if (subkeys.length == 4) {
+                        att = s57.S57att.enumAttribute(subkeys[3], obj);
+                    }
+                } catch (Exception e) {
+                    att = S57att.enumAttribute(subkeys[2], obj);
+                }
+                ObjTab objs = feature.objs.get(obj);
+                if (objs == null) {
+                    objs = new ObjTab();
+                    feature.objs.put(obj, objs);
+                }
+                AttMap atts = objs.get(idx);
+                if (atts == null) {
+                    atts = new AttMap();
+                    objs.put(idx, atts);
+                }
+                AttVal<?> attval = S57val.convertValue(val, att);
+                if (attval.val != null) {
+                    if (att == Att.VALSOU) {
+                        Snode node = nodes.get(feature.geom.elems.get(0).id);
+                        node.val = (Double) attval.val;
+                    }
+                    atts.put(att, attval);
+                }
+            } else {
+                if (subkeys[1].equals("type")) {
+                    obj = S57obj.enumType(val);
+                    feature.type = obj;
+                    ObjTab objs = feature.objs.get(obj);
+                    if (objs == null) {
+                        objs = new ObjTab();
+                        feature.objs.put(obj, objs);
+                    }
+                    AttMap atts = objs.get(0);
+                    if (atts == null) {
+                        atts = new AttMap();
+                        objs.put(0, atts);
+                    }
+                    if ((obj == Obj.SOUNDG) && (feature.geom.prim == Pflag.POINT)) {
+                        Snode node = nodes.get(feature.geom.elems.get(0).id);
+                        node.flg = Nflag.DPTH;
+                    }
+                } else {
+                    if (obj != Obj.UNKOBJ) {
+                        if (val.equals("yes")) {
+                            ObjTab objs = feature.objs.get(obj);
+                            if (objs == null) {
+                                objs = new ObjTab();
+                                feature.objs.put(obj, objs);
+                            }
+                        }
+                    } else {
+                        Att att = S57att.enumAttribute(subkeys[1], Obj.UNKOBJ);
+                        if (att != Att.UNKATT) {
+                            AttVal<?> attval = S57val.convertValue(val, att);
+                            if (attval.val != null)
+                                feature.atts.put(att, attval);
+                        }
+                    }
+                }
+            }
+        } else if (!sea) {
+            S57osm.OSMtag(osm, key, val);
+        }
+    }
+
+    public void tagsDone(long id) {
+        switch (feature.geom.prim) {
+        case POINT:
+            Snode node = nodes.get(id);
+            if ((node.flg != Nflag.CONN) && (node.flg != Nflag.DPTH) && (!feature.objs.isEmpty() || !osm.isEmpty())) {
+                node.flg = Nflag.ISOL;
+            }
+            break;
+        case LINE:
+            edges.put(id, edge);
+            nodes.get(edge.first).flg = Nflag.CONN;
+            nodes.get(edge.last).flg = Nflag.CONN;
+            if (edge.first == edge.last) {
+                feature.geom.prim = Pflag.AREA;
+            }
+            break;
+        case AREA:
+            break;
+        default:
+            break;
+        }
+        if (sortGeom(feature) && !((edge != null) && (edge.last == 0))) {
+            if (feature.type != Obj.UNKOBJ) {
+                index.put(id, feature);
+                if (features.get(feature.type) == null) {
+                    features.put(feature.type, new ArrayList<Feature>());
+                }
+                features.get(feature.type).add(feature);
+            }
+            for (KeyVal<?> kvx : osm) {
+                Feature base = new Feature();
+                base.reln = Rflag.MASTER;
+                base.geom = feature.geom;
+                base.type = kvx.obj;
+                ObjTab objs = new ObjTab();
+                base.objs.put(kvx.obj, objs);
+                AttMap atts = new AttMap();
+                objs.put(0, atts);
+                if (kvx.att != Att.UNKATT) {
+                    atts.put(kvx.att, new AttVal<>(kvx.conv, kvx.val));
+                }
+                index.put(++xref, base);
+                if (features.get(kvx.obj) == null) {
+                    features.put(kvx.obj, new ArrayList<Feature>());
+                }
+                features.get(kvx.obj).add(base);
+            }
+            /*            if (!osm.isEmpty()) {
+                if (feature.type == Obj.UNKOBJ) {
+                    feature.type = osm.obj;
+                    ObjTab objs = feature.objs.get(osm.obj);
+                    if (objs == null) {
+                        objs = new ObjTab();
+                        feature.objs.put(osm.obj, objs);
+                    }
+                    AttMap atts = objs.get(0);
+                    if (atts == null) {
+                        atts = new AttMap();
+                        objs.put(0, atts);
+                    }
+                    if (osm.att != Att.UNKATT) {
+                        atts.put(osm.att, new AttVal<>(osm.conv, osm.val));
+                    }
+                } else {
+                    Feature base = new Feature();
+                    base.reln = Rflag.MASTER;
+                    base.geom = feature.geom;
+                    base.type = osm.obj;
+                    ObjTab objs = new ObjTab();
+                    base.objs.put(osm.obj, objs);
+                    AttMap atts = new AttMap();
+                    objs.put(0, atts);
+                    if (osm.att != Att.UNKATT) {
+                        atts.put(osm.att, new AttVal<>(osm.conv, osm.val));
+                    }
+                    index.put(++xref, base);
+                    if (features.get(osm.obj) == null) {
+                        features.put(osm.obj, new ArrayList<Feature>());
+                    }
+                    features.get(osm.obj).add(base);
+                }
+            }*/
+        }
+    }
+
+    public void mapDone() {
+        if (!sea) {
+            S57box.bBox(this);
+        }
+    }
+
+    // Utility methods
+
+    public boolean sortGeom(Feature feature) {
+        try {
+            Geom sort = new Geom(feature.geom.prim);
+            long first = 0;
+            long last = 0;
+            Comp comp = null;
+            boolean next = true;
+            feature.geom.length = 0;
+            feature.geom.area = 0;
+            if (feature.geom.elems.isEmpty()) {
+                return false;
+            }
+            if (feature.geom.prim == Pflag.POINT) {
+                feature.geom.centre = nodes.get(feature.geom.elems.get(0).id);
+                return true;
+            }
+            Geom outer = new Geom(feature.geom.prim);
+            Geom inner = new Geom(feature.geom.prim);
+            for (Prim prim : feature.geom.elems) {
+                if (prim.outer) {
+                    outer.elems.add(prim);
+                } else {
+                    inner.elems.add(prim);
+                }
+            }
+            boolean outin = true;
+            int sweep = outer.elems.size();
+            if (sweep == 0) {
+                return false;
+            }
+            int prev = sweep;
+            int top = 0;
+            while (!outer.elems.isEmpty()) {
+                Prim prim = outer.elems.remove(0);
+                Edge edge = edges.get(prim.id);
+                if (edge == null) {
+                    return false;
+                }
+                if (next == true) {
+                    next = false;
+                    first = edge.first;
+                    last = edge.last;
+                    prim.forward = true;
+                    sort.elems.add(prim);
+                    if (prim.outer) {
+                        sort.outers++;
+                    } else {
+                        sort.inners++;
+                    }
+                    comp = new Comp(cref++, 1);
+                    sort.comps.add(comp);
+                } else {
+                    if (edge.first == last) {
+                        sort.elems.add(prim);
+                        last = edge.last;
+                        prim.forward = true;
+                        comp.size++;
+                    } else if (edge.last == first) {
+                        sort.elems.add(top, prim);
+                        first = edge.first;
+                        prim.forward = true;
+                        comp.size++;
+                    } else if (edge.last == last) {
+                        sort.elems.add(prim);
+                        last = edge.first;
+                        prim.forward = false;
+                        comp.size++;
+                    } else if (edge.first == first) {
+                        sort.elems.add(top, prim);
+                        first = edge.last;
+                        prim.forward = false;
+                        comp.size++;
+                    } else {
+                        outer.elems.add(prim);
+                    }
+                }
+                if (--sweep == 0) {
+                    sweep = outer.elems.size();
+                    if ((sweep == 0) || (sweep == prev)) {
+                        if ((sort.prim == Pflag.AREA) && (first != last)) {
+                            return false;
+                        }
+                        if (outin) {
+                            if (sweep != 0) {
+                                return false;
+                            }
+                            outer = inner;
+                            outin = false;
+                            sweep = outer.elems.size();
+                        }
+                        next = true;
+                        top = sort.elems.size();
+                    }
+                    prev = sweep;
+                }
+            }
+            if ((sort.prim == Pflag.LINE) && (sort.outers == 1) && (sort.inners == 0) && (first == last)) {
+                sort.prim = Pflag.AREA;
+            }
+            feature.geom = sort;
+            if (feature.geom.prim == Pflag.AREA) {
+                int ie = 0;
+                int ic = 0;
+                while (ie < feature.geom.elems.size()) {
+                    double area = calcArea(feature.geom, ic);
+                    if (ie == 0)
+                        feature.geom.area = Math.abs(area) * 3444 * 3444;
+                    if (((ie == 0) && (area < 0.0)) || ((ie > 0) && (area >= 0.0))) {
+                        ArrayList<Prim> tmp = new ArrayList<>();
+                        for (int i = 0; i < feature.geom.comps.get(ic).size; i++) {
+                            Prim p = feature.geom.elems.remove(ie);
+                            p.forward = !p.forward;
+                            tmp.add(0, p);
+                        }
+                        feature.geom.elems.addAll(ie, tmp);
+                    }
+                    ie += feature.geom.comps.get(ic).size;
+                    ic++;
+                }
+            }
+            feature.geom.length = calcLength(feature.geom);
+            feature.geom.centre = calcCentroid(feature);
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    public boolean cmpGeoms(Geom g1, Geom g2) {
+        return ((g1.prim == g2.prim) && (g1.outers == g2.outers) && (g1.inners == g2.inners) && (g1.elems.size() == g2.elems.size()));
+    }
+
+    public class EdgeIterator {
+        Edge edge;
+        boolean forward;
+        ListIterator<Long> it;
+
+        public EdgeIterator(Edge e, boolean dir) {
+            edge = e;
+            forward = dir;
+            it = null;
+        }
+
+        public boolean hasNext() {
+            return (edge != null);
+        }
+
+        public long nextRef() {
+            long ref = 0;
+            if (forward) {
+                if (it == null) {
+                    ref = edge.first;
+                    it = edge.nodes.listIterator();
+                } else {
+                    if (it.hasNext()) {
+                        ref = it.next();
+                    } else {
+                        ref = edge.last;
+                        edge = null;
+                    }
+                }
+            } else {
+                if (it == null) {
+                    ref = edge.last;
+                    it = edge.nodes.listIterator(edge.nodes.size());
+                } else {
+                    if (it.hasPrevious()) {
+                        ref = it.previous();
+                    } else {
+                        ref = edge.first;
+                        edge = null;
+                    }
+                }
+            }
+            return ref;
+        }
+
+        public Snode next() {
+            return nodes.get(nextRef());
+        }
+    }
+
+    public class GeomIterator {
+        Geom geom;
+        Prim prim;
+        EdgeIterator eit;
+        ListIterator<S57map.Prim> ite;
+        ListIterator<Comp> itc;
+        Comp comp;
+        int ec;
+        long lastref;
+
+        public GeomIterator(Geom g) {
+            geom = g;
+            lastref = 0;
+            ite = geom.elems.listIterator();
+            itc = geom.comps.listIterator();
+        }
+
+        public boolean hasComp() {
+            return (itc.hasNext());
+        }
+
+        public long nextComp() {
+            comp = itc.next();
+            ec = comp.size;
+            lastref = 0;
+            return comp.ref;
+        }
+
+        public boolean hasEdge() {
+            return (ec > 0) && ite.hasNext();
+        }
+
+        public long nextEdge() {
+            prim = ite.next();
+            eit = new EdgeIterator(edges.get(prim.id), prim.forward);
+            ec--;
+            return prim.id;
+        }
+
+        public boolean hasNode() {
+            return (eit.hasNext());
+        }
+
+        public long nextRef(boolean all) {
+            long ref = eit.nextRef();
+            if (!all && (ref == lastref)) {
+                ref = eit.nextRef();
+            }
+            lastref = ref;
+            return ref;
+        }
+
+        public long nextRef() {
+            return nextRef(false);
+        }
+
+        public Snode next() {
+            return nodes.get(nextRef());
+        }
+    }
+
+    double calcArea(Geom geom, int comp) {
+        Snode node;
+        double lat, lon, llon, llat;
+        lat = lon = llon = llat = 0;
+        double sigma = 0;
+        GeomIterator git = new GeomIterator(geom);
+        for (int i = 0; i <= comp; i++) {
+            if (git.hasComp()) {
+                git.nextComp();
+                while (git.hasEdge()) {
+                    git.nextEdge();
+                    while (git.hasNode()) {
+                        node = git.next();
+                        if (node == null)
+                            continue;
+                        llon = lon;
+                        llat = lat;
+                        lat = node.lat;
+                        lon = node.lon;
+                        sigma += (lon * Math.sin(llat)) - (llon * Math.sin(lat));
+                    }
+                }
+                if (i != comp)
+                    sigma = lat = lon = llon = llat = 0;
+            }
+        }
+        return sigma / 2.0;
+    }
+
+    double calcLength(Geom geom) {
+        Snode node;
+        double lat, lon, llon, llat;
+        lat = lon = llon = llat = 0;
+        double sigma = 0;
+        boolean first = true;
+        GeomIterator git = new GeomIterator(geom);
+        while (git.hasComp()) {
+            git.nextComp();
+            while (git.hasEdge()) {
+                git.nextEdge();
+                while (git.hasNode()) {
+                    node = git.next();
+                    if (first) {
+                        first = false;
+                        lat = node.lat;
+                        lon = node.lon;
+                    } else if (node != null) {
+                        llat = lat;
+                        llon = lon;
+                        lat = node.lat;
+                        lon = node.lon;
+                        sigma += Math.acos(Math.sin(lat) * Math.sin(llat) + Math.cos(lat) * Math.cos(llat) * Math.cos(llon - lon));
+                    }
+                }
+            }
+        }
+        return sigma * 3444;
+    }
+
+    Snode calcCentroid(Feature feature) {
+        double lat, lon, slat, slon, llat, llon;
+        llat = llon = lat = lon = slat = slon = 0;
+        double sarc = 0;
+        boolean first = true;
+        switch (feature.geom.prim) {
+        case POINT:
+            return nodes.get(feature.geom.elems.get(0).id);
+        case LINE:
+            GeomIterator git = new GeomIterator(feature.geom);
+            while (git.hasComp()) {
+                git.nextComp();
+                while (git.hasEdge()) {
+                    git.nextEdge();
+                    while (git.hasNode()) {
+                        Snode node = git.next();
+                        if (node == null) continue;
+                        lat = node.lat;
+                        lon = node.lon;
+                        if (first) {
+                            first = false;
+                        } else {
+                            sarc += Math.acos(Math.cos(lon - llon) * Math.cos(lat - llat));
+                        }
+                        llat = lat;
+                        llon = lon;
+                    }
+                }
+            }
+            double harc = sarc / 2;
+            sarc = 0;
+            first = true;
+            git = new GeomIterator(feature.geom);
+            while (git.hasComp()) {
+                git.nextComp();
+                while (git.hasEdge()) {
+                    git.nextEdge();
+                    while (git.hasNode()) {
+                        Snode node = git.next();
+                        if (node == null) continue;
+                        lat = node.lat;
+                        lon = node.lon;
+                        if (first) {
+                            first = false;
+                        } else {
+                            sarc = Math.acos(Math.cos(lon - llon) * Math.cos(lat - llat));
+                            if (sarc > harc)
+                                break;
+                        }
+                        harc -= sarc;
+                        llat = lat;
+                        llon = lon;
+                    }
+                }
+            }
+            return new Snode(llat + ((lat - llat) * harc / sarc), llon + ((lon - llon) * harc / sarc));
+        case AREA:
+            git = new GeomIterator(feature.geom);
+            while (git.hasComp()) {
+                git.nextComp();
+                while (git.hasEdge()) {
+                    git.nextEdge();
+                    while (git.hasNode()) {
+                        Snode node = git.next();
+                        lat = node.lat;
+                        lon = node.lon;
+                        if (first) {
+                            first = false;
+                        } else {
+                            double arc = (Math.acos(Math.cos(lon - llon) * Math.cos(lat - llat)));
+                            slat += ((lat + llat) / 2 * arc);
+                            slon += ((lon + llon) / 2 * arc);
+                            sarc += arc;
+                        }
+                        llon = lon;
+                        llat = lat;
+                    }
+                }
+            }
+            return new Snode((sarc > 0.0 ? slat / sarc : 0.0), (sarc > 0.0 ? slon / sarc : 0.0));
+        default:
+        }
+        return null;
+    }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57obj.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57obj.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57obj.java	(revision 36424)
@@ -0,0 +1,172 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class S57obj { // S57 Object lookup tables & methods
+    private S57obj() {
+        // Hide default constructor for utilities classes
+    }
+    // CHECKSTYLE.OFF: LineLength
+
+    public enum Obj {
+        UNKOBJ, M_COVR, M_NSYS, AIRARE, ACHBRT, ACHARE, BCNCAR, BCNISD, BCNLAT, BCNSAW, BCNSPP, BERTHS, BRIDGE, BUISGL, BUAARE, BOYCAR,
+        BOYINB, BOYISD, BOYLAT, BOYSAW, BOYSPP, CBLARE, CBLOHD, CBLSUB, CANALS, CTSARE, CAUSWY, CTNARE, CHKPNT, CGUSTA, COALNE, CONZNE,
+        COSARE, CTRPNT, CONVYR, CRANES, CURENT, CUSZNE, DAMCON, DAYMAR, DWRTCL, DWRTPT, DEPARE, DEPCNT, DISMAR, DOCARE, DRGARE, DRYDOC,
+        DMPGRD, DYKCON, EXEZNE, FAIRWY, FNCLNE, FERYRT, FSHZNE, FSHFAC, FSHGRD, FLODOC, FOGSIG, FORSTC, FRPARE, GATCON, GRIDRN, HRBARE,
+        HRBFAC, HULKES, ICEARE, ICNARE, ISTZNE, LAKARE, LNDARE, LNDELV, LNDRGN, LNDMRK, LIGHTS, LITFLT, LITVES, LOCMAG, LOKBSN, LOGPON,
+        MAGVAR, MARCUL, MIPARE, MORFAC, MPAARE, NAVLNE, OBSTRN, OFSPLF, OSPARE, OILBAR, PILPNT, PILBOP, PIPARE, PIPOHD, PIPSOL, PONTON,
+        PRCARE, PRDARE, PYLONS, RADLNE, RADRNG, RADRFL, RADSTA, RTPBCN, RDOCAL, RDOSTA, RAILWY, RAPIDS, RCRTCL, RECTRC, RCTLPT, RSCSTA,
+        RESARE, RETRFL, RIVERS, ROADWY, RUNWAY, SNDWAV, SEAARE, SPLARE, SBDARE, SLCONS, SISTAT, SISTAW, SILTNK, SLOTOP, SLOGRD, SMCFAC,
+        SOUNDG, SPRING, STSLNE, SUBTLN, SWPARE, TESARE, TS_PRH, TS_PNH, TS_PAD, TS_TIS, T_HMON, T_NHMN, T_TIMS, TIDEWY, TOPMAR, TSELNE,
+        TSSBND, TSSCRS, TSSLPT, TSSRON, TSEZNE, TUNNEL, TWRTPT, UWTROC, UNSARE, VEGATN, WATTUR, WATFAL, WEDKLP, WRECKS, TS_FEB, NOTMRK,
+        WTWAXS, WTWPRF, BUNSTA, COMARE, HRBBSN, LOKARE, LKBSPT, PRTARE, REFDMP, TERMNL, TRNBSN, WTWARE, WTWGAG, TISDGE, VEHTRF, EXCNST,
+        LG_SDM, LG_VSP, LITMIN, LITMAJ, VAATON, SEGRAS
+    }
+
+    private static final EnumMap<Obj, Integer> ObjS57 = new EnumMap<>(Obj.class);
+    static {
+        ObjS57.put(Obj.UNKOBJ, 0);
+        ObjS57.put(Obj.AIRARE, 2); ObjS57.put(Obj.ACHBRT, 3); ObjS57.put(Obj.ACHARE, 4); ObjS57.put(Obj.BCNCAR, 5); ObjS57.put(Obj.BCNISD, 6);
+        ObjS57.put(Obj.BCNLAT, 7); ObjS57.put(Obj.BCNSAW, 8); ObjS57.put(Obj.BCNSPP, 9); ObjS57.put(Obj.BERTHS, 10); ObjS57.put(Obj.BRIDGE, 11);
+        ObjS57.put(Obj.BUISGL, 12); ObjS57.put(Obj.BUAARE, 13); ObjS57.put(Obj.BOYCAR, 14); ObjS57.put(Obj.BOYINB, 15); ObjS57.put(Obj.BOYISD, 16);
+        ObjS57.put(Obj.BOYLAT, 17); ObjS57.put(Obj.BOYSAW, 18); ObjS57.put(Obj.BOYSPP, 19); ObjS57.put(Obj.CBLARE, 20); ObjS57.put(Obj.CBLOHD, 21);
+        ObjS57.put(Obj.CBLSUB, 22); ObjS57.put(Obj.CANALS, 23); ObjS57.put(Obj.CTSARE, 25); ObjS57.put(Obj.CAUSWY, 26); ObjS57.put(Obj.CTNARE, 27);
+        ObjS57.put(Obj.CHKPNT, 28); ObjS57.put(Obj.CGUSTA, 29); ObjS57.put(Obj.COALNE, 30); ObjS57.put(Obj.CONZNE, 31); ObjS57.put(Obj.COSARE, 32);
+        ObjS57.put(Obj.CTRPNT, 33); ObjS57.put(Obj.CONVYR, 34); ObjS57.put(Obj.CRANES, 35); ObjS57.put(Obj.CURENT, 36); ObjS57.put(Obj.CUSZNE, 37);
+        ObjS57.put(Obj.DAMCON, 38); ObjS57.put(Obj.DAYMAR, 39); ObjS57.put(Obj.DWRTCL, 40); ObjS57.put(Obj.DWRTPT, 41); ObjS57.put(Obj.DEPARE, 42);
+        ObjS57.put(Obj.DEPCNT, 43); ObjS57.put(Obj.DISMAR, 44); ObjS57.put(Obj.DOCARE, 45); ObjS57.put(Obj.DRGARE, 46); ObjS57.put(Obj.DRYDOC, 47);
+        ObjS57.put(Obj.DMPGRD, 48); ObjS57.put(Obj.DYKCON, 49); ObjS57.put(Obj.EXEZNE, 50); ObjS57.put(Obj.FAIRWY, 51); ObjS57.put(Obj.FNCLNE, 52);
+        ObjS57.put(Obj.FERYRT, 53); ObjS57.put(Obj.FSHZNE, 54); ObjS57.put(Obj.FSHFAC, 55); ObjS57.put(Obj.FSHGRD, 56); ObjS57.put(Obj.FLODOC, 57);
+        ObjS57.put(Obj.FOGSIG, 58); ObjS57.put(Obj.FORSTC, 59); ObjS57.put(Obj.FRPARE, 60); ObjS57.put(Obj.GATCON, 61); ObjS57.put(Obj.GRIDRN, 62);
+        ObjS57.put(Obj.HRBARE, 63); ObjS57.put(Obj.HRBFAC, 64); ObjS57.put(Obj.HULKES, 65); ObjS57.put(Obj.ICEARE, 66); ObjS57.put(Obj.ICNARE, 67);
+        ObjS57.put(Obj.ISTZNE, 68); ObjS57.put(Obj.LAKARE, 69); ObjS57.put(Obj.LNDARE, 71); ObjS57.put(Obj.LNDELV, 72); ObjS57.put(Obj.LNDRGN, 73);
+        ObjS57.put(Obj.LNDMRK, 74); ObjS57.put(Obj.LIGHTS, 75); ObjS57.put(Obj.LITFLT, 76); ObjS57.put(Obj.LITVES, 77); ObjS57.put(Obj.LOCMAG, 78);
+        ObjS57.put(Obj.LOKBSN, 79); ObjS57.put(Obj.LOGPON, 80); ObjS57.put(Obj.MAGVAR, 81); ObjS57.put(Obj.MARCUL, 82); ObjS57.put(Obj.MIPARE, 83);
+        ObjS57.put(Obj.MORFAC, 84); ObjS57.put(Obj.NAVLNE, 85); ObjS57.put(Obj.OBSTRN, 86); ObjS57.put(Obj.OFSPLF, 87); ObjS57.put(Obj.OSPARE, 88);
+        ObjS57.put(Obj.OILBAR, 89); ObjS57.put(Obj.PILPNT, 90); ObjS57.put(Obj.PILBOP, 91); ObjS57.put(Obj.PIPARE, 92); ObjS57.put(Obj.PIPOHD, 93);
+        ObjS57.put(Obj.PIPSOL, 94); ObjS57.put(Obj.PONTON, 95); ObjS57.put(Obj.PRCARE, 96); ObjS57.put(Obj.PRDARE, 97); ObjS57.put(Obj.PYLONS, 98);
+        ObjS57.put(Obj.RADLNE, 99); ObjS57.put(Obj.RADRNG, 100); ObjS57.put(Obj.RADRFL, 101); ObjS57.put(Obj.RADSTA, 102); ObjS57.put(Obj.RTPBCN, 103);
+        ObjS57.put(Obj.RDOCAL, 104); ObjS57.put(Obj.RDOSTA, 105); ObjS57.put(Obj.RAILWY, 106); ObjS57.put(Obj.RAPIDS, 107); ObjS57.put(Obj.RCRTCL, 108);
+        ObjS57.put(Obj.RECTRC, 109); ObjS57.put(Obj.RCTLPT, 110); ObjS57.put(Obj.RSCSTA, 111); ObjS57.put(Obj.RESARE, 112); ObjS57.put(Obj.RETRFL, 113);
+        ObjS57.put(Obj.RIVERS, 114); ObjS57.put(Obj.ROADWY, 116); ObjS57.put(Obj.RUNWAY, 117); ObjS57.put(Obj.SNDWAV, 118); ObjS57.put(Obj.SEAARE, 119);
+        ObjS57.put(Obj.SPLARE, 120); ObjS57.put(Obj.SBDARE, 121); ObjS57.put(Obj.SLCONS, 122); ObjS57.put(Obj.SISTAT, 123); ObjS57.put(Obj.SISTAW, 124);
+        ObjS57.put(Obj.SILTNK, 125); ObjS57.put(Obj.SLOTOP, 126); ObjS57.put(Obj.SLOGRD, 127); ObjS57.put(Obj.SMCFAC, 128); ObjS57.put(Obj.SOUNDG, 129);
+        ObjS57.put(Obj.SPRING, 130); ObjS57.put(Obj.STSLNE, 132); ObjS57.put(Obj.SUBTLN, 133); ObjS57.put(Obj.SWPARE, 134); ObjS57.put(Obj.TESARE, 135);
+        ObjS57.put(Obj.TS_PRH, 136); ObjS57.put(Obj.TS_PNH, 137); ObjS57.put(Obj.TS_PAD, 138); ObjS57.put(Obj.TS_TIS, 139); ObjS57.put(Obj.T_HMON, 140);
+        ObjS57.put(Obj.T_NHMN, 141); ObjS57.put(Obj.T_TIMS, 142); ObjS57.put(Obj.TIDEWY, 143); ObjS57.put(Obj.TOPMAR, 144); ObjS57.put(Obj.TSELNE, 145);
+        ObjS57.put(Obj.TSSBND, 146); ObjS57.put(Obj.TSSCRS, 147); ObjS57.put(Obj.TSSLPT, 148); ObjS57.put(Obj.TSSRON, 149); ObjS57.put(Obj.TSEZNE, 150);
+        ObjS57.put(Obj.TUNNEL, 151); ObjS57.put(Obj.TWRTPT, 152); ObjS57.put(Obj.UWTROC, 153); ObjS57.put(Obj.UNSARE, 154); ObjS57.put(Obj.VEGATN, 155);
+        ObjS57.put(Obj.WATTUR, 156); ObjS57.put(Obj.WATFAL, 157); ObjS57.put(Obj.WEDKLP, 158); ObjS57.put(Obj.WRECKS, 159); ObjS57.put(Obj.TS_FEB, 160);
+        ObjS57.put(Obj.MPAARE, 199); ObjS57.put(Obj.M_COVR, 302); ObjS57.put(Obj.M_NSYS, 306); ObjS57.put(Obj.LITMAJ, 74); ObjS57.put(Obj.LITMIN, 90);
+        ObjS57.put(Obj.VAATON, 900); ObjS57.put(Obj.SEGRAS, 901);
+    }
+
+    private static final EnumMap<Obj, Integer> ObjIENC = new EnumMap<>(Obj.class);
+    static {
+        ObjIENC.put(Obj.UNKOBJ, 0);
+        ObjIENC.put(Obj.ACHBRT, 17000); ObjIENC.put(Obj.ACHARE, 17001); ObjIENC.put(Obj.DEPARE, 17003); ObjIENC.put(Obj.DISMAR, 17004); ObjIENC.put(Obj.RESARE, 17005);
+        ObjIENC.put(Obj.SISTAT, 17007); ObjIENC.put(Obj.SISTAW, 17008); ObjIENC.put(Obj.TOPMAR, 17009); ObjIENC.put(Obj.BERTHS, 17010); ObjIENC.put(Obj.BRIDGE, 17011);
+        ObjIENC.put(Obj.CBLOHD, 17012); ObjIENC.put(Obj.FERYRT, 17013); ObjIENC.put(Obj.HRBARE, 17014); ObjIENC.put(Obj.HRBFAC, 17015); ObjIENC.put(Obj.LOKBSN, 17016);
+        ObjIENC.put(Obj.RDOCAL, 17017); ObjIENC.put(Obj.CURENT, 17019); ObjIENC.put(Obj.HULKES, 17020); ObjIENC.put(Obj.PONTON, 17021); ObjIENC.put(Obj.PIPOHD, 17024);
+        ObjIENC.put(Obj.FLODOC, 17025); ObjIENC.put(Obj.CHKPNT, 17027); ObjIENC.put(Obj.BCNLAT, 17028); ObjIENC.put(Obj.BOYLAT, 17029); ObjIENC.put(Obj.CRANES, 17030);
+        ObjIENC.put(Obj.GATCON, 17031); ObjIENC.put(Obj.SLCONS, 17032); ObjIENC.put(Obj.UWTROC, 17033); ObjIENC.put(Obj.CONVYR, 17034); ObjIENC.put(Obj.NOTMRK, 17050);
+        ObjIENC.put(Obj.WTWAXS, 17051); ObjIENC.put(Obj.WTWPRF, 17052); ObjIENC.put(Obj.BUNSTA, 17054); ObjIENC.put(Obj.COMARE, 17055); ObjIENC.put(Obj.HRBBSN, 17056);
+        ObjIENC.put(Obj.LKBSPT, 17058); ObjIENC.put(Obj.PRTARE, 17059); ObjIENC.put(Obj.REFDMP, 17062); ObjIENC.put(Obj.TERMNL, 17064); ObjIENC.put(Obj.TRNBSN, 17065);
+        ObjIENC.put(Obj.WTWARE, 17066); ObjIENC.put(Obj.WTWGAG, 17067); ObjIENC.put(Obj.TISDGE, 17068); ObjIENC.put(Obj.VEHTRF, 17069); ObjIENC.put(Obj.EXCNST, 17070);
+        ObjIENC.put(Obj.LG_SDM, 18001); ObjIENC.put(Obj.LG_VSP, 18002);
+    }
+
+    private static final EnumMap<Obj, String> ObjStr = new EnumMap<>(Obj.class);
+    static {
+        ObjStr.put(Obj.UNKOBJ, ""); ObjStr.put(Obj.AIRARE, "airfield"); ObjStr.put(Obj.ACHBRT, "anchor_berth"); ObjStr.put(Obj.ACHARE, "anchorage");
+        ObjStr.put(Obj.BCNCAR, "beacon_cardinal"); ObjStr.put(Obj.BCNISD, "beacon_isolated_danger"); ObjStr.put(Obj.BCNLAT, "beacon_lateral");
+        ObjStr.put(Obj.BCNSAW, "beacon_safe_water"); ObjStr.put(Obj.BCNSPP, "beacon_special_purpose"); ObjStr.put(Obj.BERTHS, "berth"); ObjStr.put(Obj.BRIDGE, "bridge");
+        ObjStr.put(Obj.BUISGL, "building"); ObjStr.put(Obj.BUAARE, "built-up_area"); ObjStr.put(Obj.BOYCAR, "buoy_cardinal"); ObjStr.put(Obj.BOYINB, "buoy_installation");
+        ObjStr.put(Obj.BOYISD, "buoy_isolated_danger"); ObjStr.put(Obj.BOYLAT, "buoy_lateral"); ObjStr.put(Obj.BOYSAW, "buoy_safe_water");
+        ObjStr.put(Obj.BOYSPP, "buoy_special_purpose"); ObjStr.put(Obj.CBLARE, "cable_area"); ObjStr.put(Obj.CBLOHD, "cable_overhead");
+        ObjStr.put(Obj.CBLSUB, "cable_submarine"); ObjStr.put(Obj.CANALS, "canal"); ObjStr.put(Obj.CTSARE, "cargo_area"); ObjStr.put(Obj.CAUSWY, "causeway");
+        ObjStr.put(Obj.CTNARE, "caution_area"); ObjStr.put(Obj.CHKPNT, "checkpoint"); ObjStr.put(Obj.CGUSTA, "coastguard_station"); ObjStr.put(Obj.COALNE, "coastline");
+        ObjStr.put(Obj.CONZNE, "contiguous_zone"); ObjStr.put(Obj.COSARE, "continental_shelf"); ObjStr.put(Obj.CTRPNT, "control_point");
+        ObjStr.put(Obj.CONVYR, "conveyor"); ObjStr.put(Obj.CRANES, "crane"); ObjStr.put(Obj.CURENT, "current"); ObjStr.put(Obj.CUSZNE, "custom_zone");
+        ObjStr.put(Obj.DAMCON, "dam"); ObjStr.put(Obj.DAYMAR, "daymark"); ObjStr.put(Obj.DWRTCL, "deep_water_route_centreline"); ObjStr.put(Obj.DWRTPT, "deep_water_route");
+        ObjStr.put(Obj.DEPARE, "depth_area"); ObjStr.put(Obj.DEPCNT, "depth_contour"); ObjStr.put(Obj.DISMAR, "distance_mark"); ObjStr.put(Obj.DOCARE, "dock");
+        ObjStr.put(Obj.DRGARE, "dredged_area"); ObjStr.put(Obj.DRYDOC, "dry_dock"); ObjStr.put(Obj.DMPGRD, "dumping_ground"); ObjStr.put(Obj.DYKCON, "dyke");
+        ObjStr.put(Obj.EXEZNE, "exclusive_economic_zone"); ObjStr.put(Obj.FAIRWY, "fairway"); ObjStr.put(Obj.FNCLNE, "wall"); ObjStr.put(Obj.FERYRT, "ferry_route");
+        ObjStr.put(Obj.FSHZNE, "fishery_zone"); ObjStr.put(Obj.FSHFAC, "fishing_facility"); ObjStr.put(Obj.FSHGRD, "fishing_ground"); ObjStr.put(Obj.FLODOC, "floating_dock");
+        ObjStr.put(Obj.FOGSIG, "fog_signal"); ObjStr.put(Obj.FORSTC, "fortified_structure"); ObjStr.put(Obj.FRPARE, "free_port_area"); ObjStr.put(Obj.GATCON, "gate");
+        ObjStr.put(Obj.GRIDRN, "gridiron"); ObjStr.put(Obj.HRBARE, "harbour_area"); ObjStr.put(Obj.HRBFAC, "harbour"); ObjStr.put(Obj.HULKES, "hulk");
+        ObjStr.put(Obj.ICEARE, "ice_area"); ObjStr.put(Obj.ICNARE, "incineration_zone"); ObjStr.put(Obj.ISTZNE, "inshore_traffic_zone"); ObjStr.put(Obj.LAKARE, "lake");
+        ObjStr.put(Obj.LNDARE, "land_area"); ObjStr.put(Obj.LNDELV, "land_elevation"); ObjStr.put(Obj.LNDRGN, "land_region"); ObjStr.put(Obj.LNDMRK, "landmark");
+        ObjStr.put(Obj.LIGHTS, "light"); ObjStr.put(Obj.LITFLT, "light_float"); ObjStr.put(Obj.LITVES, "light_vessel"); ObjStr.put(Obj.LOCMAG, "local_magnetic_anomaly");
+        ObjStr.put(Obj.LOKBSN, "lock_basin"); ObjStr.put(Obj.LOGPON, "log_pond"); ObjStr.put(Obj.MAGVAR, "magnetic_variation"); ObjStr.put(Obj.MARCUL, "marine_farm");
+        ObjStr.put(Obj.MIPARE, "military_area"); ObjStr.put(Obj.MORFAC, "mooring"); ObjStr.put(Obj.NAVLNE, "navigation_line"); ObjStr.put(Obj.OBSTRN, "obstruction");
+        ObjStr.put(Obj.OFSPLF, "platform"); ObjStr.put(Obj.OSPARE, "production_area"); ObjStr.put(Obj.OILBAR, "oil_barrier"); ObjStr.put(Obj.PILPNT, "pile");
+        ObjStr.put(Obj.PILBOP, "pilot_boarding"); ObjStr.put(Obj.PIPARE, "pipeline_area"); ObjStr.put(Obj.PIPOHD, "pipeline_overhead"); ObjStr.put(Obj.PIPSOL, "pipeline_submarine");
+        ObjStr.put(Obj.PONTON, "pontoon"); ObjStr.put(Obj.PRCARE, "precautionary_area"); ObjStr.put(Obj.PRDARE, "land_production_area"); ObjStr.put(Obj.PYLONS, "pylon");
+        ObjStr.put(Obj.RADLNE, "radar_line"); ObjStr.put(Obj.RADRNG, "radar_range"); ObjStr.put(Obj.RADRFL, "radar_reflector"); ObjStr.put(Obj.RADSTA, "radar_station");
+        ObjStr.put(Obj.RTPBCN, "radar_transponder"); ObjStr.put(Obj.RDOCAL, "calling-in_point"); ObjStr.put(Obj.RDOSTA, "radio_station"); ObjStr.put(Obj.RAILWY, "railway");
+        ObjStr.put(Obj.RAPIDS, "rapids"); ObjStr.put(Obj.RCRTCL, "recommended_route_centreline"); ObjStr.put(Obj.RECTRC, "recommended_track");
+        ObjStr.put(Obj.RCTLPT, "recommended_traffic_lane"); ObjStr.put(Obj.RSCSTA, "rescue_station"); ObjStr.put(Obj.RESARE, "restricted_area");
+        ObjStr.put(Obj.RETRFL, "retro_reflector"); ObjStr.put(Obj.RIVERS, "river"); ObjStr.put(Obj.ROADWY, "road"); ObjStr.put(Obj.RUNWAY, "runway");
+        ObjStr.put(Obj.SNDWAV, "sand_waves"); ObjStr.put(Obj.SEAARE, "sea_area"); ObjStr.put(Obj.SPLARE, "seaplane_landing_area"); ObjStr.put(Obj.SBDARE, "seabed_area");
+        ObjStr.put(Obj.SLCONS, "shoreline_construction"); ObjStr.put(Obj.SISTAT, "signal_station_traffic"); ObjStr.put(Obj.SISTAW, "signal_station_warning");
+        ObjStr.put(Obj.SILTNK, "tank"); ObjStr.put(Obj.SLOTOP, "slope_topline"); ObjStr.put(Obj.SLOGRD, "sloping_ground"); ObjStr.put(Obj.SMCFAC, "small_craft_facility");
+        ObjStr.put(Obj.SOUNDG, "sounding"); ObjStr.put(Obj.SPRING, "spring"); ObjStr.put(Obj.STSLNE, "territorial_baseline"); ObjStr.put(Obj.SUBTLN, "submarine_transit_lane");
+        ObjStr.put(Obj.SWPARE, "swept_area"); ObjStr.put(Obj.TESARE, "territorial_area"); ObjStr.put(Obj.TIDEWY, "tideway"); ObjStr.put(Obj.TOPMAR, "topmark");
+        ObjStr.put(Obj.TSELNE, "separation_line"); ObjStr.put(Obj.TSSBND, "separation_boundary"); ObjStr.put(Obj.TSSCRS, "separation_crossing");
+        ObjStr.put(Obj.TSSLPT, "separation_lane"); ObjStr.put(Obj.TSSRON, "separation_roundabout"); ObjStr.put(Obj.TSEZNE, "separation_zone"); ObjStr.put(Obj.TUNNEL, "tunnel");
+        ObjStr.put(Obj.TWRTPT, "two-way_route"); ObjStr.put(Obj.UWTROC, "rock"); ObjStr.put(Obj.UNSARE, "unsurveyed_area"); ObjStr.put(Obj.VEGATN, "vegetation");
+        ObjStr.put(Obj.WATTUR, "water_turbulence"); ObjStr.put(Obj.WATFAL, "waterfall"); ObjStr.put(Obj.WEDKLP, "weed"); ObjStr.put(Obj.WRECKS, "wreck");
+        ObjStr.put(Obj.TS_FEB, "tidal_stream"); ObjStr.put(Obj.NOTMRK, "notice"); ObjStr.put(Obj.WTWAXS, "waterway_axis"); ObjStr.put(Obj.WTWPRF, "waterway_profile");
+        ObjStr.put(Obj.BUNSTA, "bunker_station"); ObjStr.put(Obj.COMARE, "communication_area"); ObjStr.put(Obj.HRBBSN, "harbour_basin"); ObjStr.put(Obj.LOKARE, "lock_area");
+        ObjStr.put(Obj.LKBSPT, "lock_basin_part"); ObjStr.put(Obj.PRTARE, "port_area"); ObjStr.put(Obj.REFDMP, "refuse_dump");
+        ObjStr.put(Obj.TERMNL, "terminal"); ObjStr.put(Obj.TRNBSN, "turning_basin"); ObjStr.put(Obj.WTWARE, "waterway_area"); ObjStr.put(Obj.WTWGAG, "waterway_gauge");
+        ObjStr.put(Obj.TISDGE, "time_schedule"); ObjStr.put(Obj.VEHTRF, "vehicle_transfer"); ObjStr.put(Obj.EXCNST, "exceptional_structure"); ObjStr.put(Obj.MPAARE, "protected_area");
+        ObjStr.put(Obj.LITMAJ, "light_major"); ObjStr.put(Obj.LITMIN, "light_minor"); ObjStr.put(Obj.M_COVR, "coverage"); ObjStr.put(Obj.M_NSYS, "system");
+        ObjStr.put(Obj.VAATON, "virtual_aton"); ObjStr.put(Obj.SEGRAS, "seagrass");
+    }
+
+    private static final HashMap<String, Obj> StrObj = new HashMap<>();
+    static {
+        for (Map.Entry<Obj, String> entry : ObjStr.entrySet()) {
+            if (!entry.getValue().isEmpty())
+                StrObj.put(entry.getValue(), entry.getKey());
+        }
+    }
+
+    public static Obj decodeType(long objl) { // Convert S57 feature code to SCM object enumeration
+        for (Obj obj : ObjS57.keySet()) {
+            if (ObjS57.get(obj) == objl) return obj;
+        }
+        for (Obj obj : ObjIENC.keySet()) {
+            if (ObjIENC.get(obj) == objl) return obj;
+        }
+        return Obj.UNKOBJ;
+    }
+
+    public static long encodeType(Obj type) { // Convert SCM object enumeration to S57 feature code
+        if (ObjS57.containsKey(type))
+            return ObjS57.get(type);
+        else if (ObjIENC.containsKey(type))
+            return ObjIENC.get(type);
+        return 0;
+    }
+
+    public static String stringType(Obj type) { // Convert SCM object enumeration to OSM object string
+        String str = ObjStr.get(type);
+        return str != null ? str : "";
+    }
+
+    public static Obj enumType(String type) { // Convert OSM object string to SCM object enumeration
+        if (type != null && !type.isEmpty() && StrObj.containsKey(type))
+            return StrObj.get(type);
+        else
+            return Obj.UNKOBJ;
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57osm.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57osm.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57osm.java	(revision 36424)
@@ -0,0 +1,253 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+import s57.S57att.Att;
+import s57.S57map.Snode;
+import s57.S57obj.Obj;
+import s57.S57val.CatROD;
+import s57.S57val.Conv;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class S57osm { // OSM to S57 Object/Attribute and Object/Primitive conversions
+    private S57osm() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+
+    static class KeyVal<V> {
+        Obj obj;
+        Att att;
+        Conv conv;
+        V val;
+        KeyVal(Obj o, Att a, Conv c, V v) {
+            obj = o;
+            att = a;
+            conv = c;
+            val = v;
+        }
+    }
+
+    private static final HashMap<String, KeyVal<?>> OSMtags = new HashMap<>();
+    static {
+        OSMtags.put("natural=coastline", new KeyVal<>(Obj.COALNE, Att.UNKATT, null, null)); OSMtags.put("natural=water", new KeyVal<>(Obj.LAKARE, Att.UNKATT, null, null));
+        OSMtags.put("water=river", new KeyVal<>(Obj.RIVERS, Att.UNKATT, null, null)); OSMtags.put("water=canal", new KeyVal<>(Obj.CANALS, Att.UNKATT, null, null));
+        OSMtags.put("waterway=riverbank", new KeyVal<>(Obj.RIVERS, Att.UNKATT, null, null)); OSMtags.put("waterway=dock", new KeyVal<>(Obj.HRBBSN, Att.UNKATT, null, null));
+        OSMtags.put("waterway=lock", new KeyVal<>(Obj.HRBBSN, Att.UNKATT, null, null)); OSMtags.put("landuse=basin", new KeyVal<>(Obj.LAKARE, Att.UNKATT, null, null));
+        OSMtags.put("wetland=tidalflat", new KeyVal<>(Obj.DEPARE, Att.DRVAL2, Conv.F, 0.0)); OSMtags.put("tidal=yes", new KeyVal<>(Obj.DEPARE, Att.DRVAL2, Conv.F, 0.0));
+        OSMtags.put("natural=mud", new KeyVal<>(Obj.DEPARE, Att.UNKATT, null, null)); OSMtags.put("natural=sand", new KeyVal<>(Obj.DEPARE, Att.UNKATT, null, null));
+        OSMtags.put("highway=motorway", new KeyVal<>(Obj.ROADWY, Att.CATROD, Conv.E, CatROD.ROD_MWAY)); OSMtags.put("highway=trunk", new KeyVal<>(Obj.ROADWY, Att.CATROD, Conv.E, CatROD.ROD_MAJR));
+        OSMtags.put("highway=primary", new KeyVal<>(Obj.ROADWY, Att.CATROD, Conv.E, CatROD.ROD_MAJR)); OSMtags.put("highway=secondary", new KeyVal<>(Obj.ROADWY, Att.CATROD, Conv.E, CatROD.ROD_MINR));
+        OSMtags.put("highway=tertiary", new KeyVal<>(Obj.ROADWY, Att.CATROD, Conv.E, CatROD.ROD_MINR)); OSMtags.put("highway=residential", new KeyVal<>(Obj.ROADWY, Att.UNKATT, null, null));
+        OSMtags.put("highway=unclassified", new KeyVal<>(Obj.ROADWY, Att.UNKATT, null, null)); OSMtags.put("railway=rail", new KeyVal<>(Obj.RAILWY, Att.UNKATT, null, null));
+        OSMtags.put("man_made=breakwater", new KeyVal<>(Obj.SLCONS, Att.UNKATT, null, null)); OSMtags.put("man_made=groyne", new KeyVal<>(Obj.SLCONS, Att.UNKATT, null, null));
+        OSMtags.put("man_made=pier", new KeyVal<>(Obj.SLCONS, Att.UNKATT, null, null)); OSMtags.put("man_made=jetty", new KeyVal<>(Obj.SLCONS, Att.UNKATT, null, null));
+        OSMtags.put("landuse=industrial", new KeyVal<>(Obj.BUAARE, Att.UNKATT, null, null)); OSMtags.put("landuse=commercial", new KeyVal<>(Obj.BUAARE, Att.UNKATT, null, null));
+        OSMtags.put("landuse=retail", new KeyVal<>(Obj.BUAARE, Att.UNKATT, null, null)); OSMtags.put("landuse=residential", new KeyVal<>(Obj.BUAARE, Att.UNKATT, null, null));
+        OSMtags.put("boundary_type=territorial_waters", new KeyVal<>(Obj.TESARE, Att.UNKATT, null, null));
+    }
+
+    public static void OSMtag(ArrayList<KeyVal<?>> osm, String key, String val) {
+        KeyVal<?> kv = OSMtags.get(key + "=" + val);
+        if (kv != null) {
+            if (kv.conv == Conv.E) {
+                ArrayList<Enum<?>> list = new ArrayList<>();
+                list.add((Enum<?>) kv.val);
+                osm.add(new KeyVal<>(kv.obj, kv.att, kv.conv, list));
+            } else {
+                osm.add(kv);
+            }
+        }
+        KeyVal<?> kvl = null;
+        KeyVal<?> kvd = null;
+        boolean rc = false;
+        boolean rcl = false;
+        for (KeyVal<?> kvx : osm) {
+            if (kvx.obj == Obj.LAKARE) {
+                kvl = kvx;
+            } else if ((kvx.obj == Obj.RIVERS) || (kvx.obj == Obj.CANALS)) {
+                rc = true;
+            }
+            if (kvx.obj == Obj.DEPARE) {
+                kvd = kvx;
+            } else if ((kvx.obj == Obj.RIVERS) || (kvx.obj == Obj.CANALS) || (kvx.obj == Obj.LAKARE)) {
+                rcl = true;
+            }
+        }
+        if (rc && (kvl != null)) {
+            osm.remove(kvl);
+        }
+        if (rcl && (kvd != null)) {
+            osm.remove(kvd);
+        }
+        return;
+    }
+
+    public static void OSMmap(File file, S57map map, boolean bb) throws Exception {
+        try (InputStream in = new FileInputStream(file)) {
+          OSMmap(in, map, bb);
+        }
+    }
+
+    public static void OSMmap(InputStream in, S57map map, boolean bb) throws Exception {
+        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+        Document doc = dBuilder.parse(in);
+
+        OSMmap(doc, map, bb);
+    }
+
+    public static void OSMmap(Document doc, S57map map, boolean bb) throws Exception {
+        double lat = 0;
+        double lon = 0;
+        long id = 0;
+        long ref = 0;
+        String k = "";
+        String v = "";
+        String type = "";
+        String role = "";
+
+        map.nodes.put(1L, new Snode());
+        map.nodes.put(2L, new Snode());
+        map.nodes.put(3L, new Snode());
+        map.nodes.put(4L, new Snode());
+
+        doc.getDocumentElement().normalize();
+        if (!doc.getDocumentElement().getNodeName().equals("osm")) {
+            System.err.println("OSM file format error");
+            System.exit(-1);
+        }
+		NodeList nList = doc.getElementsByTagName("bounds");
+		NamedNodeMap nnmap;
+		if (nList.getLength() != 0) {
+			nnmap = nList.item(0).getAttributes();
+			map.bounds.minlat = Math.toRadians(Double.parseDouble(nnmap.getNamedItem("minlat").getNodeValue()));
+			map.nodes.get(2L).lat = map.bounds.minlat;
+			map.nodes.get(3L).lat = map.bounds.minlat;
+			map.bounds.minlon = Math.toRadians(Double.parseDouble(nnmap.getNamedItem("minlon").getNodeValue()));
+			map.nodes.get(1L).lon = map.bounds.minlon;
+			map.nodes.get(2L).lon = map.bounds.minlon;
+			map.bounds.maxlat = Math.toRadians(Double.parseDouble(nnmap.getNamedItem("maxlat").getNodeValue()));
+			map.nodes.get(1L).lat = map.bounds.maxlat;
+			map.nodes.get(4L).lat = map.bounds.maxlat;
+			map.bounds.maxlon = Math.toRadians(Double.parseDouble(nnmap.getNamedItem("maxlon").getNodeValue()));
+			map.nodes.get(3L).lon = map.bounds.maxlon;
+			map.nodes.get(4L).lon = map.bounds.maxlon;
+		}
+
+        nList = doc.getElementsByTagName("node");
+        int nLen = nList.getLength();
+        for (int i = 0; i < nLen; i++) {
+            Node nNode = nList.item(i);
+            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+            	nnmap = nNode.getAttributes();
+                id = Long.parseLong(nnmap.getNamedItem("id").getNodeValue());
+                lat = Double.parseDouble(nnmap.getNamedItem("lat").getNodeValue());
+                lon = Double.parseDouble(nnmap.getNamedItem("lon").getNodeValue());
+                map.addNode(id, lat, lon);
+                NodeList tList = ((Element)nNode).getElementsByTagName("tag");
+                for (int j = 0; j < tList.getLength(); j++) {
+                    NamedNodeMap ntmap = tList.item(j).getAttributes();
+                    k = ntmap.getNamedItem("k").getNodeValue();
+                    v = ntmap.getNamedItem("v").getNodeValue();
+                    if (!k.isEmpty() && !v.isEmpty()) {
+                        map.addTag(k, v);
+                    }
+                }
+                map.tagsDone(id);
+            }
+        }
+
+        nList = doc.getElementsByTagName("way");
+        nLen = nList.getLength();
+        for (int i = 0; i < nLen; i++) {
+            Node nNode = nList.item(i);
+            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+                nnmap = nNode.getAttributes();
+                id = Long.parseLong(nnmap.getNamedItem("id").getNodeValue());
+                map.addEdge(id);
+                NodeList rList = ((Element)nNode).getElementsByTagName("nd");
+                for (int j = 0; j < rList.getLength(); j++) {
+                    NamedNodeMap nrmap = rList.item(j).getAttributes();
+                    ref = Long.parseLong(nrmap.getNamedItem("ref").getNodeValue());
+                    try {
+                        map.addToEdge(ref);
+                    } catch (Exception e) {
+                        System.err.println("Unknown node in way");
+                        System.exit(-1);
+                    }
+                }
+                NodeList tList = ((Element)nNode).getElementsByTagName("tag");
+                for (int j = 0; j < tList.getLength(); j++) {
+                    NamedNodeMap ntmap = tList.item(j).getAttributes();
+                    k = ntmap.getNamedItem("k").getNodeValue();
+                    v = ntmap.getNamedItem("v").getNodeValue();
+                    if (!k.isEmpty() && !v.isEmpty()) {
+                        map.addTag(k, v);
+                    }
+                }
+                map.tagsDone(id);
+            }
+        }
+
+        nList = doc.getElementsByTagName("relation");
+        nLen = nList.getLength();
+        for (int i = 0; i < nLen; i++) {
+            Node nNode = nList.item(i);
+            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+                nnmap = nNode.getAttributes();
+                id = Long.parseLong(nnmap.getNamedItem("id").getNodeValue());
+                map.addArea(id);
+                NodeList rList = ((Element)nNode).getElementsByTagName("member");
+                for (int j = 0; j < rList.getLength(); j++) {
+                    NamedNodeMap nrmap = rList.item(j).getAttributes();
+                    type = nrmap.getNamedItem("type").getNodeValue();
+                    ref = Long.parseLong(nrmap.getNamedItem("ref").getNodeValue());
+                    role = nrmap.getNamedItem("role").getNodeValue();
+                    if ((role.equals("outer") || role.equals("inner")) && type.equals("way"))
+                        map.addToArea(ref, role.equals("outer"));
+                }
+                NodeList tList = ((Element)nNode).getElementsByTagName("tag");
+                for (int j = 0; j < tList.getLength(); j++) {
+                    NamedNodeMap ntmap = tList.item(j).getAttributes();
+                    k = ntmap.getNamedItem("k").getNodeValue();
+                    v = ntmap.getNamedItem("v").getNodeValue();
+                    if (!k.isEmpty() && !v.isEmpty()) {
+                        map.addTag(k, v);
+                    }
+                }
+                map.tagsDone(id);
+            }
+        }
+
+        map.mapDone();
+        return;
+    }
+
+    public static void OSMmeta(S57map map) {
+        map.addEdge(++map.xref);
+        for (long ref = 0; ref <= 4; ref++) {
+            map.addToEdge((ref == 0) ? 4 : ref);
+        }
+        map.addTag("seamark:type", "coverage");
+        map.addTag("seamark:coverage:category", "coverage");
+        map.tagsDone(map.xref);
+    }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/src/s57/S57val.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/s57/S57val.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/s57/S57val.java	(revision 36424)
@@ -0,0 +1,1699 @@
+// License: GPL. For details, see LICENSE file.
+package s57;
+
+import java.util.ArrayList;
+import java.util.EnumMap;
+
+import s57.S57att.Att;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class S57val { // S57 Attribute values lookup tables & methods
+    private S57val() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+
+    static class S57enum {
+        Integer atvl;
+        String val;
+        S57enum(Integer a, String v) {
+            atvl = a; val = v;
+        }
+    }
+
+    public enum Conv { S, A, L, E, F, I }
+
+    static class S57key {
+        Conv conv;
+        EnumMap<?, ?> map;
+        S57key(Conv c, EnumMap<?, S57enum> m) {
+            conv = c; map = m;
+        }
+    }
+
+    public static class AttVal<V> {
+        public Conv conv;
+        public V val;
+        AttVal(Conv c, V v) {
+            conv = c; val = v;
+        }
+    }
+
+    public enum BcnSHP { BCN_UNKN, BCN_STAK, BCN_WTHY, BCN_TOWR, BCN_LATT, BCN_PILE, BCN_CARN, BCN_BUOY, BCN_POLE, BCN_PRCH, BCN_POST }
+
+    private static final EnumMap<BcnSHP, S57enum> Bcnshp = new EnumMap<>(BcnSHP.class);
+    static {
+        Bcnshp.put(BcnSHP.BCN_UNKN, new S57enum(0, ""));
+        Bcnshp.put(BcnSHP.BCN_STAK, new S57enum(1, "stake")); Bcnshp.put(BcnSHP.BCN_WTHY, new S57enum(2, "withy")); Bcnshp.put(BcnSHP.BCN_TOWR, new S57enum(3, "tower"));
+        Bcnshp.put(BcnSHP.BCN_LATT, new S57enum(4, "lattice")); Bcnshp.put(BcnSHP.BCN_PILE, new S57enum(5, "pile")); Bcnshp.put(BcnSHP.BCN_CARN, new S57enum(6, "cairn"));
+        Bcnshp.put(BcnSHP.BCN_BUOY, new S57enum(7, "buoyant")); Bcnshp.put(BcnSHP.BCN_POLE, new S57enum(1, "pole")); Bcnshp.put(BcnSHP.BCN_PRCH, new S57enum(1, "perch"));
+        Bcnshp.put(BcnSHP.BCN_POST, new S57enum(1, "post"));
+    }
+
+    public enum BuiSHP { BUI_UNKN, BUI_HIRS, BUI_PYRD, BUI_CYLR, BUI_SPHR, BUI_CUBE }
+
+    private static final EnumMap<BuiSHP, S57enum> Buishp = new EnumMap<>(BuiSHP.class);
+    static {
+        Buishp.put(BuiSHP.BUI_UNKN, new S57enum(0, ""));
+        Buishp.put(BuiSHP.BUI_HIRS, new S57enum(5, "high-rise")); Buishp.put(BuiSHP.BUI_PYRD, new S57enum(6, "pyramid")); Buishp.put(BuiSHP.BUI_CYLR, new S57enum(7, "cylindrical"));
+        Buishp.put(BuiSHP.BUI_SPHR, new S57enum(8, "spherical")); Buishp.put(BuiSHP.BUI_CUBE, new S57enum(9, "cubic"));
+    }
+
+    public enum BoySHP { BOY_UNKN, BOY_CONE, BOY_CAN, BOY_SPHR, BOY_PILR, BOY_SPAR, BOY_BARL, BOY_SUPR, BOY_ICE }
+
+    private static final EnumMap<BoySHP, S57enum> Boyshp = new EnumMap<>(BoySHP.class);
+    static {
+        Boyshp.put(BoySHP.BOY_UNKN, new S57enum(0, ""));
+        Boyshp.put(BoySHP.BOY_CONE, new S57enum(1, "conical")); Boyshp.put(BoySHP.BOY_CAN, new S57enum(2, "can")); Boyshp.put(BoySHP.BOY_SPHR, new S57enum(3, "spherical"));
+        Boyshp.put(BoySHP.BOY_PILR, new S57enum(4, "pillar")); Boyshp.put(BoySHP.BOY_SPAR, new S57enum(5, "spar")); Boyshp.put(BoySHP.BOY_BARL, new S57enum(6, "barrel"));
+        Boyshp.put(BoySHP.BOY_SUPR, new S57enum(7, "super-buoy")); Boyshp.put(BoySHP.BOY_ICE, new S57enum(8, "ice_buoy"));
+    }
+
+    public enum CatAIR { AIR_UNKN, AIR_MILA, AIR_CIVA, AIR_MILH, AIR_CIVH, AIR_GLDR, AIR_SMLP, AIR_EMRG, AIR_SAR }
+
+    private static final EnumMap<CatAIR, S57enum> Catair = new EnumMap<>(CatAIR.class);
+    static {
+        Catair.put(CatAIR.AIR_UNKN, new S57enum(0, ""));
+        Catair.put(CatAIR.AIR_MILA, new S57enum(1, "military")); Catair.put(CatAIR.AIR_CIVA, new S57enum(2, "civil")); Catair.put(CatAIR.AIR_MILH, new S57enum(3, "military_heliport"));
+        Catair.put(CatAIR.AIR_CIVH, new S57enum(4, "civil_heliport")); Catair.put(CatAIR.AIR_GLDR, new S57enum(5, "glider")); Catair.put(CatAIR.AIR_SMLP, new S57enum(6, "small_planes"));
+        Catair.put(CatAIR.AIR_EMRG, new S57enum(8, "emergency")); Catair.put(CatAIR.AIR_SAR, new S57enum(9, "sar"));
+    }
+
+    public enum CatACH { ACH_UNKN, ACH_UNRD, ACH_DEEP, ACH_TANK, ACH_EXPL, ACH_QUAR, ACH_SEAP, ACH_SMCF, ACH_SMCM, ACH_H24P, ACH_LTPD, ACH_NPSH, ACH_DRYC, ACH_RAFT, ACH_WAIT, ACH_REPT }
+
+    private static final EnumMap<CatACH, S57enum> Catach = new EnumMap<>(CatACH.class);
+    static {
+        Catach.put(CatACH.ACH_UNKN, new S57enum(0, ""));
+        Catach.put(CatACH.ACH_UNRD, new S57enum(1, "unrestricted")); Catach.put(CatACH.ACH_DEEP, new S57enum(2, "deep_water")); Catach.put(CatACH.ACH_TANK, new S57enum(3, "tanker"));
+        Catach.put(CatACH.ACH_EXPL, new S57enum(4, "explosives")); Catach.put(CatACH.ACH_QUAR, new S57enum(5, "quarantine")); Catach.put(CatACH.ACH_SEAP, new S57enum(6, "seaplane"));
+        Catach.put(CatACH.ACH_SMCF, new S57enum(7, "small_craft")); Catach.put(CatACH.ACH_SMCM, new S57enum(8, "small_craft_mooring")); Catach.put(CatACH.ACH_H24P, new S57enum(9, "24_hour"));
+        Catach.put(CatACH.ACH_LTPD, new S57enum(10, "limited_period")); Catach.put(CatACH.ACH_NPSH, new S57enum(11, "non_pushing")); Catach.put(CatACH.ACH_DRYC, new S57enum(12, "dry_cargo"));
+        Catach.put(CatACH.ACH_RAFT, new S57enum(13, "raft")); Catach.put(CatACH.ACH_WAIT, new S57enum(14, "waiting")); Catach.put(CatACH.ACH_REPT, new S57enum(15, "reported"));
+    }
+
+    public enum CatBRG { BRG_UNKN, BRG_FIXD, BRG_OPEN, BRG_SWNG, BRG_LIFT, BRG_BASC, BRG_PONT, BRG_DRAW, BRG_TRNS, BRG_FOOT, BRG_VIAD, BRG_AQUA, BRG_SUSP }
+
+    private static final EnumMap<CatBRG, S57enum> Catbrg = new EnumMap<>(CatBRG.class); static {
+        Catbrg.put(CatBRG.BRG_UNKN, new S57enum(0, ""));
+        Catbrg.put(CatBRG.BRG_FIXD, new S57enum(1, "fixed")); Catbrg.put(CatBRG.BRG_OPEN, new S57enum(2, "opening")); Catbrg.put(CatBRG.BRG_SWNG, new S57enum(3, "swing"));
+        Catbrg.put(CatBRG.BRG_LIFT, new S57enum(4, "lifting")); Catbrg.put(CatBRG.BRG_BASC, new S57enum(5, "bascule")); Catbrg.put(CatBRG.BRG_PONT, new S57enum(6, "pontoon"));
+        Catbrg.put(CatBRG.BRG_DRAW, new S57enum(7, "drawbridge")); Catbrg.put(CatBRG.BRG_TRNS, new S57enum(8, "transporter")); Catbrg.put(CatBRG.BRG_FOOT, new S57enum(9, "footbridge"));
+        Catbrg.put(CatBRG.BRG_VIAD, new S57enum(10, "viaduct")); Catbrg.put(CatBRG.BRG_AQUA, new S57enum(11, "aqueduct")); Catbrg.put(CatBRG.BRG_SUSP, new S57enum(12, "suspension"));
+    }
+
+    public enum CatBUA { BUA_UNKN, BUA_URBN, BUA_STTL, BUA_VLLG, BUA_TOWN, BUA_CITY, BUA_HOLV }
+
+    private static final EnumMap<CatBUA, S57enum> Catbua = new EnumMap<>(CatBUA.class); static {
+        Catbua.put(CatBUA.BUA_UNKN, new S57enum(0, ""));
+        Catbua.put(CatBUA.BUA_URBN, new S57enum(1, "urban")); Catbua.put(CatBUA.BUA_STTL, new S57enum(2, "settlement")); Catbua.put(CatBUA.BUA_VLLG, new S57enum(3, "village"));
+        Catbua.put(CatBUA.BUA_TOWN, new S57enum(4, "town")); Catbua.put(CatBUA.BUA_CITY, new S57enum(5, "city")); Catbua.put(CatBUA.BUA_HOLV, new S57enum(6, "holiday_village"));
+    }
+
+    public enum CatCBL { CBL_UNKN, CBL_POWR, CBL_TRNS, CBL_TELE, CBL_TGPH, CBL_MOOR, CBL_OPTC, CBL_FERY }
+
+    private static final EnumMap<CatCBL, S57enum> Catcbl = new EnumMap<>(CatCBL.class); static {
+        Catcbl.put(CatCBL.CBL_UNKN, new S57enum(0, ""));
+        Catcbl.put(CatCBL.CBL_POWR, new S57enum(1, "power")); Catcbl.put(CatCBL.CBL_TRNS, new S57enum(3, "transmission")); Catcbl.put(CatCBL.CBL_TELE, new S57enum(4, "telephone"));
+        Catcbl.put(CatCBL.CBL_TGPH, new S57enum(5, "telegraph")); Catcbl.put(CatCBL.CBL_MOOR, new S57enum(6, "mooring")); Catcbl.put(CatCBL.CBL_OPTC, new S57enum(7, "optical"));
+        Catcbl.put(CatCBL.CBL_FERY, new S57enum(8, "ferry"));
+    }
+
+    public enum CatCAN { CAN_UNKN, CAN_TRNS, CAN_DRNG, CAN_IRGN }
+
+    private static final EnumMap<CatCAN, S57enum> Catcan = new EnumMap<>(CatCAN.class); static {
+        Catcan.put(CatCAN.CAN_UNKN, new S57enum(0, ""));
+        Catcan.put(CatCAN.CAN_TRNS, new S57enum(1, "transportation")); Catcan.put(CatCAN.CAN_DRNG, new S57enum(2, "drainage")); Catcan.put(CatCAN.CAN_IRGN, new S57enum(3, "irrigation"));
+    }
+
+    public enum CatCAM { CAM_UNKN, CAM_NORTH, CAM_EAST, CAM_SOUTH, CAM_WEST }
+
+    private static final EnumMap<CatCAM, S57enum> Catcam = new EnumMap<>(CatCAM.class); static {
+        Catcam.put(CatCAM.CAM_UNKN, new S57enum(0, ""));
+        Catcam.put(CatCAM.CAM_NORTH, new S57enum(1, "north")); Catcam.put(CatCAM.CAM_EAST, new S57enum(2, "east"));
+        Catcam.put(CatCAM.CAM_SOUTH, new S57enum(3, "south")); Catcam.put(CatCAM.CAM_WEST, new S57enum(4, "west"));
+    }
+
+    public enum CatCHP { CHP_UNKN, CHP_CSTM, CHP_BRDR }
+
+    private static final EnumMap<CatCHP, S57enum> Catchp = new EnumMap<>(CatCHP.class); static {
+        Catchp.put(CatCHP.CHP_UNKN, new S57enum(0, ""));
+        Catchp.put(CatCHP.CHP_CSTM, new S57enum(1, "customs")); Catchp.put(CatCHP.CHP_BRDR, new S57enum(2, "border"));
+    }
+
+    public enum CatCOA { COA_UNKN, COA_STEP, COA_FLAT, COA_SAND, COA_STON, COA_SHNG, COA_GLCR, COA_MNGV, COA_MRSH, COA_CRRF, COA_ICE, COA_SHEL }
+
+    private static final EnumMap<CatCOA, S57enum> Catcoa = new EnumMap<>(CatCOA.class); static {
+        Catcoa.put(CatCOA.COA_UNKN, new S57enum(0, ""));
+        Catcoa.put(CatCOA.COA_STEP, new S57enum(1, "steep")); Catcoa.put(CatCOA.COA_FLAT, new S57enum(2, "flat")); Catcoa.put(CatCOA.COA_SAND, new S57enum(3, "sandy"));
+        Catcoa.put(CatCOA.COA_STON, new S57enum(4, "stony")); Catcoa.put(CatCOA.COA_SHNG, new S57enum(5, "shingly")); Catcoa.put(CatCOA.COA_GLCR, new S57enum(6, "glacier"));
+        Catcoa.put(CatCOA.COA_MNGV, new S57enum(7, "mangrove")); Catcoa.put(CatCOA.COA_MRSH, new S57enum(8, "marshy")); Catcoa.put(CatCOA.COA_CRRF, new S57enum(9, "coral_reef"));
+        Catcoa.put(CatCOA.COA_ICE, new S57enum(10, "ice")); Catcoa.put(CatCOA.COA_SHEL, new S57enum(11, "shelly"));
+    }
+
+    public enum CatCON { CON_UNKN, CON_AERL, CON_BELT, CON_FLUM, CON_LIFT }
+
+    private static final EnumMap<CatCON, S57enum> Catcon = new EnumMap<>(CatCON.class); static {
+        Catcon.put(CatCON.CON_UNKN, new S57enum(0, ""));
+        Catcon.put(CatCON.CON_AERL, new S57enum(1, "aerial")); Catcon.put(CatCON.CON_BELT, new S57enum(2, "belt"));
+        Catcon.put(CatCON.CON_FLUM, new S57enum(3, "flume")); Catcon.put(CatCON.CON_LIFT, new S57enum(4, "lift"));
+    }
+
+    public enum CatCRN { CRN_UNKN, CRN_NONS, CRN_CONT, CRN_SHRL, CRN_TRAV, CRN_AFRM, CRN_GLTH }
+
+    private static final EnumMap<CatCRN, S57enum> Catcrn = new EnumMap<>(CatCRN.class); static {
+        Catcrn.put(CatCRN.CRN_UNKN, new S57enum(0, ""));
+        Catcrn.put(CatCRN.CRN_NONS, new S57enum(1, "non-specific")); Catcrn.put(CatCRN.CRN_CONT, new S57enum(2, "container")); Catcrn.put(CatCRN.CRN_SHRL, new S57enum(3, "sheerlegs"));
+        Catcrn.put(CatCRN.CRN_TRAV, new S57enum(4, "travelling")); Catcrn.put(CatCRN.CRN_AFRM, new S57enum(5, "a-frame")); Catcrn.put(CatCRN.CRN_GLTH, new S57enum(6, "goliath"));
+    }
+
+    public enum CatCTR { CTR_UNKN, CTR_TRGN, CTR_OBSV, CTR_FIXD, CTR_BMRK, CTR_BDRY, CTR_HORM, CTR_HORS }
+
+    private static final EnumMap<CatCTR, S57enum> Catctr = new EnumMap<>(CatCTR.class); static {
+        Catctr.put(CatCTR.CTR_UNKN, new S57enum(0, ""));
+        Catctr.put(CatCTR.CTR_TRGN, new S57enum(1, "triangulation")); Catctr.put(CatCTR.CTR_OBSV, new S57enum(2, "observation")); Catctr.put(CatCTR.CTR_FIXD, new S57enum(3, "fixed"));
+        Catctr.put(CatCTR.CTR_BMRK, new S57enum(4, "benchmark")); Catctr.put(CatCTR.CTR_BDRY, new S57enum(5, "boundary")); Catctr.put(CatCTR.CTR_HORM, new S57enum(6, "horizontal_main"));
+        Catctr.put(CatCTR.CTR_HORS, new S57enum(7, "horizontal_secondary"));
+    }
+
+    public enum CatDAM { DAM_UNKN, DAM_WEIR, DAM_DAM, DAM_FLDB }
+
+    private static final EnumMap<CatDAM, S57enum> Catdam = new EnumMap<>(CatDAM.class); static {
+        Catdam.put(CatDAM.DAM_UNKN, new S57enum(0, ""));
+        Catdam.put(CatDAM.DAM_WEIR, new S57enum(1, "weir")); Catdam.put(CatDAM.DAM_DAM, new S57enum(2, "dam")); Catdam.put(CatDAM.DAM_FLDB, new S57enum(3, "flood_barrage"));
+    }
+
+    public enum CatDIS { DIS_UNKN, DIS_NONI, DIS_POLE, DIS_BORD, DIS_UKSH }
+
+    private static final EnumMap<CatDIS, S57enum> Catdis = new EnumMap<>(CatDIS.class); static {
+        Catdis.put(CatDIS.DIS_UNKN, new S57enum(0, ""));
+        Catdis.put(CatDIS.DIS_NONI, new S57enum(1, "not_installed")); Catdis.put(CatDIS.DIS_POLE, new S57enum(2, "pole")); Catdis.put(CatDIS.DIS_BORD, new S57enum(3, "board"));
+        Catdis.put(CatDIS.DIS_UKSH, new S57enum(4, "unknown_shape"));
+    }
+
+    public enum CatDOC { DOC_UNKN, DOC_TIDL, DOC_NTDL }
+
+    private static final EnumMap<CatDOC, S57enum> Catdoc = new EnumMap<>(CatDOC.class); static {
+        Catdoc.put(CatDOC.DOC_UNKN, new S57enum(0, ""));
+        Catdoc.put(CatDOC.DOC_TIDL, new S57enum(1, "tidal")); Catdoc.put(CatDOC.DOC_NTDL, new S57enum(2, "non-tidal"));
+    }
+
+    public enum CatDPG { DPG_UNKN, DPG_GENL, DPG_CHEM, DPG_NCLR, DPG_EXPL, DPG_SPIL, DPG_VSSL }
+
+    private static final EnumMap<CatDPG, S57enum> Catdpg = new EnumMap<>(CatDPG.class); static {
+        Catdpg.put(CatDPG.DPG_UNKN, new S57enum(0, ""));
+        Catdpg.put(CatDPG.DPG_GENL, new S57enum(1, "general")); Catdpg.put(CatDPG.DPG_CHEM, new S57enum(2, "chemical")); Catdpg.put(CatDPG.DPG_NCLR, new S57enum(3, "nuclear"));
+        Catdpg.put(CatDPG.DPG_EXPL, new S57enum(4, "explosives")); Catdpg.put(CatDPG.DPG_SPIL, new S57enum(5, "spoil")); Catdpg.put(CatDPG.DPG_VSSL, new S57enum(6, "vessel"));
+    }
+
+    public enum CatFNC { FNC_UNKN, FNC_FENC, FNC_MUIR, FNC_HEDG, FNC_WALL }
+
+    private static final EnumMap<CatFNC, S57enum> Catfnc = new EnumMap<>(CatFNC.class); static {
+        Catfnc.put(CatFNC.FNC_UNKN, new S57enum(0, ""));
+        Catfnc.put(CatFNC.FNC_FENC, new S57enum(1, "fence")); Catfnc.put(CatFNC.FNC_MUIR, new S57enum(2, "muir")); Catfnc.put(CatFNC.FNC_HEDG, new S57enum(3, "hedge"));
+        Catfnc.put(CatFNC.FNC_WALL, new S57enum(4, "wall"));
+    }
+
+    public enum CatFRY { FRY_UNKN, FRY_FREE, FRY_CABL, FRY_ICE, FRY_SWWR, FRY_HISP }
+
+    private static final EnumMap<CatFRY, S57enum> Catfry = new EnumMap<>(CatFRY.class); static {
+        Catfry.put(CatFRY.FRY_UNKN, new S57enum(0, ""));
+        Catfry.put(CatFRY.FRY_FREE, new S57enum(1, "free")); Catfry.put(CatFRY.FRY_CABL, new S57enum(2, "cable")); Catfry.put(CatFRY.FRY_ICE, new S57enum(3, "ice"));
+        Catfry.put(CatFRY.FRY_SWWR, new S57enum(4, "swinging_wire")); Catfry.put(CatFRY.FRY_HISP, new S57enum(5, "hi_speed"));
+    }
+
+    public enum CatFIF { FIF_UNKN, FIF_STAK, FIF_TRAP, FIF_WEIR, FIF_TUNY }
+
+    private static final EnumMap<CatFIF, S57enum> Catfif = new EnumMap<>(CatFIF.class); static {
+        Catfif.put(CatFIF.FIF_UNKN, new S57enum(0, ""));
+        Catfif.put(CatFIF.FIF_STAK, new S57enum(1, "stake")); Catfif.put(CatFIF.FIF_TRAP, new S57enum(2, "trap")); Catfif.put(CatFIF.FIF_WEIR, new S57enum(3, "weir"));
+        Catfif.put(CatFIF.FIF_TUNY, new S57enum(4, "tunny"));
+    }
+
+    public enum CatFOG { FOG_UNKN, FOG_EXPL, FOG_DIA, FOG_SIRN, FOG_NAUT, FOG_REED, FOG_TYPH, FOG_BELL, FOG_WHIS, FOG_GONG, FOG_HORN }
+
+    private static final EnumMap<CatFOG, S57enum> Catfog = new EnumMap<>(CatFOG.class); static {
+        Catfog.put(CatFOG.FOG_UNKN, new S57enum(0, ""));
+        Catfog.put(CatFOG.FOG_EXPL, new S57enum(1, "explosive")); Catfog.put(CatFOG.FOG_DIA, new S57enum(2, "diaphone")); Catfog.put(CatFOG.FOG_SIRN, new S57enum(3, "siren"));
+        Catfog.put(CatFOG.FOG_NAUT, new S57enum(4, "nautophone")); Catfog.put(CatFOG.FOG_REED, new S57enum(5, "reed"));
+        Catfog.put(CatFOG.FOG_TYPH, new S57enum(6, "tyfon")); Catfog.put(CatFOG.FOG_BELL, new S57enum(7, "bell")); Catfog.put(CatFOG.FOG_WHIS, new S57enum(8, "whistle"));
+        Catfog.put(CatFOG.FOG_GONG, new S57enum(9, "gong")); Catfog.put(CatFOG.FOG_HORN, new S57enum(10, "horn"));
+    }
+
+    public enum CatFOR { FOR_UNKN, FOR_CSTL, FOR_FORT, FOR_BTTY, FOR_BKHS, FOR_MTWR, FOR_RDBT, FOR_SUBM, FOR_RMPT }
+
+    private static final EnumMap<CatFOR, S57enum> Catfor = new EnumMap<>(CatFOR.class); static {
+        Catfor.put(CatFOR.FOR_UNKN, new S57enum(0, ""));
+        Catfor.put(CatFOR.FOR_CSTL, new S57enum(1, "castle")); Catfor.put(CatFOR.FOR_FORT, new S57enum(2, "fort")); Catfor.put(CatFOR.FOR_BTTY, new S57enum(3, "battery"));
+        Catfor.put(CatFOR.FOR_BKHS, new S57enum(4, "blockhouse")); Catfor.put(CatFOR.FOR_MTWR, new S57enum(5, "martello_tower")); Catfor.put(CatFOR.FOR_RDBT, new S57enum(6, "redoubt"));
+        Catfor.put(CatFOR.FOR_SUBM, new S57enum(8, "submarine")); Catfor.put(CatFOR.FOR_RMPT, new S57enum(9, "rampart"));
+    }
+
+    public enum CatGAT { GAT_UNKN, GAT_GNRL, GAT_FLBG, GAT_CSSN, GAT_LOCK, GAT_DYKE, GAT_SLUC }
+
+    private static final EnumMap<CatGAT, S57enum> Catgat = new EnumMap<>(CatGAT.class); static {
+        Catgat.put(CatGAT.GAT_UNKN, new S57enum(0, ""));
+        Catgat.put(CatGAT.GAT_GNRL, new S57enum(1, "general")); Catgat.put(CatGAT.GAT_FLBG, new S57enum(2, "flood_barrage")); Catgat.put(CatGAT.GAT_CSSN, new S57enum(3, "caisson"));
+        Catgat.put(CatGAT.GAT_LOCK, new S57enum(4, "lock")); Catgat.put(CatGAT.GAT_DYKE, new S57enum(5, "dyke")); Catgat.put(CatGAT.GAT_SLUC, new S57enum(6, "sluice"));
+    }
+
+    public enum CatHAF { HAF_UNKN, HAF_RORO, HAF_FERY, HAF_FISH, HAF_MRNA, HAF_NAVL, HAF_TNKR, HAF_PSGR, HAF_YARD, HAF_CNTR, HAF_BULK, HAF_SYNC, HAF_STCR, HAF_SVCH, HAF_PLTG,
+        HAF_REPR, HAF_QUAR, HAF_SPLN, HAF_CARG, HAF_OFFS, HAF_SSUP, HAF_MANF }
+
+    private static final EnumMap<CatHAF, S57enum> Cathaf = new EnumMap<>(CatHAF.class); static {
+        Cathaf.put(CatHAF.HAF_UNKN, new S57enum(0, ""));
+        Cathaf.put(CatHAF.HAF_RORO, new S57enum(1, "roro")); Cathaf.put(CatHAF.HAF_FERY, new S57enum(3, "ferry")); Cathaf.put(CatHAF.HAF_FISH, new S57enum(4, "fishing"));
+        Cathaf.put(CatHAF.HAF_MRNA, new S57enum(5, "marina")); Cathaf.put(CatHAF.HAF_NAVL, new S57enum(6, "naval")); Cathaf.put(CatHAF.HAF_TNKR, new S57enum(7, "tanker"));
+        Cathaf.put(CatHAF.HAF_PSGR, new S57enum(8, "passenger")); Cathaf.put(CatHAF.HAF_YARD, new S57enum(9, "shipyard")); Cathaf.put(CatHAF.HAF_CNTR, new S57enum(10, "container"));
+        Cathaf.put(CatHAF.HAF_BULK, new S57enum(11, "bulk")); Cathaf.put(CatHAF.HAF_SYNC, new S57enum(12, "syncrolift")); Cathaf.put(CatHAF.HAF_STCR, new S57enum(13, "straddle_carrier"));
+        Cathaf.put(CatHAF.HAF_SVCH, new S57enum(14, "service")); Cathaf.put(CatHAF.HAF_PLTG, new S57enum(15, "pilotage")); Cathaf.put(CatHAF.HAF_REPR, new S57enum(16, "service_repair"));
+        Cathaf.put(CatHAF.HAF_QUAR, new S57enum(17, "quarantine")); Cathaf.put(CatHAF.HAF_SPLN, new S57enum(18, "seaplane")); Cathaf.put(CatHAF.HAF_CARG, new S57enum(19, "cargo"));
+        Cathaf.put(CatHAF.HAF_OFFS, new S57enum(20, "offshore_support")); Cathaf.put(CatHAF.HAF_OFFS, new S57enum(21, "port_support_base"));
+        Cathaf.put(CatHAF.HAF_MANF, new S57enum(22, "marina_no_facilities"));
+    }
+
+    public enum CatHLK { HLK_UNKN, HLK_REST, HLK_HIST, HLK_MUSM, HLK_ACCM, HLK_BWTR, HLK_CSNO, HLK_TRNG }
+
+    private static final EnumMap<CatHLK, S57enum> Cathlk = new EnumMap<>(CatHLK.class); static {
+        Cathlk.put(CatHLK.HLK_UNKN, new S57enum(0, ""));
+        Cathlk.put(CatHLK.HLK_REST, new S57enum(1, "floating_restaurant")); Cathlk.put(CatHLK.HLK_HIST, new S57enum(2, "historic")); Cathlk.put(CatHLK.HLK_MUSM, new S57enum(3, "museum"));
+        Cathlk.put(CatHLK.HLK_ACCM, new S57enum(4, "accommodation")); Cathlk.put(CatHLK.HLK_BWTR, new S57enum(5, "floating_breakwater")); Cathlk.put(CatHLK.HLK_CSNO, new S57enum(6, "casino_boat"));
+        Cathlk.put(CatHLK.HLK_TRNG, new S57enum(7, "training"));
+    }
+
+    public enum CatICE { ICE_UNKN, ICE_FAST, ICE_SEA, ICE_GRLR, ICE_PANK, ICE_GLAS, ICE_PEAK, ICE_PACK, ICE_POLR }
+
+    private static final EnumMap<CatICE, S57enum> Catice = new EnumMap<>(CatICE.class); static {
+        Catice.put(CatICE.ICE_UNKN, new S57enum(0, ""));
+        Catice.put(CatICE.ICE_FAST, new S57enum(1, "fast")); Catice.put(CatICE.ICE_SEA, new S57enum(2, "sea")); Catice.put(CatICE.ICE_GRLR, new S57enum(3, "growler"));
+        Catice.put(CatICE.ICE_PANK, new S57enum(4, "pancake")); Catice.put(CatICE.ICE_GLAS, new S57enum(5, "glacier")); Catice.put(CatICE.ICE_PEAK, new S57enum(6, "peak"));
+        Catice.put(CatICE.ICE_PACK, new S57enum(7, "pack")); Catice.put(CatICE.ICE_POLR, new S57enum(8, "polar"));
+    }
+
+    public enum CatINB { INB_UNKN, INB_CALM, INB_SBM }
+
+    private static final EnumMap<CatINB, S57enum> Catinb = new EnumMap<>(CatINB.class); static {
+        Catinb.put(CatINB.INB_UNKN, new S57enum(0, "")); Catinb.put(CatINB.INB_CALM, new S57enum(1, "calm")); Catinb.put(CatINB.INB_SBM, new S57enum(2, "sbm"));
+    }
+
+    public enum CatLND { LND_UNKN, LND_FEN, LND_MRSH, LND_BOG, LND_HTHL, LND_MNTN, LND_LOWL, LND_CNYN, LND_PDDY, LND_AGRI, LND_SVNA, LND_PARK, LND_SWMP, LND_LSLD, LND_LAVA,
+        LND_SLTP, LND_MORN, LND_CRTR, LND_CAVE, LND_PINCL, LND_CAY, LND_WADI }
+
+    private static final EnumMap<CatLND, S57enum> Catlnd = new EnumMap<>(CatLND.class); static {
+        Catlnd.put(CatLND.LND_UNKN, new S57enum(0, ""));
+        Catlnd.put(CatLND.LND_FEN, new S57enum(1, "fen")); Catlnd.put(CatLND.LND_MRSH, new S57enum(2, "marsh")); Catlnd.put(CatLND.LND_BOG, new S57enum(3, "bog"));
+        Catlnd.put(CatLND.LND_HTHL, new S57enum(4, "heathland")); Catlnd.put(CatLND.LND_MNTN, new S57enum(5, "mountain")); Catlnd.put(CatLND.LND_LOWL, new S57enum(6, "lowlands"));
+        Catlnd.put(CatLND.LND_CNYN, new S57enum(7, "canyon")); Catlnd.put(CatLND.LND_PDDY, new S57enum(8, "paddy")); Catlnd.put(CatLND.LND_AGRI, new S57enum(9, "agricultural"));
+        Catlnd.put(CatLND.LND_SVNA, new S57enum(10, "savanna")); Catlnd.put(CatLND.LND_PARK, new S57enum(11, "parkland")); Catlnd.put(CatLND.LND_SWMP, new S57enum(12, "swamp"));
+        Catlnd.put(CatLND.LND_LSLD, new S57enum(13, "landslide")); Catlnd.put(CatLND.LND_LAVA, new S57enum(14, "lava")); Catlnd.put(CatLND.LND_SLTP, new S57enum(15, "salt_pan"));
+        Catlnd.put(CatLND.LND_MORN, new S57enum(16, "moraine")); Catlnd.put(CatLND.LND_CRTR, new S57enum(17, "crater")); Catlnd.put(CatLND.LND_CAVE, new S57enum(18, "cave"));
+        Catlnd.put(CatLND.LND_PINCL, new S57enum(19, "rock_pinnacle")); Catlnd.put(CatLND.LND_CAY, new S57enum(20, "cay")); Catlnd.put(CatLND.LND_WADI, new S57enum(21, "wadi"));
+    }
+
+    public enum CatLMK { LMK_UNKN, LMK_CARN, LMK_CMTY, LMK_CHMY, LMK_DISH, LMK_FLAG, LMK_FLAR, LMK_MAST, LMK_WNDS, LMK_MNMT, LMK_CLMN, LMK_MEML, LMK_OBLK, LMK_STAT, LMK_CROS,
+        LMK_DOME, LMK_RADR, LMK_TOWR, LMK_WNDM, LMK_WNDG, LMK_SPIR, LMK_BLDR, LMK_TRIM, LMK_BNDM, LMK_OBSW, LMK_TORL }
+
+    private static final EnumMap<CatLMK, S57enum> Catlmk = new EnumMap<>(CatLMK.class); static {
+        Catlmk.put(CatLMK.LMK_UNKN, new S57enum(0, ""));
+        Catlmk.put(CatLMK.LMK_CARN, new S57enum(1, "cairn")); Catlmk.put(CatLMK.LMK_CMTY, new S57enum(2, "cemetery")); Catlmk.put(CatLMK.LMK_CHMY, new S57enum(3, "chimney"));
+        Catlmk.put(CatLMK.LMK_DISH, new S57enum(4, "dish_aerial")); Catlmk.put(CatLMK.LMK_FLAG, new S57enum(5, "flagstaff")); Catlmk.put(CatLMK.LMK_FLAR, new S57enum(6, "flare_stack"));
+        Catlmk.put(CatLMK.LMK_MAST, new S57enum(7, "mast")); Catlmk.put(CatLMK.LMK_WNDS, new S57enum(8, "windsock")); Catlmk.put(CatLMK.LMK_MNMT, new S57enum(9, "monument"));
+        Catlmk.put(CatLMK.LMK_CLMN, new S57enum(10, "column")); Catlmk.put(CatLMK.LMK_MEML, new S57enum(11, "memorial")); Catlmk.put(CatLMK.LMK_OBLK, new S57enum(12, "obelisk"));
+        Catlmk.put(CatLMK.LMK_STAT, new S57enum(13, "statue")); Catlmk.put(CatLMK.LMK_CROS, new S57enum(14, "cross")); Catlmk.put(CatLMK.LMK_DOME, new S57enum(15, "dome"));
+        Catlmk.put(CatLMK.LMK_RADR, new S57enum(16, "radar_scanner")); Catlmk.put(CatLMK.LMK_TOWR, new S57enum(17, "tower")); Catlmk.put(CatLMK.LMK_WNDM, new S57enum(18, "windmill"));
+        Catlmk.put(CatLMK.LMK_WNDG, new S57enum(19, "windmotor")); Catlmk.put(CatLMK.LMK_SPIR, new S57enum(20, "spire")); Catlmk.put(CatLMK.LMK_BLDR, new S57enum(21, "boulder"));
+        Catlmk.put(CatLMK.LMK_TRIM, new S57enum(22, "triangulation_mark")); Catlmk.put(CatLMK.LMK_BNDM, new S57enum(23, "boundary_mark"));
+        Catlmk.put(CatLMK.LMK_OBSW, new S57enum(24, "observation_wheel")); Catlmk.put(CatLMK.LMK_TORL, new S57enum(25, "toril"));
+    }
+
+    public enum CatLAM { LAM_UNKN, LAM_PORT, LAM_STBD, LAM_PCST, LAM_PCPT, LAM_WWLT, LAM_WWRT, LAM_CHLT, LAM_CHRT, LAM_WWSN, LAM_CHSN, LAM_CHRB, LAM_CHLB, LAM_CRRT, LAM_CRLT,
+        LAM_DRLT, LAM_DRRT, LAM_TOLT, LAM_TPRT, LAM_JBRT, LAM_JNLT, LAM_HBRT, LAM_HBLT, LAM_BRGP, LAM_LKRT, LAM_LKLT, LAM_CHBK, LAM_CNBK }
+
+    private static final EnumMap<CatLAM, S57enum> Catlam = new EnumMap<>(CatLAM.class); static {
+        Catlam.put(CatLAM.LAM_UNKN, new S57enum(0, ""));
+        Catlam.put(CatLAM.LAM_PORT, new S57enum(1, "port")); Catlam.put(CatLAM.LAM_STBD, new S57enum(2, "starboard")); Catlam.put(CatLAM.LAM_PCST, new S57enum(3, "preferred_channel_starboard"));
+        Catlam.put(CatLAM.LAM_PCPT, new S57enum(4, "preferred_channel_port")); Catlam.put(CatLAM.LAM_WWRT, new S57enum(5, "waterway_right")); Catlam.put(CatLAM.LAM_WWLT, new S57enum(6, "waterway_left"));
+        Catlam.put(CatLAM.LAM_CHRT, new S57enum(7, "channel_right")); Catlam.put(CatLAM.LAM_CHLT, new S57enum(8, "channel_left")); Catlam.put(CatLAM.LAM_WWSN, new S57enum(9, "waterway_separation"));
+        Catlam.put(CatLAM.LAM_CHSN, new S57enum(10, "channel_separation")); Catlam.put(CatLAM.LAM_CHRB, new S57enum(11, "channel_right_bank")); Catlam.put(CatLAM.LAM_CHLB, new S57enum(12, "channel_left_bank"));
+        Catlam.put(CatLAM.LAM_CRRT, new S57enum(13, "crossover_right")); Catlam.put(CatLAM.LAM_CRLT, new S57enum(14, "crossover_left")); Catlam.put(CatLAM.LAM_DRLT, new S57enum(15, "danger_right"));
+        Catlam.put(CatLAM.LAM_DRRT, new S57enum(16, "danger_left")); Catlam.put(CatLAM.LAM_TOLT, new S57enum(17, "turnoff_right")); Catlam.put(CatLAM.LAM_TPRT, new S57enum(18, "turnoff_left"));
+        Catlam.put(CatLAM.LAM_JBRT, new S57enum(19, "junction_right")); Catlam.put(CatLAM.LAM_JNLT, new S57enum(20, "junction_left")); Catlam.put(CatLAM.LAM_HBRT, new S57enum(21, "harbour_right"));
+        Catlam.put(CatLAM.LAM_HBLT, new S57enum(22, "harbour_left")); Catlam.put(CatLAM.LAM_BRGP, new S57enum(23, "bridge_pier")); Catlam.put(CatLAM.LAM_LKRT, new S57enum(24, "lake_right"));
+        Catlam.put(CatLAM.LAM_LKLT, new S57enum(25, "lake_left")); Catlam.put(CatLAM.LAM_CHBK, new S57enum(26, "change_bank")); Catlam.put(CatLAM.LAM_CNBK, new S57enum(27, "continue_bank"));
+    }
+
+    public enum CatLIT { LIT_UNKN, LIT_DIR, LIT_LEAD, LIT_AERO, LIT_AIR, LIT_FOG, LIT_FLDL, LIT_STRP, LIT_SUBS, LIT_SPOT, LIT_FRNT, LIT_REAR, LIT_LOWR, LIT_UPPR, LIT_MOIR, LIT_EMRG, LIT_BRNG, LIT_HORI, LIT_VERT }
+
+    private static final EnumMap<CatLIT, S57enum> Catlit = new EnumMap<>(CatLIT.class); static {
+        Catlit.put(CatLIT.LIT_UNKN, new S57enum(0, ""));
+        Catlit.put(CatLIT.LIT_DIR, new S57enum(1, "directional")); Catlit.put(CatLIT.LIT_LEAD, new S57enum(4, "leading")); Catlit.put(CatLIT.LIT_AERO, new S57enum(5, "aero"));
+        Catlit.put(CatLIT.LIT_AIR, new S57enum(6, "air_obstruction")); Catlit.put(CatLIT.LIT_FOG, new S57enum(7, "fog_detector")); Catlit.put(CatLIT.LIT_FLDL, new S57enum(8, "floodlight"));
+        Catlit.put(CatLIT.LIT_STRP, new S57enum(9, "strip_light")); Catlit.put(CatLIT.LIT_SUBS, new S57enum(10, "subsidiary")); Catlit.put(CatLIT.LIT_SPOT, new S57enum(11, "spotlight"));
+        Catlit.put(CatLIT.LIT_FRNT, new S57enum(12, "front")); Catlit.put(CatLIT.LIT_REAR, new S57enum(13, "rear")); Catlit.put(CatLIT.LIT_LOWR, new S57enum(14, "lower"));
+        Catlit.put(CatLIT.LIT_UPPR, new S57enum(15, "upper")); Catlit.put(CatLIT.LIT_MOIR, new S57enum(16, "moire")); Catlit.put(CatLIT.LIT_EMRG, new S57enum(17, "emergency"));
+        Catlit.put(CatLIT.LIT_BRNG, new S57enum(18, "bearing")); Catlit.put(CatLIT.LIT_HORI, new S57enum(19, "horizontal")); Catlit.put(CatLIT.LIT_VERT, new S57enum(20, "vertical"));
+    }
+
+    public enum CatMFA { MFA_UNKN, MFA_CRST, MFA_OYMS, MFA_FISH, MFA_SEAW, MFA_PRLC }
+
+    private static final EnumMap<CatMFA, S57enum> Catmfa = new EnumMap<>(CatMFA.class); static {
+        Catmfa.put(CatMFA.MFA_UNKN, new S57enum(0, ""));
+        Catmfa.put(CatMFA.MFA_CRST, new S57enum(1, "crustaceans")); Catmfa.put(CatMFA.MFA_OYMS, new S57enum(2, "oysters_mussels")); Catmfa.put(CatMFA.MFA_FISH, new S57enum(3, "fish"));
+        Catmfa.put(CatMFA.MFA_SEAW, new S57enum(4, "seaweed")); Catmfa.put(CatMFA.MFA_PRLC, new S57enum(5, "pearl_culture"));
+    }
+
+    public enum CatMPA { MPA_UNKN, MPA_PRCT, MPA_TRPD, MPA_SUBM, MPA_FIRG, MPA_MINL, MPA_SMLA }
+
+    private static final EnumMap<CatMPA, S57enum> Catmpa = new EnumMap<>(CatMPA.class); static {
+        Catmpa.put(CatMPA.MPA_UNKN, new S57enum(0, ""));
+        Catmpa.put(CatMPA.MPA_PRCT, new S57enum(1, "practice")); Catmpa.put(CatMPA.MPA_TRPD, new S57enum(2, "torpedo")); Catmpa.put(CatMPA.MPA_SUBM, new S57enum(3, "submarine"));
+        Catmpa.put(CatMPA.MPA_FIRG, new S57enum(4, "firing")); Catmpa.put(CatMPA.MPA_MINL, new S57enum(5, "mine-laying")); Catmpa.put(CatMPA.MPA_SMLA, new S57enum(6, "small_arms"));
+    }
+
+    public enum CatMOR { MOR_UNKN, MOR_DLPN, MOR_DDPN, MOR_BLRD, MOR_WALL, MOR_PILE, MOR_CHAN, MOR_BUOY, MOR_SHRP, MOR_AUTO, MOR_POST, MOR_WIRE, MOR_CABL, MOR_TROT }
+
+    private static final EnumMap<CatMOR, S57enum> Catmor = new EnumMap<>(CatMOR.class); static {
+        Catmor.put(CatMOR.MOR_UNKN, new S57enum(0, ""));
+        Catmor.put(CatMOR.MOR_DLPN, new S57enum(1, "dolphin")); Catmor.put(CatMOR.MOR_DDPN, new S57enum(2, "deviation_dolphin")); Catmor.put(CatMOR.MOR_BLRD, new S57enum(3, "bollard"));
+        Catmor.put(CatMOR.MOR_WALL, new S57enum(4, "wall")); Catmor.put(CatMOR.MOR_PILE, new S57enum(5, "pile")); Catmor.put(CatMOR.MOR_CHAN, new S57enum(6, "chain"));
+        Catmor.put(CatMOR.MOR_BUOY, new S57enum(7, "buoy")); Catmor.put(CatMOR.MOR_SHRP, new S57enum(8, "shore_ropes")); Catmor.put(CatMOR.MOR_AUTO, new S57enum(9, "automatic"));
+        Catmor.put(CatMOR.MOR_POST, new S57enum(10, "post")); Catmor.put(CatMOR.MOR_WIRE, new S57enum(11, "wire")); Catmor.put(CatMOR.MOR_CABL, new S57enum(12, "cable"));
+        Catmor.put(CatMOR.MOR_TROT, new S57enum(12, "trot"));
+    }
+
+    public enum CatNAV { NAV_UNKN, NAV_CLRG, NAV_TRST, NAV_LDNG }
+
+    private static final EnumMap<CatNAV, S57enum> Catnav = new EnumMap<>(CatNAV.class); static {
+        Catnav.put(CatNAV.NAV_UNKN, new S57enum(0, ""));
+        Catnav.put(CatNAV.NAV_CLRG, new S57enum(1, "clearing")); Catnav.put(CatNAV.NAV_TRST, new S57enum(2, "transit")); Catnav.put(CatNAV.NAV_LDNG, new S57enum(3, "leading"));
+    }
+
+    public enum CatOBS { OBS_UNKN, OBS_STMP, OBS_WELH, OBS_DIFF, OBS_CRIB, OBS_FHVN, OBS_FLAR, OBS_FLGD, OBS_ICEB, OBS_GTKL, OBS_BOOM, OBS_UWTB, OBS_TPLT, OBS_WEND, OBS_UWAS,
+        OBS_REEF, OBS_MNFD, OBS_PNGO, OBS_RPLT, OBS_SCII, OBS_TURB }
+
+    private static final EnumMap<CatOBS, S57enum> Catobs = new EnumMap<>(CatOBS.class); static {
+        Catobs.put(CatOBS.OBS_UNKN, new S57enum(0, ""));
+        Catobs.put(CatOBS.OBS_STMP, new S57enum(1, "stump")); Catobs.put(CatOBS.OBS_WELH, new S57enum(2, "wellhead")); Catobs.put(CatOBS.OBS_DIFF, new S57enum(3, "diffuser"));
+        Catobs.put(CatOBS.OBS_CRIB, new S57enum(4, "crib")); Catobs.put(CatOBS.OBS_FHVN, new S57enum(5, "fish_haven")); Catobs.put(CatOBS.OBS_FLAR, new S57enum(6, "foul_area"));
+        Catobs.put(CatOBS.OBS_FLGD, new S57enum(7, "foul_ground")); Catobs.put(CatOBS.OBS_ICEB, new S57enum(8, "ice_boom")); Catobs.put(CatOBS.OBS_GTKL, new S57enum(9, "ground_tackle"));
+        Catobs.put(CatOBS.OBS_BOOM, new S57enum(10, "boom")); Catobs.put(CatOBS.OBS_UWTB, new S57enum(11, "underwater_turbine")); Catobs.put(CatOBS.OBS_TPLT, new S57enum(12, "template"));
+        Catobs.put(CatOBS.OBS_WEND, new S57enum(13, "wave_energy_device")); Catobs.put(CatOBS.OBS_UWAS, new S57enum(14, "subsurface_data")); Catobs.put(CatOBS.OBS_REEF, new S57enum(15, "artificial_reef"));
+        Catobs.put(CatOBS.OBS_MNFD, new S57enum(16, "manifold")); Catobs.put(CatOBS.OBS_PNGO, new S57enum(17, "submerged_pingo")); Catobs.put(CatOBS.OBS_RPLT, new S57enum(18, "platform_remains"));
+        Catobs.put(CatOBS.OBS_SCII, new S57enum(19, "scientific_instrument")); Catobs.put(CatOBS.OBS_TURB, new S57enum(20, "underwater_turbine"));
+    }
+
+    public enum CatOFP { OFP_UNKN, OFP_OIL, OFP_PROD, OFP_OBS, OFP_ALP, OFP_SALM, OFP_MOOR, OFP_AISL, OFP_FPSO, OFP_ACCN, OFP_NCCB, OFP_FOTK }
+
+    private static final EnumMap<CatOFP, S57enum> Catofp = new EnumMap<>(CatOFP.class); static {
+        Catofp.put(CatOFP.OFP_UNKN, new S57enum(0, ""));
+        Catofp.put(CatOFP.OFP_OIL, new S57enum(1, "oil")); Catofp.put(CatOFP.OFP_PROD, new S57enum(2, "production")); Catofp.put(CatOFP.OFP_OBS, new S57enum(3, "observation"));
+        Catofp.put(CatOFP.OFP_ALP, new S57enum(4, "alp")); Catofp.put(CatOFP.OFP_SALM, new S57enum(5, "salm")); Catofp.put(CatOFP.OFP_MOOR, new S57enum(6, "mooring"));
+        Catofp.put(CatOFP.OFP_AISL, new S57enum(7, "artificial_island")); Catofp.put(CatOFP.OFP_FPSO, new S57enum(8, "fpso")); Catofp.put(CatOFP.OFP_ACCN, new S57enum(9, "accommodation"));
+        Catofp.put(CatOFP.OFP_NCCB, new S57enum(10, "nccb")); Catofp.put(CatOFP.OFP_FOTK, new S57enum(11, "floating_oil_tank"));
+    }
+
+    public enum CatOLB { OLB_UNKN, OLB_RETN, OLB_FLTG }
+
+    private static final EnumMap<CatOLB, S57enum> Catolb = new EnumMap<>(CatOLB.class); static {
+        Catolb.put(CatOLB.OLB_UNKN, new S57enum(0, ""));
+        Catolb.put(CatOLB.OLB_RETN, new S57enum(1, "retention")); Catolb.put(CatOLB.OLB_FLTG, new S57enum(2, "floating"));
+    }
+
+    public enum CatOPA { OPA_UNKN, OPA_WIND, OPA_WAVE, OPA_CURF, OPA_TANK, OPA_EXTR }
+
+    private static final EnumMap<CatOPA, S57enum> Catopa = new EnumMap<>(CatOPA.class); static {
+        Catopa.put(CatOPA.OPA_UNKN, new S57enum(0, ""));
+        Catopa.put(CatOPA.OPA_WIND, new S57enum(1, "wind_farm")); Catopa.put(CatOPA.OPA_WAVE, new S57enum(2, "wave_farm"));
+        Catopa.put(CatOPA.OPA_CURF, new S57enum(3, "current_farm")); Catopa.put(CatOPA.OPA_TANK, new S57enum(4, "tank_farm"));
+        Catopa.put(CatOPA.OPA_EXTR, new S57enum(5, "material_extraction"));
+    }
+
+    public enum CatPLE { PLE_UNKN, PLE_STAK, PLE_POST, PLE_TRIP, PLE_PLNG, PLE_PARE, PLE_PIPE }
+
+    private static final EnumMap<CatPLE, S57enum> Catple = new EnumMap<>(CatPLE.class); static {
+        Catple.put(CatPLE.PLE_UNKN, new S57enum(0, ""));
+        Catple.put(CatPLE.PLE_STAK, new S57enum(1, "stake")); Catple.put(CatPLE.PLE_POST, new S57enum(3, "post")); Catple.put(CatPLE.PLE_TRIP, new S57enum(4, "tripodal"));
+        Catple.put(CatPLE.PLE_PLNG, new S57enum(5, "piling")); Catple.put(CatPLE.PLE_PARE, new S57enum(6, "pile_area")); Catple.put(CatPLE.PLE_PIPE, new S57enum(7, "pipe"));
+    }
+
+    public enum CatPIL { PIL_UNKN, PIL_CVSL, PIL_HELI, PIL_SHOR }
+
+    private static final EnumMap<CatPIL, S57enum> Catpil = new EnumMap<>(CatPIL.class); static {
+        Catpil.put(CatPIL.PIL_UNKN, new S57enum(0, ""));
+        Catpil.put(CatPIL.PIL_CVSL, new S57enum(1, "cruising_vessel")); Catpil.put(CatPIL.PIL_HELI, new S57enum(2, "helicopter")); Catpil.put(CatPIL.PIL_SHOR, new S57enum(3, "from_shore"));
+    }
+
+    public enum CatPIP { PIP_UNKN, PIP_OFAL, PIP_ITAK, PIP_SEWR, PIP_BBLR, PIP_SPPL, PIP_BUBL }
+
+    private static final EnumMap<CatPIP, S57enum> Catpip = new EnumMap<>(CatPIP.class); static {
+        Catpip.put(CatPIP.PIP_UNKN, new S57enum(0, ""));
+        Catpip.put(CatPIP.PIP_OFAL, new S57enum(2, "outfall")); Catpip.put(CatPIP.PIP_ITAK, new S57enum(3, "intake")); Catpip.put(CatPIP.PIP_SEWR, new S57enum(4, "sewer"));
+        Catpip.put(CatPIP.PIP_BBLR, new S57enum(5, "bubbler")); Catpip.put(CatPIP.PIP_SPPL, new S57enum(6, "supply")); Catpip.put(CatPIP.PIP_BUBL, new S57enum(7, "bubble"));
+    }
+
+    public enum CatPRA { PRA_UNKN, PRA_QRRY, PRA_MINE, PRA_STPL, PRA_PSTN, PRA_RFNY, PRA_TYRD, PRA_FACT, PRA_TFRM, PRA_WFRM, PRA_SLAG, PRA_PLNT }
+
+    private static final EnumMap<CatPRA, S57enum> Catpra = new EnumMap<>(CatPRA.class); static {
+        Catpra.put(CatPRA.PRA_UNKN, new S57enum(0, ""));
+        Catpra.put(CatPRA.PRA_QRRY, new S57enum(1, "quarry")); Catpra.put(CatPRA.PRA_MINE, new S57enum(2, "mine")); Catpra.put(CatPRA.PRA_STPL, new S57enum(3, "stockpile"));
+        Catpra.put(CatPRA.PRA_PSTN, new S57enum(4, "power_station")); Catpra.put(CatPRA.PRA_RFNY, new S57enum(5, "refinery")); Catpra.put(CatPRA.PRA_TYRD, new S57enum(6, "timber_yard"));
+        Catpra.put(CatPRA.PRA_FACT, new S57enum(7, "factory")); Catpra.put(CatPRA.PRA_TFRM, new S57enum(8, "tank_farm")); Catpra.put(CatPRA.PRA_WFRM, new S57enum(9, "wind_farm"));
+        Catpra.put(CatPRA.PRA_SLAG, new S57enum(10, "slag_heap")); Catpra.put(CatPRA.PRA_PLNT, new S57enum(11, "plant"));
+    }
+
+    public enum CatPYL { PYL_UNKN, PYL_POWR, PYL_TELE, PYL_AERL, PYL_BRDG, PYL_PIER }
+
+    private static final EnumMap<CatPYL, S57enum> Catpyl = new EnumMap<>(CatPYL.class); static {
+        Catpyl.put(CatPYL.PYL_UNKN, new S57enum(0, ""));
+        Catpyl.put(CatPYL.PYL_POWR, new S57enum(1, "power")); Catpyl.put(CatPYL.PYL_TELE, new S57enum(2, "telecom")); Catpyl.put(CatPYL.PYL_AERL, new S57enum(3, "aerial"));
+        Catpyl.put(CatPYL.PYL_BRDG, new S57enum(4, "bridge")); Catpyl.put(CatPYL.PYL_PIER, new S57enum(5, "bridge_pier"));
+    }
+
+    public enum CatRAS { RAS_UNKN, RAS_SURV, RAS_COST }
+
+    private static final EnumMap<CatRAS, S57enum> Catras = new EnumMap<>(CatRAS.class); static {
+        Catras.put(CatRAS.RAS_UNKN, new S57enum(0, ""));
+        Catras.put(CatRAS.RAS_SURV, new S57enum(1, "surveillance")); Catras.put(CatRAS.RAS_COST, new S57enum(2, "coast"));
+    }
+
+    public enum CatRTB { RTB_UNKN, RTB_RAMK, RTB_RACN, RTB_LDG }
+
+    private static final EnumMap<CatRTB, S57enum> Catrtb = new EnumMap<>(CatRTB.class); static {
+        Catrtb.put(CatRTB.RTB_UNKN, new S57enum(0, ""));
+        Catrtb.put(CatRTB.RTB_RAMK, new S57enum(1, "ramark")); Catrtb.put(CatRTB.RTB_RACN, new S57enum(2, "racon")); Catrtb.put(CatRTB.RTB_LDG, new S57enum(3, "leading"));
+    }
+
+    public enum CatROS { ROS_UNKN, ROS_OMNI, ROS_DIRL, ROS_ROTP, ROS_CNSL, ROS_RDF, ROS_QTA, ROS_AERO, ROS_DECA, ROS_LORN, ROS_DGPS, ROS_TORN,
+        ROS_OMGA, ROS_SYLD, ROS_CHKA, ROS_PCOM, ROS_COMB, ROS_FACS, ROS_TIME, ROS_TELE, ROS_AISB, ROS_PAIS }
+
+    private static final EnumMap<CatROS, S57enum> Catros = new EnumMap<>(CatROS.class); static {
+        Catros.put(CatROS.ROS_UNKN, new S57enum(0, ""));
+        Catros.put(CatROS.ROS_OMNI, new S57enum(1, "omnidirectional")); Catros.put(CatROS.ROS_DIRL, new S57enum(2, "directional"));
+        Catros.put(CatROS.ROS_ROTP, new S57enum(3, "rotating_pattern")); Catros.put(CatROS.ROS_CNSL, new S57enum(4, "consol"));
+        Catros.put(CatROS.ROS_RDF, new S57enum(5, "rdf")); Catros.put(CatROS.ROS_QTA, new S57enum(6, "qtg"));
+        Catros.put(CatROS.ROS_AERO, new S57enum(7, "aeronautical")); Catros.put(CatROS.ROS_DECA, new S57enum(8, "decca"));
+        Catros.put(CatROS.ROS_LORN, new S57enum(9, "loran")); Catros.put(CatROS.ROS_DGPS, new S57enum(10, "dgps"));
+        Catros.put(CatROS.ROS_TORN, new S57enum(11, "toran")); Catros.put(CatROS.ROS_OMGA, new S57enum(12, "omega"));
+        Catros.put(CatROS.ROS_SYLD, new S57enum(13, "syledis")); Catros.put(CatROS.ROS_CHKA, new S57enum(14, "chiaka"));
+        Catros.put(CatROS.ROS_PCOM, new S57enum(15, "public_communication")); Catros.put(CatROS.ROS_COMB, new S57enum(16, "commercial_broadcast"));
+        Catros.put(CatROS.ROS_FACS, new S57enum(17, "facsimile")); Catros.put(CatROS.ROS_TIME, new S57enum(18, "time_signal"));
+        Catros.put(CatROS.ROS_TELE, new S57enum(19, "radio_telephone")); Catros.put(CatROS.ROS_AISB, new S57enum(20, "ais_base"));
+        Catros.put(CatROS.ROS_PAIS, new S57enum(21, "ais"));
+    }
+
+    public enum CatRSC { RSC_UNKN, RSC_LIFB, RSC_ROKT, RSC_LBRK, RSC_RFSW, RSC_RFIT, RSC_LBOM, RSC_RDIO, RSC_FSTA, RSC_SPLN, RSC_ACFT, RSC_STUG }
+
+    private static final EnumMap<CatRSC, S57enum> Catrsc = new EnumMap<>(CatRSC.class); static {
+        Catrsc.put(CatRSC.RSC_UNKN, new S57enum(0, ""));
+        Catrsc.put(CatRSC.RSC_LIFB, new S57enum(1, "lifeboat")); Catrsc.put(CatRSC.RSC_ROKT, new S57enum(2, "rocket")); Catrsc.put(CatRSC.RSC_LBRK, new S57enum(3, "lifeboat_rocket"));
+        Catrsc.put(CatRSC.RSC_RFSW, new S57enum(4, "refuge_shipwrecked")); Catrsc.put(CatRSC.RSC_RFIT, new S57enum(5, "refuge_intertidal")); Catrsc.put(CatRSC.RSC_LBOM, new S57enum(6, "lifeboat_on_mooring"));
+        Catrsc.put(CatRSC.RSC_RDIO, new S57enum(7, "radio")); Catrsc.put(CatRSC.RSC_FSTA, new S57enum(8, "first_aid")); Catrsc.put(CatRSC.RSC_SPLN, new S57enum(9, "seaplane"));
+        Catrsc.put(CatRSC.RSC_ACFT, new S57enum(10, "aircraft")); Catrsc.put(CatRSC.RSC_STUG, new S57enum(12, "tug"));
+    }
+
+    public enum CatREA { REA_UNKN, REA_SFTY, REA_NANC, REA_NFSH, REA_NATR, REA_BRDS, REA_GRSV, REA_SEAL, REA_DEGR, REA_MILY, REA_HIST, REA_INST,
+        REA_NASF, REA_STRD, REA_MINE, REA_NDIV, REA_TBAV, REA_PROH, REA_SWIM, REA_WAIT, REA_RSCH, REA_DREG, REA_FSNC, REA_ERES, REA_NWAK, REA_SWNG,
+        REA_WSKI, REA_ESSA, REA_PSSA, REA_DISA, REA_PSAR, REA_CRLS, REA_RECR }
+
+    private static final EnumMap<CatREA, S57enum> Catrea = new EnumMap<>(CatREA.class); static {
+        Catrea.put(CatREA.REA_UNKN, new S57enum(0, ""));
+        Catrea.put(CatREA.REA_SFTY, new S57enum(1, "safety")); Catrea.put(CatREA.REA_NANC, new S57enum(2, "no_anchoring")); Catrea.put(CatREA.REA_NFSH, new S57enum(3, "no_fishing"));
+        Catrea.put(CatREA.REA_NATR, new S57enum(4, "nature_reserve")); Catrea.put(CatREA.REA_BRDS, new S57enum(5, "bird_sanctuary")); Catrea.put(CatREA.REA_GRSV, new S57enum(6, "game_reserve"));
+        Catrea.put(CatREA.REA_SEAL, new S57enum(7, "seal_sanctuary")); Catrea.put(CatREA.REA_DEGR, new S57enum(8, "degaussing_range")); Catrea.put(CatREA.REA_MILY, new S57enum(9, "military"));
+        Catrea.put(CatREA.REA_HIST, new S57enum(10, "historic_wreck")); Catrea.put(CatREA.REA_INST, new S57enum(11, "inshore_traffic")); Catrea.put(CatREA.REA_NASF, new S57enum(12, "navigational_aid_safety"));
+        Catrea.put(CatREA.REA_STRD, new S57enum(13, "stranding_danger")); Catrea.put(CatREA.REA_MINE, new S57enum(14, "minefield")); Catrea.put(CatREA.REA_NDIV, new S57enum(15, "no_diving"));
+        Catrea.put(CatREA.REA_TBAV, new S57enum(16, "to_be_avoided")); Catrea.put(CatREA.REA_PROH, new S57enum(17, "prohibited")); Catrea.put(CatREA.REA_SWIM, new S57enum(18, "swimming"));
+        Catrea.put(CatREA.REA_WAIT, new S57enum(19, "waiting")); Catrea.put(CatREA.REA_RSCH, new S57enum(20, "research")); Catrea.put(CatREA.REA_DREG, new S57enum(21, "dredging"));
+        Catrea.put(CatREA.REA_FSNC, new S57enum(22, "fish_sanctuary")); Catrea.put(CatREA.REA_ERES, new S57enum(23, "ecological_reserve")); Catrea.put(CatREA.REA_NWAK, new S57enum(24, "no_wake"));
+        Catrea.put(CatREA.REA_SWNG, new S57enum(25, "swinging")); Catrea.put(CatREA.REA_WSKI, new S57enum(26, "water_skiing"));
+        Catrea.put(CatREA.REA_ESSA, new S57enum(27, "environmentally_sensitive")); Catrea.put(CatREA.REA_PSSA, new S57enum(28, "particularly_sensitive"));
+        Catrea.put(CatREA.REA_DISA, new S57enum(29, "disengagement")); Catrea.put(CatREA.REA_PSAR, new S57enum(30, "port_security")); Catrea.put(CatREA.REA_CRLS, new S57enum(31, "coral_sactuary"));
+        Catrea.put(CatREA.REA_RECR, new S57enum(32, "recreation"));
+    }
+
+    public enum CatROD { ROD_UNKN, ROD_MWAY, ROD_MAJR, ROD_MINR, ROD_TRAK, ROD_MAJS, ROD_MINS, ROD_CRSG, ROD_PATH }
+
+    private static final EnumMap<CatROD, S57enum> Catrod = new EnumMap<>(CatROD.class); static {
+        Catrod.put(CatROD.ROD_UNKN, new S57enum(0, ""));
+        Catrod.put(CatROD.ROD_MWAY, new S57enum(1, "motorway")); Catrod.put(CatROD.ROD_MAJR, new S57enum(2, "major_road")); Catrod.put(CatROD.ROD_MINR, new S57enum(3, "minor_road"));
+        Catrod.put(CatROD.ROD_TRAK, new S57enum(4, "track")); Catrod.put(CatROD.ROD_MAJS, new S57enum(5, "major_street")); Catrod.put(CatROD.ROD_MINS, new S57enum(6, "minor_street"));
+        Catrod.put(CatROD.ROD_CRSG, new S57enum(7, "crossing")); Catrod.put(CatROD.ROD_PATH, new S57enum(8, "path"));
+    }
+
+    public enum CatRUN { RUN_UNKN, RUN_AERP, RUN_HELI }
+
+    private static final EnumMap<CatRUN, S57enum> Catrun = new EnumMap<>(CatRUN.class); static {
+        Catrun.put(CatRUN.RUN_UNKN, new S57enum(0, "")); Catrun.put(CatRUN.RUN_AERP, new S57enum(1, "aeroplane")); Catrun.put(CatRUN.RUN_HELI, new S57enum(2, "helicopter"));
+    }
+
+    public enum CatSCH { SCH_UNKN, SCH_NORM, SCH_CLSR, SCH_UNMN }
+
+    private static final EnumMap<CatSCH, S57enum> Catsch = new EnumMap<>(CatSCH.class); static {
+        Catsch.put(CatSCH.SCH_UNKN, new S57enum(0, ""));
+        Catsch.put(CatSCH.SCH_NORM, new S57enum(1, "normal")); Catsch.put(CatSCH.SCH_CLSR, new S57enum(2, "closure")); Catsch.put(CatSCH.SCH_UNMN, new S57enum(3, "unmanned"));
+    }
+
+    public enum CatSEA { SEA_UNKN, SEA_GENL, SEA_GAT, SEA_BANK, SEA_DEEP, SEA_BAY, SEA_TRCH, SEA_BASN, SEA_MDFT, SEA_REEF, SEA_LEDG, SEA_CNYN, SEA_NRRW, SEA_SHOL,
+        SEA_KNOL, SEA_RIDG, SEA_SMNT, SEA_PNCL, SEA_APLN, SEA_PLTU, SEA_SPUR, SEA_SHLF, SEA_TRGH, SEA_SDDL, SEA_AHLL, SEA_APRN, SEA_AAPN, SEA_BLND, SEA_CMGN, SEA_CRIS,
+        SEA_ESCT, SEA_FAN, SEA_FZON, SEA_GAP, SEA_GUYT, SEA_HILL, SEA_HOLE, SEA_LEVE, SEA_MVLY, SEA_MOAT, SEA_MTNS, SEA_PEAK, SEA_PVNC, SEA_RISE, SEA_SCNL, SEA_SCHN,
+        SEA_SEDG, SEA_SILL, SEA_SLOP, SEA_TRRC, SEA_VLLY, SEA_CANL, SEA_LAKE, SEA_RIVR, SEA_RECH, SEA_ICAY, SEA_SVOL }
+
+    private static final EnumMap<CatSEA, S57enum> Catsea = new EnumMap<>(CatSEA.class); static {
+        Catsea.put(CatSEA.SEA_UNKN, new S57enum(0, ""));
+        Catsea.put(CatSEA.SEA_GENL, new S57enum(1, "general")); Catsea.put(CatSEA.SEA_GAT, new S57enum(2, "gat")); Catsea.put(CatSEA.SEA_BANK, new S57enum(3, "bank"));
+        Catsea.put(CatSEA.SEA_DEEP, new S57enum(4, "deep")); Catsea.put(CatSEA.SEA_BAY, new S57enum(5, "bay")); Catsea.put(CatSEA.SEA_TRCH, new S57enum(6, "trench"));
+        Catsea.put(CatSEA.SEA_BASN, new S57enum(7, "basin")); Catsea.put(CatSEA.SEA_MDFT, new S57enum(8, "flat")); Catsea.put(CatSEA.SEA_REEF, new S57enum(9, "reef"));
+        Catsea.put(CatSEA.SEA_LEDG, new S57enum(10, "ledge")); Catsea.put(CatSEA.SEA_CNYN, new S57enum(11, "canyon")); Catsea.put(CatSEA.SEA_NRRW, new S57enum(12, "narrows"));
+        Catsea.put(CatSEA.SEA_SHOL, new S57enum(13, "shoal")); Catsea.put(CatSEA.SEA_KNOL, new S57enum(14, "knoll")); Catsea.put(CatSEA.SEA_RIDG, new S57enum(15, "ridge"));
+        Catsea.put(CatSEA.SEA_SMNT, new S57enum(16, "seamount")); Catsea.put(CatSEA.SEA_PNCL, new S57enum(17, "pinnacle")); Catsea.put(CatSEA.SEA_APLN, new S57enum(18, "abyssal_plain"));
+        Catsea.put(CatSEA.SEA_PLTU, new S57enum(19, "plateau")); Catsea.put(CatSEA.SEA_SPUR, new S57enum(20, "spur")); Catsea.put(CatSEA.SEA_SHLF, new S57enum(21, "shelf"));
+        Catsea.put(CatSEA.SEA_TRGH, new S57enum(22, "trough")); Catsea.put(CatSEA.SEA_SDDL, new S57enum(23, "saddle")); Catsea.put(CatSEA.SEA_AHLL, new S57enum(24, "abyssal_hills"));
+        Catsea.put(CatSEA.SEA_APRN, new S57enum(25, "apron")); Catsea.put(CatSEA.SEA_AAPN, new S57enum(26, "archipelagic_apron")); Catsea.put(CatSEA.SEA_BLND, new S57enum(27, "borderland"));
+        Catsea.put(CatSEA.SEA_CMGN, new S57enum(28, "continental_margin")); Catsea.put(CatSEA.SEA_CRIS, new S57enum(29, "continental_rise")); Catsea.put(CatSEA.SEA_ESCT, new S57enum(30, "escarpment"));
+        Catsea.put(CatSEA.SEA_FAN, new S57enum(31, "fan")); Catsea.put(CatSEA.SEA_FZON, new S57enum(32, "fracture_zone")); Catsea.put(CatSEA.SEA_GAP, new S57enum(33, "gap"));
+        Catsea.put(CatSEA.SEA_GUYT, new S57enum(34, "guyot")); Catsea.put(CatSEA.SEA_HILL, new S57enum(35, "hill")); Catsea.put(CatSEA.SEA_HOLE, new S57enum(36, "hole"));
+        Catsea.put(CatSEA.SEA_LEVE, new S57enum(37, "levee")); Catsea.put(CatSEA.SEA_MVLY, new S57enum(38, "median_valley")); Catsea.put(CatSEA.SEA_MOAT, new S57enum(39, "moat"));
+        Catsea.put(CatSEA.SEA_MTNS, new S57enum(40, "mountains")); Catsea.put(CatSEA.SEA_PEAK, new S57enum(41, "peak")); Catsea.put(CatSEA.SEA_PVNC, new S57enum(42, "province"));
+        Catsea.put(CatSEA.SEA_RISE, new S57enum(43, "rise")); Catsea.put(CatSEA.SEA_SCNL, new S57enum(44, "sea_channel")); Catsea.put(CatSEA.SEA_SCHN, new S57enum(45, "seamount_chain"));
+        Catsea.put(CatSEA.SEA_SEDG, new S57enum(46, "shelf-edge")); Catsea.put(CatSEA.SEA_SILL, new S57enum(47, "sill")); Catsea.put(CatSEA.SEA_SLOP, new S57enum(48, "slope"));
+        Catsea.put(CatSEA.SEA_TRRC, new S57enum(49, "terrace")); Catsea.put(CatSEA.SEA_VLLY, new S57enum(50, "valley")); Catsea.put(CatSEA.SEA_CANL, new S57enum(51, "canal"));
+        Catsea.put(CatSEA.SEA_LAKE, new S57enum(52, "lake")); Catsea.put(CatSEA.SEA_RIVR, new S57enum(53, "river")); Catsea.put(CatSEA.SEA_RECH, new S57enum(54, "reach"));
+        Catsea.put(CatSEA.SEA_ICAY, new S57enum(55, "intertidal_cay")); Catsea.put(CatSEA.SEA_SVOL, new S57enum(56, "submarine_volcano"));
+    }
+
+    public enum CatSLC { SLC_UNKN, SLC_BWTR, SLC_GRYN, SLC_MOLE, SLC_PIER, SLC_PPER, SLC_WHRF, SLC_TWAL, SLC_RPRP, SLC_RVMT, SLC_SWAL, SLC_LSTP,
+        SLC_RAMP, SLC_SWAY, SLC_FNDR, SLC_SFWF, SLC_OFWF, SLC_LRMP, SLC_LWAL, SLC_ICEB, SLC_SWIM }
+
+    private static final EnumMap<CatSLC, S57enum> Catslc = new EnumMap<>(CatSLC.class); static {
+        Catslc.put(CatSLC.SLC_UNKN, new S57enum(0, ""));
+        Catslc.put(CatSLC.SLC_BWTR, new S57enum(1, "breakwater")); Catslc.put(CatSLC.SLC_GRYN, new S57enum(2, "groyne")); Catslc.put(CatSLC.SLC_MOLE, new S57enum(3, "mole"));
+        Catslc.put(CatSLC.SLC_PIER, new S57enum(4, "pier")); Catslc.put(CatSLC.SLC_PPER, new S57enum(5, "promenade_pier")); Catslc.put(CatSLC.SLC_WHRF, new S57enum(6, "wharf"));
+        Catslc.put(CatSLC.SLC_TWAL, new S57enum(7, "training_wall")); Catslc.put(CatSLC.SLC_RPRP, new S57enum(8, "rip_rap")); Catslc.put(CatSLC.SLC_RVMT, new S57enum(9, "revetment"));
+        Catslc.put(CatSLC.SLC_SWAL, new S57enum(10, "sea_wall")); Catslc.put(CatSLC.SLC_LSTP, new S57enum(11, "landing_steps")); Catslc.put(CatSLC.SLC_RAMP, new S57enum(12, "ramp"));
+        Catslc.put(CatSLC.SLC_SWAY, new S57enum(13, "slipway")); Catslc.put(CatSLC.SLC_FNDR, new S57enum(14, "fender")); Catslc.put(CatSLC.SLC_SFWF, new S57enum(15, "solid_face_wharf"));
+        Catslc.put(CatSLC.SLC_OFWF, new S57enum(16, "open_face_wharf")); Catslc.put(CatSLC.SLC_LRMP, new S57enum(17, "log_ramp")); Catslc.put(CatSLC.SLC_LWAL, new S57enum(18, "lock_wall"));
+        Catslc.put(CatSLC.SLC_ICEB, new S57enum(19, "ice_breaker")); Catslc.put(CatSLC.SLC_SWIM, new S57enum(20, "swimming"));
+    }
+
+    public enum CatSIT { SIT_UNKN, SIT_PRTC, SIT_PRTE, SIT_IPT, SIT_BRTH, SIT_DOCK, SIT_LOCK, SIT_FLDB, SIT_BRDG, SIT_DRDG, SIT_TCLT, SIT_SPCL, SIT_PLTG, SIT_ONCT }
+
+    private static final EnumMap<CatSIT, S57enum> Catsit = new EnumMap<>(CatSIT.class); static {
+        Catsit.put(CatSIT.SIT_UNKN, new S57enum(0, ""));
+        Catsit.put(CatSIT.SIT_PRTC, new S57enum(1, "port_control")); Catsit.put(CatSIT.SIT_PRTE, new S57enum(2, "port_entry_departure")); Catsit.put(CatSIT.SIT_IPT, new S57enum(3, "ipt"));
+        Catsit.put(CatSIT.SIT_BRTH, new S57enum(4, "berthing")); Catsit.put(CatSIT.SIT_DOCK, new S57enum(5, "dock")); Catsit.put(CatSIT.SIT_LOCK, new S57enum(6, "lock"));
+        Catsit.put(CatSIT.SIT_FLDB, new S57enum(7, "flood_barrage")); Catsit.put(CatSIT.SIT_BRDG, new S57enum(8, "bridge_passage")); Catsit.put(CatSIT.SIT_DRDG, new S57enum(9, "dredging"));
+        Catsit.put(CatSIT.SIT_TCLT, new S57enum(10, "traffic_control")); Catsit.put(CatSIT.SIT_PLTG, new S57enum(11, "pilotage")); Catsit.put(CatSIT.SIT_SPCL, new S57enum(12, "special"));
+        Catsit.put(CatSIT.SIT_ONCT, new S57enum(13, "oncoming_traffic"));
+    }
+
+    public enum CatSIW { SIW_UNKN, SIW_DNGR, SIW_OBST, SIW_CABL, SIW_MILY, SIW_DSTR, SIW_WTHR, SIW_STRM, SIW_ICE, SIW_TIME, SIW_TIDE, SIW_TSTR,
+        SIW_TIDG, SIW_TIDS, SIW_DIVE, SIW_WTLG, SIW_VRCL, SIW_HIWM, SIW_DPTH, SIW_CURR }
+
+    private static final EnumMap<CatSIW, S57enum> Catsiw = new EnumMap<>(CatSIW.class); static {
+        Catsiw.put(CatSIW.SIW_UNKN, new S57enum(0, ""));
+        Catsiw.put(CatSIW.SIW_DNGR, new S57enum(1, "danger")); Catsiw.put(CatSIW.SIW_OBST, new S57enum(2, "maritime_obstruction")); Catsiw.put(CatSIW.SIW_CABL, new S57enum(3, "cable"));
+        Catsiw.put(CatSIW.SIW_MILY, new S57enum(4, "military")); Catsiw.put(CatSIW.SIW_DSTR, new S57enum(5, "distress")); Catsiw.put(CatSIW.SIW_WTHR, new S57enum(6, "weather"));
+        Catsiw.put(CatSIW.SIW_STRM, new S57enum(7, "storm")); Catsiw.put(CatSIW.SIW_ICE, new S57enum(8, "ice")); Catsiw.put(CatSIW.SIW_TIME, new S57enum(9, "time"));
+        Catsiw.put(CatSIW.SIW_TIDE, new S57enum(10, "tide")); Catsiw.put(CatSIW.SIW_TSTR, new S57enum(11, "tidal_stream")); Catsiw.put(CatSIW.SIW_TIDG, new S57enum(12, "tide_gauge"));
+        Catsiw.put(CatSIW.SIW_TIDS, new S57enum(13, "tide_scale")); Catsiw.put(CatSIW.SIW_DIVE, new S57enum(14, "diving")); Catsiw.put(CatSIW.SIW_WTLG, new S57enum(15, "water_level_gauge"));
+        Catsiw.put(CatSIW.SIW_VRCL, new S57enum(16, "vertical_clearance")); Catsiw.put(CatSIW.SIW_HIWM, new S57enum(17, "high_water")); Catsiw.put(CatSIW.SIW_DPTH, new S57enum(18, "depth"));
+        Catsiw.put(CatSIW.SIW_CURR, new S57enum(19, "current"));
+    }
+
+    public enum CatSIL { SIL_UNKN, SIL_SILO, SIL_TANK, SIL_GRNE, SIL_WTRT }
+
+    private static final EnumMap<CatSIL, S57enum> Catsil = new EnumMap<>(CatSIL.class); static {
+        Catsil.put(CatSIL.SIL_UNKN, new S57enum(0, ""));
+        Catsil.put(CatSIL.SIL_SILO, new S57enum(1, "silo")); Catsil.put(CatSIL.SIL_TANK, new S57enum(2, "tank")); Catsil.put(CatSIL.SIL_GRNE, new S57enum(3, "grain_elevator"));
+        Catsil.put(CatSIL.SIL_WTRT, new S57enum(4, "water_tower"));
+    }
+
+    public enum CatSLO { SLO_UNKN, SLO_CUTG, SLO_EMBK, SLO_DUNE, SLO_HILL, SLO_PINO, SLO_CLIF, SLO_SCRE }
+
+    private static final EnumMap<CatSLO, S57enum> Catslo = new EnumMap<>(CatSLO.class); static {
+        Catslo.put(CatSLO.SLO_UNKN, new S57enum(0, ""));
+        Catslo.put(CatSLO.SLO_CUTG, new S57enum(1, "cutting")); Catslo.put(CatSLO.SLO_EMBK, new S57enum(2, "embankment")); Catslo.put(CatSLO.SLO_DUNE, new S57enum(3, "dune"));
+        Catslo.put(CatSLO.SLO_HILL, new S57enum(4, "hill")); Catslo.put(CatSLO.SLO_PINO, new S57enum(5, "pingo")); Catslo.put(CatSLO.SLO_CLIF, new S57enum(6, "cliff"));
+        Catslo.put(CatSLO.SLO_SCRE, new S57enum(7, "scree"));
+    }
+
+    public enum CatSCF { SCF_UNKN, SCF_VBTH, SCF_CLUB, SCF_BHST, SCF_SMKR, SCF_BTYD, SCF_INN, SCF_RSRT, SCF_CHDR, SCF_PROV, SCF_DCTR, SCF_PHRM,
+        SCF_WTRT, SCF_FUEL, SCF_ELEC, SCF_BGAS, SCF_SHWR, SCF_LAUN, SCF_WC, SCF_POST, SCF_TELE, SCF_REFB, SCF_CARP, SCF_BTPK, SCF_CRVN, SCF_CAMP,
+        SCF_PMPO, SCF_EMRT, SCF_SLPW, SCF_VMOR, SCF_SCRB, SCF_PCNC, SCF_MECH, SCF_SECS }
+
+    private static final EnumMap<CatSCF, S57enum> Catscf = new EnumMap<>(CatSCF.class); static {
+        Catscf.put(CatSCF.SCF_UNKN, new S57enum(0, ""));
+        Catscf.put(CatSCF.SCF_VBTH, new S57enum(1, "visitor_berth")); Catscf.put(CatSCF.SCF_CLUB, new S57enum(2, "nautical_club")); Catscf.put(CatSCF.SCF_BHST, new S57enum(3, "boat_hoist"));
+        Catscf.put(CatSCF.SCF_SMKR, new S57enum(4, "sailmaker")); Catscf.put(CatSCF.SCF_BTYD, new S57enum(5, "boatyard")); Catscf.put(CatSCF.SCF_INN, new S57enum(6, "public_inn"));
+        Catscf.put(CatSCF.SCF_RSRT, new S57enum(7, "restaurant")); Catscf.put(CatSCF.SCF_CHDR, new S57enum(8, "chandler")); Catscf.put(CatSCF.SCF_PROV, new S57enum(9, "provisions"));
+        Catscf.put(CatSCF.SCF_DCTR, new S57enum(10, "doctor")); Catscf.put(CatSCF.SCF_PHRM, new S57enum(11, "pharmacy")); Catscf.put(CatSCF.SCF_WTRT, new S57enum(12, "water_tap"));
+        Catscf.put(CatSCF.SCF_FUEL, new S57enum(13, "fuel_station")); Catscf.put(CatSCF.SCF_ELEC, new S57enum(14, "electricity")); Catscf.put(CatSCF.SCF_BGAS, new S57enum(15, "bottle_gas"));
+        Catscf.put(CatSCF.SCF_SHWR, new S57enum(16, "showers")); Catscf.put(CatSCF.SCF_LAUN, new S57enum(17, "laundrette")); Catscf.put(CatSCF.SCF_WC, new S57enum(18, "toilets"));
+        Catscf.put(CatSCF.SCF_POST, new S57enum(19, "post_box")); Catscf.put(CatSCF.SCF_TELE, new S57enum(20, "telephone")); Catscf.put(CatSCF.SCF_REFB, new S57enum(21, "refuse_bin"));
+        Catscf.put(CatSCF.SCF_CARP, new S57enum(22, "car_park")); Catscf.put(CatSCF.SCF_BTPK, new S57enum(23, "boat_trailers_park")); Catscf.put(CatSCF.SCF_CRVN, new S57enum(24, "caravan_site"));
+        Catscf.put(CatSCF.SCF_CAMP, new S57enum(25, "camping_site")); Catscf.put(CatSCF.SCF_PMPO, new S57enum(26, "pump-out")); Catscf.put(CatSCF.SCF_EMRT, new S57enum(27, "emergency_telephone"));
+        Catscf.put(CatSCF.SCF_SLPW, new S57enum(28, "slipway")); Catscf.put(CatSCF.SCF_VMOR, new S57enum(29, "visitors_mooring")); Catscf.put(CatSCF.SCF_SCRB, new S57enum(30, "scrubbing_berth"));
+        Catscf.put(CatSCF.SCF_PCNC, new S57enum(31, "picnic_area")); Catscf.put(CatSCF.SCF_MECH, new S57enum(32, "mechanics_workshop")); Catscf.put(CatSCF.SCF_SECS, new S57enum(33, "security_service"));
+    }
+
+    public enum CatSPM { SPM_UNKN, SPM_FDGA, SPM_TRGT, SPM_MSHP, SPM_DGRG, SPM_BARG, SPM_CABL, SPM_SPLG, SPM_OFAL, SPM_ODAS, SPM_RCDG, SPM_SPLA, SPM_RCZN, SPM_PRVT, SPM_MOOR, SPM_LNBY, SPM_LDNG, SPM_MDST,
+        SPM_NOTC, SPM_TSS, SPM_NANC, SPM_NBRT, SPM_NOTK, SPM_NTWT, SPM_RWAK, SPM_SPDL, SPM_STOP, SPM_WRNG, SPM_SSSN, SPM_RVCL, SPM_MVDT, SPM_RHCL, SPM_SCNT, SPM_BRTH, SPM_OHPC, SPM_CHEG, SPM_TELE, SPM_FCRS,
+        SPM_MTRL, SPM_PLIN, SPM_ANCH, SPM_CLRG, SPM_CTRL, SPM_DIVG, SPM_RBCN, SPM_FGND, SPM_YCHT, SPM_HPRT, SPM_GPS, SPM_SLDG, SPM_NENT, SPM_WRKP, SPM_UKPP, SPM_WELH, SPM_CHSP, SPM_MFRM, SPM_AREF,
+        SPM_ICE, SPM_NATR, SPM_FAD, SPM_WREK, SPM_CUST, SPM_CSWY, SPM_WAVR, SPM_NJET }
+
+    private static final EnumMap<CatSPM, S57enum> Catspm = new EnumMap<>(CatSPM.class); static {
+        Catspm.put(CatSPM.SPM_UNKN, new S57enum(0, ""));
+        Catspm.put(CatSPM.SPM_FDGA, new S57enum(1, "firing_danger_area")); Catspm.put(CatSPM.SPM_TRGT, new S57enum(2, "target")); Catspm.put(CatSPM.SPM_MSHP, new S57enum(3, "marker_ship"));
+        Catspm.put(CatSPM.SPM_DGRG, new S57enum(4, "degaussing_range")); Catspm.put(CatSPM.SPM_BARG, new S57enum(5, "barge")); Catspm.put(CatSPM.SPM_CABL, new S57enum(6, "cable"));
+        Catspm.put(CatSPM.SPM_SPLG, new S57enum(7, "spoil_ground")); Catspm.put(CatSPM.SPM_OFAL, new S57enum(8, "outfall")); Catspm.put(CatSPM.SPM_ODAS, new S57enum(9, "odas"));
+        Catspm.put(CatSPM.SPM_RCDG, new S57enum(10, "recording")); Catspm.put(CatSPM.SPM_SPLA, new S57enum(11, "seaplane_anchorage")); Catspm.put(CatSPM.SPM_RCZN, new S57enum(12, "recreation_zone"));
+        Catspm.put(CatSPM.SPM_PRVT, new S57enum(13, "private")); Catspm.put(CatSPM.SPM_MOOR, new S57enum(14, "mooring")); Catspm.put(CatSPM.SPM_LNBY, new S57enum(15, "lanby"));
+        Catspm.put(CatSPM.SPM_LDNG, new S57enum(16, "leading")); Catspm.put(CatSPM.SPM_MDST, new S57enum(17, "measured_distance")); Catspm.put(CatSPM.SPM_NOTC, new S57enum(18, "notice"));
+        Catspm.put(CatSPM.SPM_TSS, new S57enum(19, "tss")); Catspm.put(CatSPM.SPM_NANC, new S57enum(20, "no_anchoring")); Catspm.put(CatSPM.SPM_NBRT, new S57enum(21, "no_berthing"));
+        Catspm.put(CatSPM.SPM_NOTK, new S57enum(22, "no_overtaking")); Catspm.put(CatSPM.SPM_NTWT, new S57enum(23, "no_two-way_traffic")); Catspm.put(CatSPM.SPM_RWAK, new S57enum(24, "reduced_wake"));
+        Catspm.put(CatSPM.SPM_SPDL, new S57enum(25, "speed_limit")); Catspm.put(CatSPM.SPM_STOP, new S57enum(26, "stop")); Catspm.put(CatSPM.SPM_WRNG, new S57enum(27, "warning"));
+        Catspm.put(CatSPM.SPM_SSSN, new S57enum(28, "sound_ship_siren")); Catspm.put(CatSPM.SPM_RVCL, new S57enum(29, "restricted_vertical_clearance"));
+        Catspm.put(CatSPM.SPM_MVDT, new S57enum(30, "maximum_vessel_draught")); Catspm.put(CatSPM.SPM_RHCL, new S57enum(31, "restricted_horizontal_clearance"));
+        Catspm.put(CatSPM.SPM_SCNT, new S57enum(32, "strong_current")); Catspm.put(CatSPM.SPM_BRTH, new S57enum(33, "berthing")); Catspm.put(CatSPM.SPM_OHPC, new S57enum(34, "overhead_power_cable"));
+        Catspm.put(CatSPM.SPM_CHEG, new S57enum(35, "channel_edge_gradient")); Catspm.put(CatSPM.SPM_TELE, new S57enum(36, "telephone")); Catspm.put(CatSPM.SPM_FCRS, new S57enum(37, "ferry_crossing"));
+        Catspm.put(CatSPM.SPM_MTRL, new S57enum(38, "marine_traffic_lights")); Catspm.put(CatSPM.SPM_PLIN, new S57enum(39, "pipeline")); Catspm.put(CatSPM.SPM_ANCH, new S57enum(40, "anchorage"));
+        Catspm.put(CatSPM.SPM_CLRG, new S57enum(41, "clearing")); Catspm.put(CatSPM.SPM_CTRL, new S57enum(42, "control")); Catspm.put(CatSPM.SPM_DIVG, new S57enum(43, "diving"));
+        Catspm.put(CatSPM.SPM_RBCN, new S57enum(44, "refuge_beacon")); Catspm.put(CatSPM.SPM_FGND, new S57enum(45, "foul_ground")); Catspm.put(CatSPM.SPM_YCHT, new S57enum(46, "yachting"));
+        Catspm.put(CatSPM.SPM_HPRT, new S57enum(47, "heliport")); Catspm.put(CatSPM.SPM_GPS, new S57enum(48, "gps")); Catspm.put(CatSPM.SPM_SLDG, new S57enum(49, "seaplane_landing"));
+        Catspm.put(CatSPM.SPM_NENT, new S57enum(50, "no_entry")); Catspm.put(CatSPM.SPM_WRKP, new S57enum(51, "work_in_progress")); Catspm.put(CatSPM.SPM_UKPP, new S57enum(52, "unknown_purpose"));
+        Catspm.put(CatSPM.SPM_WELH, new S57enum(53, "wellhead")); Catspm.put(CatSPM.SPM_CHSP, new S57enum(54, "channel_separation")); Catspm.put(CatSPM.SPM_MFRM, new S57enum(55, "marine_farm"));
+        Catspm.put(CatSPM.SPM_AREF, new S57enum(56, "artificial_reef")); Catspm.put(CatSPM.SPM_ICE, new S57enum(57, "ice")); Catspm.put(CatSPM.SPM_NATR, new S57enum(58, "nature_reserve"));
+        Catspm.put(CatSPM.SPM_FAD, new S57enum(59, "fish_aggregator")); Catspm.put(CatSPM.SPM_WREK, new S57enum(60, "wreck")); Catspm.put(CatSPM.SPM_CUST, new S57enum(61, "customs"));
+        Catspm.put(CatSPM.SPM_CSWY, new S57enum(62, "causeway")); Catspm.put(CatSPM.SPM_WAVR, new S57enum(63, "wave_recorder")); Catspm.put(CatSPM.SPM_NJET, new S57enum(64, "no_jetski"));
+    }
+
+    public enum CatTRK { TRK_UNKN, TRK_FIXM, TRK_NFXM }
+
+    private static final EnumMap<CatTRK, S57enum> Cattrk = new EnumMap<>(CatTRK.class); static {
+        Cattrk.put(CatTRK.TRK_UNKN, new S57enum(0, ""));
+        Cattrk.put(CatTRK.TRK_FIXM, new S57enum(1, "fixed_marks")); Cattrk.put(CatTRK.TRK_NFXM, new S57enum(2, "no_fixed_marks"));
+    }
+
+    public enum CatTSS { TSS_UNKN, TSS_IMOA, TSS_NIMO }
+
+    private static final EnumMap<CatTSS, S57enum> Cattss = new EnumMap<>(CatTSS.class); static {
+        Cattss.put(CatTSS.TSS_UNKN, new S57enum(0, ""));
+        Cattss.put(CatTSS.TSS_IMOA, new S57enum(1, "imo_adopted")); Cattss.put(CatTSS.TSS_NIMO, new S57enum(2, "not_imo_adopted"));
+    }
+
+    public enum CatVEG { VEG_UNKN, VEG_GRAS, VEG_PDDY, VEG_BUSH, VEG_DCDW, VEG_CONW, VEG_WOOD, VEG_MGRV, VEG_PARK, VEG_PKLD, VEG_MCRP, VEG_REED, VEG_MOSS,
+        VEG_TREE, VEG_EVGT, VEG_CONT, VEG_PLMT, VEG_NPMT, VEG_CSAT, VEG_EUCT, VEG_DCDT, VEG_MRVT, VEG_FLOT }
+
+    private static final EnumMap<CatVEG, S57enum> Catveg = new EnumMap<>(CatVEG.class); static {
+        Catveg.put(CatVEG.VEG_UNKN, new S57enum(0, ""));
+        Catveg.put(CatVEG.VEG_GRAS, new S57enum(1, "grass")); Catveg.put(CatVEG.VEG_PDDY, new S57enum(2, "paddy")); Catveg.put(CatVEG.VEG_BUSH, new S57enum(3, "bush"));
+        Catveg.put(CatVEG.VEG_DCDW, new S57enum(4, "deciduous_wood")); Catveg.put(CatVEG.VEG_CONW, new S57enum(5, "coniferous_wood")); Catveg.put(CatVEG.VEG_WOOD, new S57enum(6, "wood"));
+        Catveg.put(CatVEG.VEG_MGRV, new S57enum(7, "mangroves")); Catveg.put(CatVEG.VEG_PARK, new S57enum(8, "park")); Catveg.put(CatVEG.VEG_PKLD, new S57enum(9, "parkland"));
+        Catveg.put(CatVEG.VEG_MCRP, new S57enum(10, "mixed_crops")); Catveg.put(CatVEG.VEG_REED, new S57enum(11, "reed")); Catveg.put(CatVEG.VEG_MOSS, new S57enum(12, "moss"));
+        Catveg.put(CatVEG.VEG_TREE, new S57enum(13, "tree")); Catveg.put(CatVEG.VEG_EVGT, new S57enum(14, "evergreen_tree")); Catveg.put(CatVEG.VEG_CONT, new S57enum(15, "coniferous_tree"));
+        Catveg.put(CatVEG.VEG_PLMT, new S57enum(16, "palm_tree")); Catveg.put(CatVEG.VEG_NPMT, new S57enum(17, "nipa_palm_tree")); Catveg.put(CatVEG.VEG_CSAT, new S57enum(18, "casuarina_tree"));
+        Catveg.put(CatVEG.VEG_EUCT, new S57enum(19, "eucalypt_tree")); Catveg.put(CatVEG.VEG_DCDT, new S57enum(20, "deciduous_tree")); Catveg.put(CatVEG.VEG_MRVT, new S57enum(21, "mangrove_tree"));
+        Catveg.put(CatVEG.VEG_FLOT, new S57enum(22, "filao_tree"));
+    }
+
+    public enum CatWAT { WAT_UNKN, WAT_BKRS, WAT_EDDY, WAT_OVFL, WAT_TDRP, WAT_BMBR }
+
+    private static final EnumMap<CatWAT, S57enum> Catwat = new EnumMap<>(CatWAT.class); static {
+        Catwat.put(CatWAT.WAT_UNKN, new S57enum(0, ""));
+        Catwat.put(CatWAT.WAT_BKRS, new S57enum(1, "breakers")); Catwat.put(CatWAT.WAT_EDDY, new S57enum(2, "eddies")); Catwat.put(CatWAT.WAT_OVFL, new S57enum(3, "overfalls"));
+        Catwat.put(CatWAT.WAT_TDRP, new S57enum(4, "tide_rips")); Catwat.put(CatWAT.WAT_BMBR, new S57enum(5, "bombora"));
+    }
+
+    public enum CatWED { WED_UNKN, WED_KELP, WED_SWED, WED_SGRS, WED_SGSO }
+
+    private static final EnumMap<CatWED, S57enum> Catwed = new EnumMap<>(CatWED.class); static {
+        Catwed.put(CatWED.WED_UNKN, new S57enum(0, ""));
+        Catwed.put(CatWED.WED_KELP, new S57enum(1, "kelp")); Catwed.put(CatWED.WED_SWED, new S57enum(2, "sea_weed")); Catwed.put(CatWED.WED_SGRS, new S57enum(3, "sea_grass"));
+        Catwed.put(CatWED.WED_SGSO, new S57enum(4, "sargasso"));
+    }
+
+    public enum CatWRK { WRK_UNKN, WRK_NDGR, WRK_DNGR, WRK_DREM, WRK_MSTS, WRK_HULS }
+
+    private static final EnumMap<CatWRK, S57enum> Catwrk = new EnumMap<>(CatWRK.class); static {
+        Catwrk.put(CatWRK.WRK_UNKN, new S57enum(0, ""));
+        Catwrk.put(CatWRK.WRK_NDGR, new S57enum(1, "non-dangerous")); Catwrk.put(CatWRK.WRK_DNGR, new S57enum(2, "dangerous")); Catwrk.put(CatWRK.WRK_DREM, new S57enum(3, "distributed_remains"));
+        Catwrk.put(CatWRK.WRK_MSTS, new S57enum(4, "mast_showing")); Catwrk.put(CatWRK.WRK_HULS, new S57enum(5, "hull_showing"));
+    }
+
+    public enum CatZOC { ZOC_UNKN, ZOC_A1, ZOC_A2, ZOC_B, ZOC_C, ZOC_D, ZOC_U }
+
+    private static final EnumMap<CatZOC, S57enum> Catzoc = new EnumMap<>(CatZOC.class); static {
+        Catzoc.put(CatZOC.ZOC_UNKN, new S57enum(0, ""));
+        Catzoc.put(CatZOC.ZOC_A1, new S57enum(1, "a1")); Catzoc.put(CatZOC.ZOC_A2, new S57enum(2, "a2")); Catzoc.put(CatZOC.ZOC_B, new S57enum(3, "b"));
+        Catzoc.put(CatZOC.ZOC_C, new S57enum(4, "c")); Catzoc.put(CatZOC.ZOC_D, new S57enum(5, "d")); Catzoc.put(CatZOC.ZOC_U, new S57enum(6, "u"));
+    }
+
+    public enum ColCOL { COL_UNK, COL_WHT, COL_BLK, COL_RED, COL_GRN, COL_BLU, COL_YEL, COL_GRY, COL_BRN, COL_AMB, COL_VIO, COL_ORG, COL_MAG, COL_PNK }
+
+    private static final EnumMap<ColCOL, S57enum> Colour = new EnumMap<>(ColCOL.class); static {
+        Colour.put(ColCOL.COL_UNK, new S57enum(0, ""));
+        Colour.put(ColCOL.COL_WHT, new S57enum(1, "white")); Colour.put(ColCOL.COL_BLK, new S57enum(2, "black")); Colour.put(ColCOL.COL_RED, new S57enum(3, "red"));
+        Colour.put(ColCOL.COL_GRN, new S57enum(4, "green")); Colour.put(ColCOL.COL_BLU, new S57enum(5, "blue")); Colour.put(ColCOL.COL_YEL, new S57enum(6, "yellow"));
+        Colour.put(ColCOL.COL_GRY, new S57enum(7, "grey")); Colour.put(ColCOL.COL_BRN, new S57enum(8, "brown")); Colour.put(ColCOL.COL_AMB, new S57enum(9, "amber"));
+        Colour.put(ColCOL.COL_VIO, new S57enum(10, "violet")); Colour.put(ColCOL.COL_ORG, new S57enum(11, "orange")); Colour.put(ColCOL.COL_MAG, new S57enum(12, "magenta"));
+        Colour.put(ColCOL.COL_PNK, new S57enum(13, "pink"));
+    }
+
+    public enum ColPAT { PAT_UNKN, PAT_HORI, PAT_VERT, PAT_DIAG, PAT_SQUR, PAT_STRP, PAT_BRDR, PAT_CROS, PAT_SALT }
+
+    private static final EnumMap<ColPAT, S57enum> Colpat = new EnumMap<>(ColPAT.class); static {
+        Colpat.put(ColPAT.PAT_UNKN, new S57enum(0, ""));
+        Colpat.put(ColPAT.PAT_HORI, new S57enum(1, "horizontal")); Colpat.put(ColPAT.PAT_VERT, new S57enum(2, "vertical")); Colpat.put(ColPAT.PAT_DIAG, new S57enum(3, "diagonal"));
+        Colpat.put(ColPAT.PAT_SQUR, new S57enum(4, "squared")); Colpat.put(ColPAT.PAT_STRP, new S57enum(5, "stripes")); Colpat.put(ColPAT.PAT_BRDR, new S57enum(6, "border"));
+        Colpat.put(ColPAT.PAT_CROS, new S57enum(7, "cross")); Colpat.put(ColPAT.PAT_SALT, new S57enum(8, "saltire"));
+    }
+
+    public enum CndCND { CND_UNKN, CND_UCNS, CND_RUIN, CND_URCL, CND_WLES, CND_PCNS }
+
+    private static final EnumMap<CndCND, S57enum> Condtn = new EnumMap<>(CndCND.class); static {
+        Condtn.put(CndCND.CND_UNKN, new S57enum(0, ""));
+        Condtn.put(CndCND.CND_UCNS, new S57enum(1, "under_construction")); Condtn.put(CndCND.CND_RUIN, new S57enum(2, "ruined")); Condtn.put(CndCND.CND_URCL, new S57enum(3, "under_reclamation"));
+        Condtn.put(CndCND.CND_WLES, new S57enum(4, "wingless")); Condtn.put(CndCND.CND_PCNS, new S57enum(5, "planned_construction"));
+    }
+
+    public enum ConRAD { RAD_UNKN, RAD_CNSP, RAD_NCSP, RAD_REFL }
+
+    private static final EnumMap<ConRAD, S57enum> Conrad = new EnumMap<>(ConRAD.class); static {
+        Conrad.put(ConRAD.RAD_UNKN, new S57enum(0, ""));
+        Conrad.put(ConRAD.RAD_CNSP, new S57enum(1, "conspicuous")); Conrad.put(ConRAD.RAD_NCSP, new S57enum(2, "not_conspicuous")); Conrad.put(ConRAD.RAD_REFL, new S57enum(3, "reflector"));
+    }
+
+    public enum ConVIS { VIS_UNKN, VIS_CNSP, VIS_NCSP }
+
+    private static final EnumMap<ConVIS, S57enum> Convis = new EnumMap<>(ConVIS.class); static {
+        Convis.put(ConVIS.VIS_UNKN, new S57enum(0, ""));
+        Convis.put(ConVIS.VIS_CNSP, new S57enum(1, "conspicuous")); Convis.put(ConVIS.VIS_NCSP, new S57enum(2, "not_conspicuous"));
+    }
+
+    public enum UniDPU { DPU_UNKN, DPU_METR, DPU_FTFT, DPU_FTHM, DPU_FTFR }
+
+    private static final EnumMap<UniDPU, S57enum> Dunits = new EnumMap<>(UniDPU.class); static {
+        Dunits.put(UniDPU.DPU_UNKN, new S57enum(0, ""));
+        Dunits.put(UniDPU.DPU_METR, new S57enum(1, "metres")); Dunits.put(UniDPU.DPU_FTFT, new S57enum(2, "fathoms_feet")); Dunits.put(UniDPU.DPU_FTHM, new S57enum(3, "fathoms"));
+        Dunits.put(UniDPU.DPU_FTFR, new S57enum(4, "fathoms_fractions"));
+    }
+
+    public enum ExcLIT { EXH_UNKN, EXH_24H, EXH_DAY, EXH_FOG, EXH_NGHT, EXH_WRNG, EXH_STRM }
+
+    private static final EnumMap<ExcLIT, S57enum> Exclit = new EnumMap<>(ExcLIT.class); static {
+        Exclit.put(ExcLIT.EXH_UNKN, new S57enum(0, ""));
+        Exclit.put(ExcLIT.EXH_24H, new S57enum(1, "24h")); Exclit.put(ExcLIT.EXH_DAY, new S57enum(2, "day")); Exclit.put(ExcLIT.EXH_FOG, new S57enum(3, "fog")); Exclit.put(ExcLIT.EXH_NGHT, new S57enum(4, "night"));
+        Exclit.put(ExcLIT.EXH_WRNG, new S57enum(5, "warning")); Exclit.put(ExcLIT.EXH_STRM, new S57enum(6, "storm"));
+    }
+
+    public enum ExpSOU { EXP_UNKN, EXP_WTHN, EXP_SHLR, EXP_DEPR }
+
+    private static final EnumMap<ExpSOU, S57enum> Expsou = new EnumMap<>(ExpSOU.class); static {
+        Expsou.put(ExpSOU.EXP_UNKN, new S57enum(0, ""));
+        Expsou.put(ExpSOU.EXP_WTHN, new S57enum(1, "within")); Expsou.put(ExpSOU.EXP_SHLR, new S57enum(2, "shoaler")); Expsou.put(ExpSOU.EXP_DEPR, new S57enum(3, "deeper"));
+    }
+
+    public enum FncFNC { FNC_UNKN, FNC_HBRM, FNC_CSTM, FNC_HLTH, FNC_HOSP, FNC_POST, FNC_HOTL, FNC_RAIL, FNC_POLC, FNC_WPOL, FNC_PILO, FNC_PILL, FNC_BANK,
+        FNC_DIST, FNC_TRNS, FNC_FCTY, FNC_POWR, FNC_ADMIN, FNC_EDUC, FNC_CHCH, FNC_CHPL, FNC_TMPL, FNC_PGDA, FNC_SHSH, FNC_BTMP, FNC_MOSQ, FNC_MRBT,
+        FNC_LOOK, FNC_COMM, FNC_TV, FNC_RADO, FNC_RADR, FNC_LGHT, FNC_MCWV, FNC_COOL, FNC_OBS, FNC_TMBL, FNC_CLOK, FNC_CTRL, FNC_ASHM, FNC_STAD, FNC_BUSS,
+        FNC_PTRM, FNC_SRCT, FNC_OBSV, FNC_OREC, FNC_BTHS, FNC_PMPS }
+
+    private static final EnumMap<FncFNC, S57enum> Functn = new EnumMap<>(FncFNC.class); static {
+        Functn.put(FncFNC.FNC_UNKN, new S57enum(0, ""));
+        Functn.put(FncFNC.FNC_HBRM, new S57enum(2, "harbour_master")); Functn.put(FncFNC.FNC_CSTM, new S57enum(3, "customs")); Functn.put(FncFNC.FNC_HLTH, new S57enum(4, "health"));
+        Functn.put(FncFNC.FNC_HOSP, new S57enum(5, "hospital")); Functn.put(FncFNC.FNC_POST, new S57enum(6, "post_office")); Functn.put(FncFNC.FNC_HOTL, new S57enum(7, "hotel"));
+        Functn.put(FncFNC.FNC_RAIL, new S57enum(8, "railway_station")); Functn.put(FncFNC.FNC_POLC, new S57enum(9, "police_station")); Functn.put(FncFNC.FNC_WPOL, new S57enum(10, "water-police_station"));
+        Functn.put(FncFNC.FNC_PILO, new S57enum(11, "pilot_office")); Functn.put(FncFNC.FNC_PILL, new S57enum(12, "pilot_lookout")); Functn.put(FncFNC.FNC_BANK, new S57enum(13, "bank"));
+        Functn.put(FncFNC.FNC_DIST, new S57enum(14, "district_control")); Functn.put(FncFNC.FNC_TRNS, new S57enum(15, "transit_shed")); Functn.put(FncFNC.FNC_FCTY, new S57enum(16, "factory"));
+        Functn.put(FncFNC.FNC_POWR, new S57enum(17, "power_station")); Functn.put(FncFNC.FNC_ADMIN, new S57enum(18, "administrative")); Functn.put(FncFNC.FNC_EDUC, new S57enum(19, "educational"));
+        Functn.put(FncFNC.FNC_CHCH, new S57enum(20, "church")); Functn.put(FncFNC.FNC_CHPL, new S57enum(21, "chapel")); Functn.put(FncFNC.FNC_TMPL, new S57enum(22, "temple"));
+        Functn.put(FncFNC.FNC_PGDA, new S57enum(23, "pagoda")); Functn.put(FncFNC.FNC_SHSH, new S57enum(24, "shinto_shrine")); Functn.put(FncFNC.FNC_BTMP, new S57enum(25, "buddhist_temple"));
+        Functn.put(FncFNC.FNC_MOSQ, new S57enum(26, "mosque")); Functn.put(FncFNC.FNC_MRBT, new S57enum(27, "marabout")); Functn.put(FncFNC.FNC_LOOK, new S57enum(28, "lookout"));
+        Functn.put(FncFNC.FNC_COMM, new S57enum(29, "communication")); Functn.put(FncFNC.FNC_TV, new S57enum(30, "television")); Functn.put(FncFNC.FNC_RADO, new S57enum(31, "radio"));
+        Functn.put(FncFNC.FNC_RADR, new S57enum(32, "radar")); Functn.put(FncFNC.FNC_LGHT, new S57enum(33, "light_support")); Functn.put(FncFNC.FNC_MCWV, new S57enum(34, "microwave"));
+        Functn.put(FncFNC.FNC_COOL, new S57enum(35, "cooling")); Functn.put(FncFNC.FNC_OBS, new S57enum(36, "observation")); Functn.put(FncFNC.FNC_TMBL, new S57enum(37, "time_ball"));
+        Functn.put(FncFNC.FNC_CLOK, new S57enum(38, "clock")); Functn.put(FncFNC.FNC_CTRL, new S57enum(39, "control")); Functn.put(FncFNC.FNC_ASHM, new S57enum(40, "airship_mooring"));
+        Functn.put(FncFNC.FNC_STAD, new S57enum(41, "stadium")); Functn.put(FncFNC.FNC_BUSS, new S57enum(42, "bus_station")); Functn.put(FncFNC.FNC_PTRM, new S57enum(43, "passenger_terminal"));
+        Functn.put(FncFNC.FNC_SRCT, new S57enum(44, "sea_rescue_control")); Functn.put(FncFNC.FNC_OBSV, new S57enum(45, "observatory")); Functn.put(FncFNC.FNC_OREC, new S57enum(46, "ore_crusher"));
+        Functn.put(FncFNC.FNC_BTHS, new S57enum(47, "boathouse")); Functn.put(FncFNC.FNC_PMPS, new S57enum(48, "pumping_station"));
+    }
+
+    public enum UniHLU { HLU_UNKN, HLU_METR, HLU_FEET, HLU_KMTR, HLU_HMTR, HLU_SMIL, HLU_NMIL }
+
+    private static final EnumMap<UniHLU, S57enum> Hunits = new EnumMap<>(UniHLU.class); static {
+        Hunits.put(UniHLU.HLU_UNKN, new S57enum(0, ""));
+        Hunits.put(UniHLU.HLU_METR, new S57enum(1, "metres")); Hunits.put(UniHLU.HLU_FEET, new S57enum(2, "feet")); Hunits.put(UniHLU.HLU_KMTR, new S57enum(3, "kilometres"));
+        Hunits.put(UniHLU.HLU_HMTR, new S57enum(4, "hectometres")); Hunits.put(UniHLU.HLU_SMIL, new S57enum(5, "statute_miles")); Hunits.put(UniHLU.HLU_NMIL, new S57enum(6, "nautical_miles"));
+    }
+
+    public enum JrsJRS { JRS_UNKN, JRS_INT, JRS_NAT, JRS_NSD }
+
+    private static final EnumMap<JrsJRS, S57enum> Jrsdtn = new EnumMap<>(JrsJRS.class); static {
+        Jrsdtn.put(JrsJRS.JRS_UNKN, new S57enum(0, ""));
+        Jrsdtn.put(JrsJRS.JRS_INT, new S57enum(1, "international")); Jrsdtn.put(JrsJRS.JRS_NAT, new S57enum(2, "national")); Jrsdtn.put(JrsJRS.JRS_NSD, new S57enum(3, "national_sub-division"));
+    }
+
+    public enum LitCHR { CHR_UNKN, CHR_F, CHR_FL, CHR_LFL, CHR_Q, CHR_VQ, CHR_UQ, CHR_ISO, CHR_OC, CHR_IQ, CHR_IVQ, CHR_IUQ, CHR_MO, CHR_FFL,
+        CHR_FLLFL, CHR_OCFL, CHR_FLFL, CHR_ALOC, CHR_ALLFL, CHR_ALFL, CHR_ALGR, CHR_QLFL, CHR_VQLFL, CHR_UQLFL, CHR_AL, CHR_ALFFL }
+
+    private static final EnumMap<LitCHR, S57enum> Litchr = new EnumMap<>(LitCHR.class); static {
+        Litchr.put(LitCHR.CHR_UNKN, new S57enum(0, ""));
+        Litchr.put(LitCHR.CHR_F, new S57enum(1, "F")); Litchr.put(LitCHR.CHR_FL, new S57enum(2, "Fl")); Litchr.put(LitCHR.CHR_LFL, new S57enum(3, "LFl")); Litchr.put(LitCHR.CHR_Q, new S57enum(4, "Q"));
+        Litchr.put(LitCHR.CHR_VQ, new S57enum(5, "VQ")); Litchr.put(LitCHR.CHR_UQ, new S57enum(6, "UQ")); Litchr.put(LitCHR.CHR_ISO, new S57enum(7, "Iso")); Litchr.put(LitCHR.CHR_OC, new S57enum(8, "Oc"));
+        Litchr.put(LitCHR.CHR_IQ, new S57enum(9, "IQ")); Litchr.put(LitCHR.CHR_IVQ, new S57enum(10, "IVQ")); Litchr.put(LitCHR.CHR_IUQ, new S57enum(11, "IUQ")); Litchr.put(LitCHR.CHR_MO, new S57enum(12, "Mo"));
+        Litchr.put(LitCHR.CHR_FFL, new S57enum(13, "FFl")); Litchr.put(LitCHR.CHR_FLLFL, new S57enum(14, "FlLFl")); Litchr.put(LitCHR.CHR_OCFL, new S57enum(15, "OcFl"));
+        Litchr.put(LitCHR.CHR_FLFL, new S57enum(16, "FLFl")); Litchr.put(LitCHR.CHR_ALOC, new S57enum(17, "Al.Oc")); Litchr.put(LitCHR.CHR_ALLFL, new S57enum(18, "Al.LFl"));
+        Litchr.put(LitCHR.CHR_ALFL, new S57enum(19, "Al.Fl")); Litchr.put(LitCHR.CHR_ALGR, new S57enum(20, "Al.Gr")); Litchr.put(LitCHR.CHR_QLFL, new S57enum(25, "Q+LFl"));
+        Litchr.put(LitCHR.CHR_VQLFL, new S57enum(26, "VQ+LFl")); Litchr.put(LitCHR.CHR_UQLFL, new S57enum(27, "UQ+LFl")); Litchr.put(LitCHR.CHR_AL, new S57enum(28, "Al"));
+        Litchr.put(LitCHR.CHR_ALFFL, new S57enum(29, "Al.FFl"));
+    }
+
+    public enum LitVIS { LIT_UNKN, LIT_HIGH, LIT_LOW, LIT_FANT, LIT_INTS, LIT_UINT, LIT_RSTR, LIT_OBSC, LIT_POBS, LIT_ILOR }
+
+    private static final EnumMap<LitVIS, S57enum> Litvis = new EnumMap<>(LitVIS.class); static {
+        Litvis.put(LitVIS.LIT_UNKN, new S57enum(0, ""));
+        Litvis.put(LitVIS.LIT_HIGH, new S57enum(1, "high")); Litvis.put(LitVIS.LIT_LOW, new S57enum(2, "low")); Litvis.put(LitVIS.LIT_FANT, new S57enum(3, "faint"));
+        Litvis.put(LitVIS.LIT_INTS, new S57enum(4, "intensified")); Litvis.put(LitVIS.LIT_UINT, new S57enum(5, "unintensified")); Litvis.put(LitVIS.LIT_RSTR, new S57enum(6, "restricted"));
+        Litvis.put(LitVIS.LIT_OBSC, new S57enum(7, "obscured")); Litvis.put(LitVIS.LIT_POBS, new S57enum(8, "part_obscured")); Litvis.put(LitVIS.LIT_ILOR, new S57enum(9, "in_line"));
+    }
+
+    public enum MarSYS { SYS_UNKN, SYS_IALA, SYS_IALB, SYS_NONE, SYS_OTHR, SYS_CEVN, SYS_RIWR, SYS_BWR2, SYS_BNWR, SYS_PPWB }
+
+    private static final EnumMap<MarSYS, S57enum> Marsys = new EnumMap<>(MarSYS.class); static {
+        Marsys.put(MarSYS.SYS_UNKN, new S57enum(0, ""));
+        Marsys.put(MarSYS.SYS_IALA, new S57enum(1, "iala-a")); Marsys.put(MarSYS.SYS_IALB, new S57enum(2, "iala-b")); Marsys.put(MarSYS.SYS_NONE, new S57enum(9, "none"));
+        Marsys.put(MarSYS.SYS_OTHR, new S57enum(10, "other")); Marsys.put(MarSYS.SYS_CEVN, new S57enum(11, "cevni")); Marsys.put(MarSYS.SYS_RIWR, new S57enum(12, "riwr"));
+        Marsys.put(MarSYS.SYS_BWR2, new S57enum(13, "bniwr2")); Marsys.put(MarSYS.SYS_BNWR, new S57enum(14, "bniwr")); Marsys.put(MarSYS.SYS_PPWB, new S57enum(15, "ppwbc"));
+    }
+
+    public enum NatCON { CON_UNKN, CON_MSNY, CON_CONC, CON_BDRS, CON_HSRF, CON_USRF, CON_WOOD, CON_METL, CON_GRP, CON_PNTD, CON_FMWK, CON_LATT, CON_GLAS }
+
+    private static final EnumMap<NatCON, S57enum> Natcon = new EnumMap<>(NatCON.class); static {
+        Natcon.put(NatCON.CON_UNKN, new S57enum(0, ""));
+        Natcon.put(NatCON.CON_MSNY, new S57enum(1, "masonry")); Natcon.put(NatCON.CON_CONC, new S57enum(2, "concreted")); Natcon.put(NatCON.CON_BDRS, new S57enum(3, "loose_boulders"));
+        Natcon.put(NatCON.CON_HSRF, new S57enum(4, "hard-surfaced")); Natcon.put(NatCON.CON_USRF, new S57enum(5, "unsurfaced")); Natcon.put(NatCON.CON_WOOD, new S57enum(6, "wooden"));
+        Natcon.put(NatCON.CON_METL, new S57enum(7, "metal")); Natcon.put(NatCON.CON_GRP, new S57enum(8, "grp")); Natcon.put(NatCON.CON_PNTD, new S57enum(9, "painted"));
+        Natcon.put(NatCON.CON_FMWK, new S57enum(10, "framework")); Natcon.put(NatCON.CON_LATT, new S57enum(11, "latticed")); Natcon.put(NatCON.CON_GLAS, new S57enum(12, "glass"));
+    }
+
+    public enum NatSUR { SUR_UNKN, SUR_MUD, SUR_CLAY, SUR_SILT, SUR_SAND, SUR_STON, SUR_GRVL, SUR_PBBL, SUR_CBBL, SUR_ROCK, SUR_LAVA, SUR_CORL, SUR_SHEL, SUR_BLDR }
+
+    private static final EnumMap<NatSUR, S57enum> Natsur = new EnumMap<>(NatSUR.class); static {
+        Natsur.put(NatSUR.SUR_UNKN, new S57enum(0, ""));
+        Natsur.put(NatSUR.SUR_MUD, new S57enum(1, "mud")); Natsur.put(NatSUR.SUR_CLAY, new S57enum(2, "clay")); Natsur.put(NatSUR.SUR_SILT, new S57enum(3, "silt"));
+        Natsur.put(NatSUR.SUR_SAND, new S57enum(4, "sand")); Natsur.put(NatSUR.SUR_STON, new S57enum(5, "stones")); Natsur.put(NatSUR.SUR_GRVL, new S57enum(6, "gravel"));
+        Natsur.put(NatSUR.SUR_PBBL, new S57enum(7, "pebbles")); Natsur.put(NatSUR.SUR_CBBL, new S57enum(8, "cobbles")); Natsur.put(NatSUR.SUR_ROCK, new S57enum(9, "rocky"));
+        Natsur.put(NatSUR.SUR_LAVA, new S57enum(11, "lava")); Natsur.put(NatSUR.SUR_CORL, new S57enum(14, "coral")); Natsur.put(NatSUR.SUR_SHEL, new S57enum(17, "shells"));
+        Natsur.put(NatSUR.SUR_BLDR, new S57enum(18, "boulders"));
+    }
+
+    public enum NatQUA { QUA_UNKN, QUA_FINE, QUA_MEDM, QUA_CORS, QUA_BRKN, QUA_STKY, QUA_SOFT, QUA_STIF, QUA_VCNC, QUA_CALC, QUA_HARD }
+
+    private static final EnumMap<NatQUA, S57enum> Natqua = new EnumMap<>(NatQUA.class); static {
+        Natqua.put(NatQUA.QUA_UNKN, new S57enum(0, ""));
+        Natqua.put(NatQUA.QUA_FINE, new S57enum(1, "fine")); Natqua.put(NatQUA.QUA_MEDM, new S57enum(2, "medium")); Natqua.put(NatQUA.QUA_CORS, new S57enum(3, "coarse"));
+        Natqua.put(NatQUA.QUA_BRKN, new S57enum(4, "broken")); Natqua.put(NatQUA.QUA_STKY, new S57enum(5, "sticky")); Natqua.put(NatQUA.QUA_SOFT, new S57enum(6, "soft"));
+        Natqua.put(NatQUA.QUA_STIF, new S57enum(7, "stiff")); Natqua.put(NatQUA.QUA_VCNC, new S57enum(8, "volcanic")); Natqua.put(NatQUA.QUA_CALC, new S57enum(9, "calcareous"));
+        Natqua.put(NatQUA.QUA_HARD, new S57enum(10, "hard"));
+    }
+
+    public enum PrdPRD { PRD_UNKN, PRD_OIL, PRD_GAS, PRD_WATR, PRD_STON, PRD_COAL, PRD_ORE, PRD_CHEM, PRD_DWTR, PRD_MILK, PRD_BXIT, PRD_COKE, PRD_IIGS, PRD_SALT,
+        PRD_SAND, PRD_TMBR, PRD_SDST, PRD_SCRP, PRD_LNA, PRD_LPA, PRD_WINE, PRD_CMNT, PRD_GRAN, PRD_ELEC, PRD_ICE, PRD_CLAY }
+
+    private static final EnumMap<PrdPRD, S57enum> Prodct = new EnumMap<>(PrdPRD.class); static {
+        Prodct.put(PrdPRD.PRD_UNKN, new S57enum(0, ""));
+        Prodct.put(PrdPRD.PRD_OIL, new S57enum(1, "oil")); Prodct.put(PrdPRD.PRD_GAS, new S57enum(2, "gas")); Prodct.put(PrdPRD.PRD_WATR, new S57enum(3, "water"));
+        Prodct.put(PrdPRD.PRD_STON, new S57enum(4, "stone")); Prodct.put(PrdPRD.PRD_COAL, new S57enum(5, "coal")); Prodct.put(PrdPRD.PRD_ORE, new S57enum(6, "ore"));
+        Prodct.put(PrdPRD.PRD_CHEM, new S57enum(7, "chemicals")); Prodct.put(PrdPRD.PRD_DWTR, new S57enum(8, "drinking_water")); Prodct.put(PrdPRD.PRD_MILK, new S57enum(9, "milk"));
+        Prodct.put(PrdPRD.PRD_BXIT, new S57enum(10, "bauxite")); Prodct.put(PrdPRD.PRD_COKE, new S57enum(11, "coke")); Prodct.put(PrdPRD.PRD_IIGS, new S57enum(12, "iron_ingots"));
+        Prodct.put(PrdPRD.PRD_SALT, new S57enum(13, "salt")); Prodct.put(PrdPRD.PRD_SAND, new S57enum(14, "sand")); Prodct.put(PrdPRD.PRD_TMBR, new S57enum(15, "timber"));
+        Prodct.put(PrdPRD.PRD_SDST, new S57enum(16, "sawdust")); Prodct.put(PrdPRD.PRD_SCRP, new S57enum(17, "scrap")); Prodct.put(PrdPRD.PRD_LNA, new S57enum(18, "lng"));
+        Prodct.put(PrdPRD.PRD_LPA, new S57enum(19, "lpg")); Prodct.put(PrdPRD.PRD_WINE, new S57enum(20, "wine")); Prodct.put(PrdPRD.PRD_CMNT, new S57enum(21, "cement"));
+        Prodct.put(PrdPRD.PRD_GRAN, new S57enum(22, "grain")); Prodct.put(PrdPRD.PRD_ELEC, new S57enum(23, "electricity")); Prodct.put(PrdPRD.PRD_ICE, new S57enum(24, "ice"));
+        Prodct.put(PrdPRD.PRD_CLAY, new S57enum(25, "clay"));
+    }
+
+    public enum QuaSOU { SOU_UNKN, SOU_KNWN, SOU_UKNN, SOU_DFUL, SOU_UNRL, SOU_NBFD, SOU_LKWN, SOU_LUKN, SOU_NSRV, SOU_NCNF, SOU_MANT, SOU_NMNT }
+
+    private static final EnumMap<QuaSOU, S57enum> Quasou = new EnumMap<>(QuaSOU.class); static {
+        Quasou.put(QuaSOU.SOU_UNKN, new S57enum(0, ""));
+        Quasou.put(QuaSOU.SOU_KNWN, new S57enum(1, "known")); Quasou.put(QuaSOU.SOU_UKNN, new S57enum(2, "unknown")); Quasou.put(QuaSOU.SOU_DFUL, new S57enum(3, "doubtful"));
+        Quasou.put(QuaSOU.SOU_UNRL, new S57enum(4, "unreliable")); Quasou.put(QuaSOU.SOU_NBFD, new S57enum(5, "no_bottom_found")); Quasou.put(QuaSOU.SOU_LKWN, new S57enum(6, "least_known"));
+        Quasou.put(QuaSOU.SOU_LUKN, new S57enum(7, "least_unknown")); Quasou.put(QuaSOU.SOU_NSRV, new S57enum(8, "not_surveyed")); Quasou.put(QuaSOU.SOU_NCNF, new S57enum(9, "not_confirmed"));
+        Quasou.put(QuaSOU.SOU_MANT, new S57enum(10, "maintained")); Quasou.put(QuaSOU.SOU_NMNT, new S57enum(11, "not_maintained"));
+    }
+
+    public enum RstRST { RST_UNKN, RST_NANC, RST_RANC, RST_NFSH, RST_RFSH, RST_NTRL, RST_RTRL, RST_NENT, RST_RENT, RST_NDRG, RST_RDRG, RST_NDVG, RST_RDVG, RST_NWAK, RST_TBAV, RST_NCST, RST_NDSC,
+        RST_RDSC, RST_NEXD, RST_REXD, RST_NDRL, RST_RDRL, RST_NHAR, RST_NLTG, RST_NDRA, RST_NSTP, RST_NLND, RST_RSPD, RST_NOVT, RST_NCOV, RST_NPOV, RST_NBRT, RST_RBRT, RST_NMFT, RST_RMFT, RST_NTRN,
+        RST_RFWD, RST_RFWW, RST_NSWM }
+
+    private static final EnumMap<RstRST, S57enum> Restrn = new EnumMap<>(RstRST.class); static {
+        Restrn.put(RstRST.RST_UNKN, new S57enum(0, ""));
+        Restrn.put(RstRST.RST_NANC, new S57enum(1, "no_anchoring")); Restrn.put(RstRST.RST_RANC, new S57enum(2, "restricted_anchoring")); Restrn.put(RstRST.RST_NFSH, new S57enum(3, "no_fishing"));
+        Restrn.put(RstRST.RST_RFSH, new S57enum(4, "restricted_fishing")); Restrn.put(RstRST.RST_NTRL, new S57enum(5, "no_trawling")); Restrn.put(RstRST.RST_RTRL, new S57enum(6, "restricted_trawling"));
+        Restrn.put(RstRST.RST_NENT, new S57enum(7, "no_entry")); Restrn.put(RstRST.RST_RENT, new S57enum(8, "restricted_entry")); Restrn.put(RstRST.RST_NDRG, new S57enum(9, "no_dredging"));
+        Restrn.put(RstRST.RST_RDRG, new S57enum(10, "restricted_dredging")); Restrn.put(RstRST.RST_NDVG, new S57enum(11, "no_diving")); Restrn.put(RstRST.RST_RDVG, new S57enum(12, "restricted_diving"));
+        Restrn.put(RstRST.RST_NWAK, new S57enum(13, "no_wake")); Restrn.put(RstRST.RST_TBAV, new S57enum(14, "to_be_avoided")); Restrn.put(RstRST.RST_NCST, new S57enum(15, "no_construction"));
+        Restrn.put(RstRST.RST_NDSC, new S57enum(16, "no_discharging")); Restrn.put(RstRST.RST_RDSC, new S57enum(17, "restricted_discharging"));
+        Restrn.put(RstRST.RST_NEXD, new S57enum(18, "no_exploration_development")); Restrn.put(RstRST.RST_REXD, new S57enum(19, "restricted_exploration_development"));
+        Restrn.put(RstRST.RST_NDRL, new S57enum(20, "no_drilling")); Restrn.put(RstRST.RST_RDRL, new S57enum(21, "restricted_drilling"));
+        Restrn.put(RstRST.RST_NHAR, new S57enum(22, "no_historical_artifacts_removal")); Restrn.put(RstRST.RST_NLTG, new S57enum(23, "no_lightering")); Restrn.put(RstRST.RST_NDRA, new S57enum(24, "no_dragging"));
+        Restrn.put(RstRST.RST_NSTP, new S57enum(25, "no_stopping")); Restrn.put(RstRST.RST_NLND, new S57enum(26, "no_landing")); Restrn.put(RstRST.RST_RSPD, new S57enum(27, "restricted_speed"));
+        Restrn.put(RstRST.RST_NOVT, new S57enum(28, "no_overtaking")); Restrn.put(RstRST.RST_NCOV, new S57enum(29, "no_convoy_overtaking")); Restrn.put(RstRST.RST_NPOV, new S57enum(30, "no_passing_overtaking"));
+        Restrn.put(RstRST.RST_NBRT, new S57enum(31, "no_berthing")); Restrn.put(RstRST.RST_RBRT, new S57enum(32, "restricted_berthing")); Restrn.put(RstRST.RST_NMFT, new S57enum(33, "no_making_fast"));
+        Restrn.put(RstRST.RST_RMFT, new S57enum(34, "restricted_making_fast")); Restrn.put(RstRST.RST_NTRN, new S57enum(35, "no_turning")); Restrn.put(RstRST.RST_RFWD, new S57enum(36, "restricted_fairway_depth"));
+        Restrn.put(RstRST.RST_RFWW, new S57enum(37, "restricted_fairway_width")); Restrn.put(RstRST.RST_NSWM, new S57enum(39, "no_swimming"));
+    }
+
+    public enum SigGEN { GEN_UNKN, GEN_AUTO, GEN_WAVE, GEN_HAND, GEN_WIND, GEN_RADO, GEN_CALL }
+
+    private static final EnumMap<SigGEN, S57enum> Siggen = new EnumMap<>(SigGEN.class); static {
+        Siggen.put(SigGEN.GEN_UNKN, new S57enum(0, ""));
+        Siggen.put(SigGEN.GEN_AUTO, new S57enum(1, "automatic")); Siggen.put(SigGEN.GEN_WAVE, new S57enum(2, "wave")); Siggen.put(SigGEN.GEN_HAND, new S57enum(3, "hand"));
+        Siggen.put(SigGEN.GEN_WIND, new S57enum(4, "wind")); Siggen.put(SigGEN.GEN_RADO, new S57enum(5, "radio")); Siggen.put(SigGEN.GEN_CALL, new S57enum(6, "call"));
+    }
+
+    public enum StsSTS { STS_UNKN, STS_PERM, STS_OCAS, STS_RCMD, STS_NIUS, STS_IMTT, STS_RESV, STS_TEMP, STS_PRIV, STS_MAND, STS_EXTD, STS_ILLD, STS_HIST, STS_PBLC,
+        STS_SYNC, STS_WCHD, STS_UWCD, STS_EDBT, STS_OREQ, STS_DPAW, STS_RSNG, STS_INCR, STS_DECR, TS_STNG, STS_GOOD, STS_MODY, STS_POOR, STS_BUOY }
+
+    private static final EnumMap<StsSTS, S57enum> Status = new EnumMap<>(StsSTS.class); static {
+        Status.put(StsSTS.STS_UNKN, new S57enum(0, ""));
+        Status.put(StsSTS.STS_PERM, new S57enum(1, "permanent")); Status.put(StsSTS.STS_OCAS, new S57enum(2, "occasional")); Status.put(StsSTS.STS_RCMD, new S57enum(3, "recommended"));
+        Status.put(StsSTS.STS_NIUS, new S57enum(4, "not_in_use")); Status.put(StsSTS.STS_IMTT, new S57enum(5, "intermittent")); Status.put(StsSTS.STS_RESV, new S57enum(6, "reserved"));
+        Status.put(StsSTS.STS_TEMP, new S57enum(7, "temporary")); Status.put(StsSTS.STS_PRIV, new S57enum(8, "private")); Status.put(StsSTS.STS_MAND, new S57enum(9, "mandatory"));
+        Status.put(StsSTS.STS_EXTD, new S57enum(11, "extinguished")); Status.put(StsSTS.STS_ILLD, new S57enum(12, "illuminated")); Status.put(StsSTS.STS_HIST, new S57enum(13, "historic"));
+        Status.put(StsSTS.STS_PBLC, new S57enum(14, "public")); Status.put(StsSTS.STS_SYNC, new S57enum(15, "synchronised")); Status.put(StsSTS.STS_WCHD, new S57enum(16, "watched"));
+        Status.put(StsSTS.STS_UWCD, new S57enum(17, "unwatched")); Status.put(StsSTS.STS_EDBT, new S57enum(18, "existence_doubtful")); Status.put(StsSTS.STS_OREQ, new S57enum(19, "on_request"));
+        Status.put(StsSTS.STS_DPAW, new S57enum(20, "drop_away")); Status.put(StsSTS.STS_RSNG, new S57enum(21, "rising")); Status.put(StsSTS.STS_INCR, new S57enum(22, "increasing"));
+        Status.put(StsSTS.STS_DECR, new S57enum(23, "decreasing")); Status.put(StsSTS.TS_STNG, new S57enum(24, "strong")); Status.put(StsSTS.STS_GOOD, new S57enum(25, "good"));
+        Status.put(StsSTS.STS_MODY, new S57enum(26, "moderately")); Status.put(StsSTS.STS_POOR, new S57enum(27, "poor")); Status.put(StsSTS.STS_BUOY, new S57enum(28, "buoyed"));
+    }
+
+    public enum SurTYP { TYP_UNKN, TYP_SKCH, TYP_CTLD, TYP_PSSG, TYP_REMT }
+
+    private static final EnumMap<SurTYP, S57enum> Surtyp = new EnumMap<>(SurTYP.class); static {
+        Surtyp.put(SurTYP.TYP_UNKN, new S57enum(0, ""));
+        Surtyp.put(SurTYP.TYP_SKCH, new S57enum(1, "sketch")); Surtyp.put(SurTYP.TYP_CTLD, new S57enum(2, "controlled")); Surtyp.put(SurTYP.TYP_PSSG, new S57enum(4, "examination"));
+        Surtyp.put(SurTYP.TYP_PSSG, new S57enum(5, "passage")); Surtyp.put(SurTYP.TYP_REMT, new S57enum(6, "remote"));
+    }
+
+    public enum TecSOU { SOU_UNKN, SOU_ESND, SOU_FSSN, SOU_MLBM, SOU_DIVR, SOU_LDLN, SOU_WDRG, SOU_LASR, SOU_VACC, SOU_EMAG, SOU_PHGY, SOU_SATL, SOU_LEVL, SOU_SSSN, SOU_COMP,
+        SOU_LIDR, SOU_SARD, SOU_HYPS}
+
+    private static final EnumMap<TecSOU, S57enum> Tecsou = new EnumMap<>(TecSOU.class); static {
+        Tecsou.put(TecSOU.SOU_UNKN, new S57enum(0, ""));
+        Tecsou.put(TecSOU.SOU_ESND, new S57enum(1, "echo-sounder")); Tecsou.put(TecSOU.SOU_FSSN, new S57enum(2, "side-scan_sonar")); Tecsou.put(TecSOU.SOU_MLBM, new S57enum(3, "multi-beam"));
+        Tecsou.put(TecSOU.SOU_DIVR, new S57enum(4, "diver")); Tecsou.put(TecSOU.SOU_LDLN, new S57enum(5, "lead-line")); Tecsou.put(TecSOU.SOU_WDRG, new S57enum(6, "wire-drag"));
+        Tecsou.put(TecSOU.SOU_LASR, new S57enum(7, "laser")); Tecsou.put(TecSOU.SOU_VACC, new S57enum(8, "vertical_acoustic")); Tecsou.put(TecSOU.SOU_EMAG, new S57enum(9, "electromagnetic"));
+        Tecsou.put(TecSOU.SOU_PHGY, new S57enum(10, "photogrammetry")); Tecsou.put(TecSOU.SOU_SATL, new S57enum(11, "satellite")); Tecsou.put(TecSOU.SOU_LEVL, new S57enum(12, "levelling"));
+        Tecsou.put(TecSOU.SOU_SSSN, new S57enum(13, "side-scan_sonar_swept")); Tecsou.put(TecSOU.SOU_COMP, new S57enum(14, "computer"));
+        Tecsou.put(TecSOU.SOU_LIDR, new S57enum(15, "lidar")); Tecsou.put(TecSOU.SOU_SARD, new S57enum(16, "sa_radar")); Tecsou.put(TecSOU.SOU_HYPS, new S57enum(17, "hyperspectral"));
+    }
+
+    public enum TopSHP { TOP_UNKN, TOP_CONE, TOP_ICONE, TOP_SPHR, TOP_ISD, TOP_CAN, TOP_BORD, TOP_SALT, TOP_CROS, TOP_CUBE, TOP_WEST, TOP_EAST, TOP_RHOM,
+        TOP_NORTH, TOP_SOUTH, TOP_BESM, TOP_IBESM, TOP_FLAG, TOP_SPRH, TOP_SQUR, TOP_HRECT, TOP_VRECT, TOP_TRAP, TOP_ITRAP, TOP_TRI, TOP_ITRI, TOP_CIRC,
+        TOP_CRSS, TOP_T, TOP_TRCL, TOP_CRCL, TOP_RHCL, TOP_CLTR, TOP_OTHR, TOP_CYSP, TOP_COSP, TOP_ARRW }
+
+    private static final EnumMap<TopSHP, S57enum> Topshp = new EnumMap<>(TopSHP.class); static {
+        Topshp.put(TopSHP.TOP_UNKN, new S57enum(0, ""));
+        Topshp.put(TopSHP.TOP_CONE, new S57enum(1, "cone, point up")); Topshp.put(TopSHP.TOP_ICONE, new S57enum(2, "cone, point down")); Topshp.put(TopSHP.TOP_SPHR, new S57enum(3, "sphere"));
+        Topshp.put(TopSHP.TOP_ISD, new S57enum(4, "2 spheres")); Topshp.put(TopSHP.TOP_CAN, new S57enum(5, "cylinder")); Topshp.put(TopSHP.TOP_BORD, new S57enum(6, "board"));
+        Topshp.put(TopSHP.TOP_SALT, new S57enum(7, "x-shape")); Topshp.put(TopSHP.TOP_CROS, new S57enum(8, "cross")); Topshp.put(TopSHP.TOP_CUBE, new S57enum(9, "cube, point up"));
+        Topshp.put(TopSHP.TOP_WEST, new S57enum(10, "2 cones point together")); Topshp.put(TopSHP.TOP_EAST, new S57enum(11, "2 cones base together")); Topshp.put(TopSHP.TOP_RHOM, new S57enum(12, "rhombus"));
+        Topshp.put(TopSHP.TOP_NORTH, new S57enum(13, "2 cones up")); Topshp.put(TopSHP.TOP_SOUTH, new S57enum(14, "2 cones down")); Topshp.put(TopSHP.TOP_BESM, new S57enum(15, "besom, point up"));
+        Topshp.put(TopSHP.TOP_IBESM, new S57enum(16, "besom, point down")); Topshp.put(TopSHP.TOP_FLAG, new S57enum(17, "flag")); Topshp.put(TopSHP.TOP_SPRH, new S57enum(18, "sphere over rhombus"));
+        Topshp.put(TopSHP.TOP_SQUR, new S57enum(19, "square")); Topshp.put(TopSHP.TOP_HRECT, new S57enum(20, "rectangle, horizontal")); Topshp.put(TopSHP.TOP_VRECT, new S57enum(21, "rectangle, vertical"));
+        Topshp.put(TopSHP.TOP_TRAP, new S57enum(22, "trapezium, up")); Topshp.put(TopSHP.TOP_ITRAP, new S57enum(23, "trapezium, down")); Topshp.put(TopSHP.TOP_TRI, new S57enum(24, "triangle, point up"));
+        Topshp.put(TopSHP.TOP_ITRI, new S57enum(25, "triangle, point down")); Topshp.put(TopSHP.TOP_CIRC, new S57enum(26, "circle")); Topshp.put(TopSHP.TOP_CRSS, new S57enum(27, "2 upright crosses"));
+        Topshp.put(TopSHP.TOP_T, new S57enum(28, "t-shape")); Topshp.put(TopSHP.TOP_TRCL, new S57enum(29, "triangle, point up over circle")); Topshp.put(TopSHP.TOP_CRCL, new S57enum(30, "upright cross over circle"));
+        Topshp.put(TopSHP.TOP_RHCL, new S57enum(31, "rhombus over circle")); Topshp.put(TopSHP.TOP_CLTR, new S57enum(32, "circle over triangle, point up")); Topshp.put(TopSHP.TOP_OTHR, new S57enum(33, "other"));
+        Topshp.put(TopSHP.TOP_CYSP, new S57enum(34, "cylinder over sphere")); Topshp.put(TopSHP.TOP_ARRW, new S57enum(99, "arrow"));
+    }
+
+    public enum TrfTRF { TRF_UNKN, TRF_INBD, TRF_OBND, TRF_ONEW, TRF_TWOW }
+
+    private static final EnumMap<TrfTRF, S57enum> Trafic = new EnumMap<>(TrfTRF.class); static {
+        Trafic.put(TrfTRF.TRF_UNKN, new S57enum(0, ""));
+        Trafic.put(TrfTRF.TRF_INBD, new S57enum(1, "inbound")); Trafic.put(TrfTRF.TRF_OBND, new S57enum(2, "outbbound")); Trafic.put(TrfTRF.TRF_ONEW, new S57enum(3, "one-way"));
+        Trafic.put(TrfTRF.TRF_TWOW, new S57enum(4, "two-way"));
+    }
+
+    public enum WatLEV { LEV_UNKN, LEV_PSUB, LEV_DRY, LEV_SUBM, LEV_CVRS, LEV_AWSH, LEV_FLDS, LEV_FLTG, LEV_AMWL, LEV_BMWL }
+
+    private static final EnumMap<WatLEV, S57enum> Watlev = new EnumMap<>(WatLEV.class); static {
+        Watlev.put(WatLEV.LEV_UNKN, new S57enum(0, ""));
+        Watlev.put(WatLEV.LEV_PSUB, new S57enum(1, "part-submerged")); Watlev.put(WatLEV.LEV_DRY, new S57enum(2, "dry")); Watlev.put(WatLEV.LEV_SUBM, new S57enum(3, "submerged"));
+        Watlev.put(WatLEV.LEV_CVRS, new S57enum(4, "covers")); Watlev.put(WatLEV.LEV_AWSH, new S57enum(5, "awash")); Watlev.put(WatLEV.LEV_FLDS, new S57enum(6, "floods"));
+        Watlev.put(WatLEV.LEV_FLTG, new S57enum(7, "floating")); Watlev.put(WatLEV.LEV_AMWL, new S57enum(8, "above_mwl")); Watlev.put(WatLEV.LEV_BMWL, new S57enum(9, "below_mwl"));
+    }
+
+    public enum Cat_TS { TS_UNKN, TS_FLOD, TS_EBB, TS_OTHR }
+
+    private static final EnumMap<Cat_TS, S57enum> Cat_ts = new EnumMap<>(Cat_TS.class); static {
+        Cat_ts.put(Cat_TS.TS_UNKN, new S57enum(0, ""));
+        Cat_ts.put(Cat_TS.TS_FLOD, new S57enum(1, "flood")); Cat_ts.put(Cat_TS.TS_EBB, new S57enum(2, "ebb")); Cat_ts.put(Cat_TS.TS_OTHR, new S57enum(3, "other"));
+    }
+
+    public enum UniPAU { PAU_UNKN, PAU_MTRS, PAU_DGRS, PAU_MMTR, PAU_FEET, PAU_CBLS }
+
+    private static final EnumMap<UniPAU, S57enum> Punits = new EnumMap<>(UniPAU.class); static {
+        Punits.put(UniPAU.PAU_UNKN, new S57enum(0, ""));
+        Punits.put(UniPAU.PAU_MTRS, new S57enum(1, "metres")); Punits.put(UniPAU.PAU_DGRS, new S57enum(2, "degrees")); Punits.put(UniPAU.PAU_MMTR, new S57enum(3, "millimetres"));
+        Punits.put(UniPAU.PAU_FEET, new S57enum(4, "feet")); Punits.put(UniPAU.PAU_CBLS, new S57enum(5, "cables"));
+    }
+
+    public enum QuaPOS { POS_UNKN, POS_SRVD, POS_USRV, POS_PSRV, POS_APRX, POS_DBTF, POS_URLB, POS_RSRV, POS_UCNF, POS_ESTM, POS_PRCS, POS_CALC }
+
+    private static final EnumMap<QuaPOS, S57enum> Quapos = new EnumMap<>(QuaPOS.class); static {
+        Quapos.put(QuaPOS.POS_UNKN, new S57enum(0, ""));
+        Quapos.put(QuaPOS.POS_SRVD, new S57enum(1, "surveyed")); Quapos.put(QuaPOS.POS_USRV, new S57enum(2, "unsurveyed")); Quapos.put(QuaPOS.POS_PSRV, new S57enum(3, "part-surveyed"));
+        Quapos.put(QuaPOS.POS_APRX, new S57enum(4, "approximate")); Quapos.put(QuaPOS.POS_DBTF, new S57enum(5, "doubtful")); Quapos.put(QuaPOS.POS_URLB, new S57enum(6, "unreliable"));
+        Quapos.put(QuaPOS.POS_RSRV, new S57enum(7, "reported_unsurveyd")); Quapos.put(QuaPOS.POS_UCNF, new S57enum(8, "unconfirmed")); Quapos.put(QuaPOS.POS_ESTM, new S57enum(9, "estimated"));
+        Quapos.put(QuaPOS.POS_PRCS, new S57enum(10, "precise")); Quapos.put(QuaPOS.POS_CALC, new S57enum(11, "calculated"));
+    }
+
+    public enum VerDAT { DAT_UNKN, DAT_MLWS, DAT_MLLWS, DAT_MSL, DAT_LLW, DAT_MLW, DAT_LLWS, DAT_AMLWS, DAT_ISLW, DAT_LWS, DAT_ALAT, DAT_NLLW, DAT_MLLW, DAT_LW, DAT_AMLW, DAT_AMLLW,
+        DAT_MHW, DAT_MHWS, DAT_HW, DAT_AMSL, DAT_HWS, DAT_MHHW, DAT_ESLW, DAT_LAT, DAT_LOCAL, DAT_IGLD, DAT_MWL, DAT_LLWLT, DAT_HHWLT, DAT_NHHW, DAT_HAT, DAT_LLWRL, DAT_LHWRL,
+        DAT_LMWRL, DAT_EHW, DAT_HSHW, DAT_RLWL, DAT_HSHWD, DAT_DRLWRL, DAT_RPWL, DAT_RNBL, DAT_OHIO, DAT_BALT }
+
+    private static final EnumMap<VerDAT, S57enum> Verdat = new EnumMap<>(VerDAT.class); static {
+        Verdat.put(VerDAT.DAT_UNKN, new S57enum(0, ""));
+        Verdat.put(VerDAT.DAT_MLWS, new S57enum(1, "mlws")); Verdat.put(VerDAT.DAT_MLLWS, new S57enum(2, "mllws")); Verdat.put(VerDAT.DAT_MSL, new S57enum(3, "msl"));
+        Verdat.put(VerDAT.DAT_LLW, new S57enum(4, "llw")); Verdat.put(VerDAT.DAT_MLW, new S57enum(5, "mlw")); Verdat.put(VerDAT.DAT_LLWS, new S57enum(6, "llws"));
+        Verdat.put(VerDAT.DAT_AMLWS, new S57enum(7, "amlws")); Verdat.put(VerDAT.DAT_ISLW, new S57enum(8, "islw")); Verdat.put(VerDAT.DAT_LWS, new S57enum(9, "lws"));
+        Verdat.put(VerDAT.DAT_ALAT, new S57enum(10, "alat")); Verdat.put(VerDAT.DAT_NLLW, new S57enum(11, "nllw")); Verdat.put(VerDAT.DAT_MLLW, new S57enum(12, "mllw"));
+        Verdat.put(VerDAT.DAT_LW, new S57enum(13, "lw")); Verdat.put(VerDAT.DAT_AMLW, new S57enum(14, "amlw")); Verdat.put(VerDAT.DAT_AMLLW, new S57enum(15, "amllw"));
+        Verdat.put(VerDAT.DAT_MHW, new S57enum(16, "mhw")); Verdat.put(VerDAT.DAT_MHWS, new S57enum(17, "mhws")); Verdat.put(VerDAT.DAT_HW, new S57enum(18, "hw"));
+        Verdat.put(VerDAT.DAT_AMSL, new S57enum(19, "amsl")); Verdat.put(VerDAT.DAT_HWS, new S57enum(20, "hws")); Verdat.put(VerDAT.DAT_MHHW, new S57enum(21, "mhhw"));
+        Verdat.put(VerDAT.DAT_ESLW, new S57enum(22, "eslw")); Verdat.put(VerDAT.DAT_LAT, new S57enum(23, "lat")); Verdat.put(VerDAT.DAT_LOCAL, new S57enum(24, "local"));
+        Verdat.put(VerDAT.DAT_IGLD, new S57enum(25, "igld1985")); Verdat.put(VerDAT.DAT_MWL, new S57enum(26, "mwl")); Verdat.put(VerDAT.DAT_LLWLT, new S57enum(27, "llwlt"));
+        Verdat.put(VerDAT.DAT_HHWLT, new S57enum(28, "hhwlt")); Verdat.put(VerDAT.DAT_NHHW, new S57enum(29, "nhhw")); Verdat.put(VerDAT.DAT_HAT, new S57enum(30, "hat"));
+        Verdat.put(VerDAT.DAT_LLWRL, new S57enum(31, "llwrl")); Verdat.put(VerDAT.DAT_LHWRL, new S57enum(32, "lhwrl")); Verdat.put(VerDAT.DAT_LMWRL, new S57enum(33, "lmwrl"));
+        Verdat.put(VerDAT.DAT_EHW, new S57enum(34, "ehw_dglw")); Verdat.put(VerDAT.DAT_HSHW, new S57enum(35, "hshw_dhsw")); Verdat.put(VerDAT.DAT_RLWL, new S57enum(36, "rlwl_donau"));
+        Verdat.put(VerDAT.DAT_HSHWD, new S57enum(37, "hshw_donau")); Verdat.put(VerDAT.DAT_DRLWRL, new S57enum(38, "drlwrl_olr")); Verdat.put(VerDAT.DAT_RPWL, new S57enum(39, "rpwl"));
+        Verdat.put(VerDAT.DAT_RNBL, new S57enum(40, "rnbl")); Verdat.put(VerDAT.DAT_OHIO, new S57enum(41, "ohio_rd")); Verdat.put(VerDAT.DAT_BALT, new S57enum(44, "baltic_2000"));
+    }
+
+    public enum CatVAN { VAN_UNKN, VAN_NCAR, VAN_SCAR, VAN_ECAR, VAN_WCAR, VAN_PLAT, VAN_SLAT, VAN_PCHP, VAN_PCHS, VAN_IDGR, VAN_SAFW, VAN_SPPM, VAN_WREK }
+
+    private static final EnumMap<CatVAN, S57enum> Catvan = new EnumMap<>(CatVAN.class); static {
+        Catvan.put(CatVAN.VAN_UNKN, new S57enum(0, ""));
+        Catvan.put(CatVAN.VAN_NCAR, new S57enum(1, "north_cardinal")); Catvan.put(CatVAN.VAN_SCAR, new S57enum(2, "south_cardinal"));
+        Catvan.put(CatVAN.VAN_ECAR, new S57enum(3, "east_cardinal")); Catvan.put(CatVAN.VAN_WCAR, new S57enum(4, "west_cardinal"));
+        Catvan.put(CatVAN.VAN_PLAT, new S57enum(5, "port_lateral")); Catvan.put(CatVAN.VAN_SLAT, new S57enum(6, "starboard_lateral"));
+        Catvan.put(CatVAN.VAN_PCHP, new S57enum(7, "preferred_port")); Catvan.put(CatVAN.VAN_PCHS, new S57enum(8, "preferred_starboard"));
+        Catvan.put(CatVAN.VAN_IDGR, new S57enum(9, "isolated_danger")); Catvan.put(CatVAN.VAN_SAFW, new S57enum(10, "safe_water"));
+        Catvan.put(CatVAN.VAN_SPPM, new S57enum(11, "special_purpose")); Catvan.put(CatVAN.VAN_WREK, new S57enum(12, "wreck"));
+    }
+
+    public enum AddMRK { MRK_UNKN, MRK_TOPB, MRK_BOTB, MRK_RTRI, MRK_LTRI, MRK_BTRI }
+
+    private static final EnumMap<AddMRK, S57enum> Addmrk = new EnumMap<>(AddMRK.class); static {
+        Addmrk.put(AddMRK.MRK_UNKN, new S57enum(0, ""));
+        Addmrk.put(AddMRK.MRK_TOPB, new S57enum(1, "top_board")); Addmrk.put(AddMRK.MRK_BOTB, new S57enum(2, "bottom_board")); Addmrk.put(AddMRK.MRK_RTRI, new S57enum(3, "right_triangle"));
+        Addmrk.put(AddMRK.MRK_LTRI, new S57enum(4, "left_triangle")); Addmrk.put(AddMRK.MRK_BTRI, new S57enum(5, "bottom_triangle"));
+    }
+
+    public enum BnkWTW { BWW_UNKN, BWW_LEFT, BWW_RGHT }
+
+    private static final EnumMap<BnkWTW, S57enum> Bnkwtw = new EnumMap<>(BnkWTW.class); static {
+        Bnkwtw.put(BnkWTW.BWW_UNKN, new S57enum(0, ""));
+        Bnkwtw.put(BnkWTW.BWW_LEFT, new S57enum(1, "left")); Bnkwtw.put(BnkWTW.BWW_RGHT, new S57enum(2, "right"));
+    }
+
+    public enum CatNMK { NMK_UNKN, NMK_NENT, NMK_CLSA, NMK_NOVK, NMK_NCOV, NMK_NPAS, NMK_NBRT, NMK_NBLL, NMK_NANK, NMK_NMOR, NMK_NTRN, NMK_NWSH,
+        NMK_NPSL, NMK_NPSR, NMK_NMTC, NMK_NSPC, NMK_NWSK, NMK_NSLC, NMK_NUPC, NMK_NSLB, NMK_NWBK, NMK_NHSC, NMK_NLBG, NMK_MVTL, NMK_MVTR, NMK_MVTP,
+        NMK_MVTS, NMK_KPTP, NMK_KPTS, NMK_CSTP, NMK_CSTS, NMK_STOP, NMK_SPDL, NMK_SHRN, NMK_KPLO, NMK_GWJN, NMK_GWCS, NMK_MKRC, NMK_LMDP, NMK_LMHR,
+        NMK_LMWD, NMK_NAVR, NMK_CHDL, NMK_CHDR, NMK_CHTW, NMK_CHOW, NMK_OPTR, NMK_OPTL, NMK_PRTL, NMK_PRTR, NMK_ENTP, NMK_OVHC, NMK_WEIR, NMK_FERN,
+        NMK_FERI, NMK_BRTP, NMK_BTLL, NMK_BTLS, NMK_BTRL, NMK_BTUP, NMK_BTP1, NMK_BTP2, NMK_BTP3, NMK_BTUN, NMK_BTN1, NMK_BTN2, NMK_BTN3, NMK_BTUM,
+        NMK_BTU1, NMK_BTU2, NMK_BTU3, NMK_ANKP, NMK_MORP, NMK_VLBT, NMK_TRNA, NMK_SWWC, NMK_SWWR, NMK_SWWL, NMK_WRSA, NMK_WLSA, NMK_WRSL, NMK_WLSR,
+        NMK_WRAL, NMK_WLAR, NMK_MWWC, NMK_MWWJ, NMK_MWAR, NMK_MWAL, NMK_WARL, NMK_WALR, NMK_PEND, NMK_DWTR, NMK_TELE, NMK_MTCP, NMK_SPCP, NMK_WSKP,
+        NMK_SLCP, NMK_UPCP, NMK_SLBP, NMK_RADI, NMK_WTBP, NMK_HSCP, NMK_LBGP, NMK_KTPM, NMK_KTSM, NMK_KTMR, NMK_CRTP, NMK_CRTS, NMK_TRBM, NMK_RSPD,
+        NMK_WRKP, NMK_PSBS, NMK_NCPS, NMK_NSMC, NMK_ATTN, NMK_FWCR, NMK_SHIP }
+
+    private static final EnumMap<CatNMK, S57enum> Catnmk = new EnumMap<>(CatNMK.class); static {
+        Catnmk.put(CatNMK.NMK_UNKN, new S57enum(0, ""));
+        Catnmk.put(CatNMK.NMK_NENT, new S57enum(1, "no_entry")); Catnmk.put(CatNMK.NMK_CLSA, new S57enum(2, "closed_area")); Catnmk.put(CatNMK.NMK_NOVK, new S57enum(3, "no_overtaking"));
+        Catnmk.put(CatNMK.NMK_NCOV, new S57enum(4, "no_convoy_overtaking")); Catnmk.put(CatNMK.NMK_NPAS, new S57enum(5, "no_passing")); Catnmk.put(CatNMK.NMK_NBRT, new S57enum(6, "no_berthing"));
+        Catnmk.put(CatNMK.NMK_NBLL, new S57enum(7, "no_berthing_lateral_limit")); Catnmk.put(CatNMK.NMK_NANK, new S57enum(8, "no_anchoring")); Catnmk.put(CatNMK.NMK_NMOR, new S57enum(9, "no_mooring"));
+        Catnmk.put(CatNMK.NMK_NTRN, new S57enum(10, "no_turning")); Catnmk.put(CatNMK.NMK_NWSH, new S57enum(11, "no_wash")); Catnmk.put(CatNMK.NMK_NPSL, new S57enum(12, "no_passage_left"));
+        Catnmk.put(CatNMK.NMK_NPSR, new S57enum(13, "no_passage_right")); Catnmk.put(CatNMK.NMK_NMTC, new S57enum(14, "no_motor_craft")); Catnmk.put(CatNMK.NMK_NSPC, new S57enum(15, "no_sport_craft"));
+        Catnmk.put(CatNMK.NMK_NWSK, new S57enum(16, "no_waterskiing")); Catnmk.put(CatNMK.NMK_NSLC, new S57enum(17, "no_sailing_craft")); Catnmk.put(CatNMK.NMK_NUPC, new S57enum(18, "no_unpowered_craft"));
+        Catnmk.put(CatNMK.NMK_NSLB, new S57enum(19, "no_sailboards")); Catnmk.put(CatNMK.NMK_NWBK, new S57enum(20, "no_waterbikes")); Catnmk.put(CatNMK.NMK_NHSC, new S57enum(21, "no_high_speeds"));
+        Catnmk.put(CatNMK.NMK_NLBG, new S57enum(22, "no_launching_beaching")); Catnmk.put(CatNMK.NMK_MVTL, new S57enum(23, "move_to_left")); Catnmk.put(CatNMK.NMK_MVTR, new S57enum(24, "move_to_right"));
+        Catnmk.put(CatNMK.NMK_MVTP, new S57enum(25, "move_to_port")); Catnmk.put(CatNMK.NMK_MVTS, new S57enum(26, "move_to_starboard")); Catnmk.put(CatNMK.NMK_KPTP, new S57enum(27, "keep_to_port"));
+        Catnmk.put(CatNMK.NMK_KPTS, new S57enum(28, "keep_to_starboard")); Catnmk.put(CatNMK.NMK_CSTP, new S57enum(29, "cross_to_port")); Catnmk.put(CatNMK.NMK_CSTS, new S57enum(30, "cross_to_starboard"));
+        Catnmk.put(CatNMK.NMK_STOP, new S57enum(31, "stop")); Catnmk.put(CatNMK.NMK_SPDL, new S57enum(32, "speed_limit")); Catnmk.put(CatNMK.NMK_SHRN, new S57enum(33, "sound_horn"));
+        Catnmk.put(CatNMK.NMK_KPLO, new S57enum(34, "keep_lookout")); Catnmk.put(CatNMK.NMK_GWJN, new S57enum(35, "give_way_junction")); Catnmk.put(CatNMK.NMK_GWCS, new S57enum(36, "give_way_crossing"));
+        Catnmk.put(CatNMK.NMK_MKRC, new S57enum(37, "make_radio_contact")); Catnmk.put(CatNMK.NMK_LMDP, new S57enum(38, "limited_depth")); Catnmk.put(CatNMK.NMK_LMHR, new S57enum(39, "limited_headroom"));
+        Catnmk.put(CatNMK.NMK_LMWD, new S57enum(40, "limited_width")); Catnmk.put(CatNMK.NMK_NAVR, new S57enum(41, "navigation_restrictions")); Catnmk.put(CatNMK.NMK_CHDL, new S57enum(42, "channel_distance_left"));
+        Catnmk.put(CatNMK.NMK_CHDR, new S57enum(43, "channel_distance_right")); Catnmk.put(CatNMK.NMK_CHTW, new S57enum(44, "channel_two_way")); Catnmk.put(CatNMK.NMK_CHOW, new S57enum(45, "channel_one_way"));
+        Catnmk.put(CatNMK.NMK_OPTR, new S57enum(46, "opening_to_right")); Catnmk.put(CatNMK.NMK_OPTL, new S57enum(47, "opening_to_left")); Catnmk.put(CatNMK.NMK_PRTL, new S57enum(48, "proceed_to_left"));
+        Catnmk.put(CatNMK.NMK_PRTR, new S57enum(49, "proceed_to_right")); Catnmk.put(CatNMK.NMK_ENTP, new S57enum(50, "entry_permitted")); Catnmk.put(CatNMK.NMK_OVHC, new S57enum(51, "overhead_cable"));
+        Catnmk.put(CatNMK.NMK_WEIR, new S57enum(52, "weir")); Catnmk.put(CatNMK.NMK_FERN, new S57enum(53, "ferry_non_independent")); Catnmk.put(CatNMK.NMK_FERI, new S57enum(54, "ferry_independent"));
+        Catnmk.put(CatNMK.NMK_BRTP, new S57enum(55, "berthing_permitted")); Catnmk.put(CatNMK.NMK_BTLL, new S57enum(56, "berthing_lateral_limit")); Catnmk.put(CatNMK.NMK_BTLS, new S57enum(57, "berthing_lateral_limits"));
+        Catnmk.put(CatNMK.NMK_BTRL, new S57enum(58, "berth_rafting_limit")); Catnmk.put(CatNMK.NMK_BTUP, new S57enum(59, "berthing_unmarked_pushing"));
+        Catnmk.put(CatNMK.NMK_BTP1, new S57enum(60, "berthing_marked_pushing_1")); Catnmk.put(CatNMK.NMK_BTP2, new S57enum(61, "berthing_marked_pushing_2"));
+        Catnmk.put(CatNMK.NMK_BTP3, new S57enum(62, "berthing_marked_pushing_3")); Catnmk.put(CatNMK.NMK_BTUN, new S57enum(63, "berthing_unmarked_non-pushing"));
+        Catnmk.put(CatNMK.NMK_BTN1, new S57enum(64, "berthing_marked_non-pushing_1")); Catnmk.put(CatNMK.NMK_BTN2, new S57enum(65, "berthing_marked_non-pushing_2"));
+        Catnmk.put(CatNMK.NMK_BTN3, new S57enum(66, "berthing_marked_non-pushing_3")); Catnmk.put(CatNMK.NMK_BTUM, new S57enum(67, "berthing_unmarked")); Catnmk.put(CatNMK.NMK_BTU1, new S57enum(68, "berthing_marked_1"));
+        Catnmk.put(CatNMK.NMK_BTU2, new S57enum(69, "berthing_marked_2")); Catnmk.put(CatNMK.NMK_BTU3, new S57enum(70, "berthing_marked_3"));
+        Catnmk.put(CatNMK.NMK_ANKP, new S57enum(71, "anchoring_permitted")); Catnmk.put(CatNMK.NMK_MORP, new S57enum(72, "mooring_permitted")); Catnmk.put(CatNMK.NMK_VLBT, new S57enum(73, "vehicle_loading_berth"));
+        Catnmk.put(CatNMK.NMK_TRNA, new S57enum(74, "turning_area")); Catnmk.put(CatNMK.NMK_SWWC, new S57enum(75, "secondary_waterway_crossing")); Catnmk.put(CatNMK.NMK_SWWR, new S57enum(76, "secondary_waterway_right"));
+        Catnmk.put(CatNMK.NMK_SWWL, new S57enum(77, "secondary_waterway_left")); Catnmk.put(CatNMK.NMK_WRSA, new S57enum(78, "main_waterway_right_secondary_ahead"));
+        Catnmk.put(CatNMK.NMK_WLSA, new S57enum(79, "main_waterway_left_secondary_ahead")); Catnmk.put(CatNMK.NMK_WRSL, new S57enum(80, "main_waterway_right_secondary_left"));
+        Catnmk.put(CatNMK.NMK_WLSR, new S57enum(81, "main_waterway_left_secondary_right")); Catnmk.put(CatNMK.NMK_WRAL, new S57enum(82, "main_waterway_right_secondary_ahead_left"));
+        Catnmk.put(CatNMK.NMK_WLAR, new S57enum(83, "main_waterway_left_secondary_ahead_right")); Catnmk.put(CatNMK.NMK_MWWC, new S57enum(84, "main_waterway_crossing"));
+        Catnmk.put(CatNMK.NMK_MWWJ, new S57enum(85, "main_waterway_junction")); Catnmk.put(CatNMK.NMK_MWAR, new S57enum(86, "main_waterway_ahead_right"));
+        Catnmk.put(CatNMK.NMK_MWAL, new S57enum(87, "main_waterway_ahead_left")); Catnmk.put(CatNMK.NMK_WARL, new S57enum(88, "main_waterway_ahead_right_secondary_left"));
+        Catnmk.put(CatNMK.NMK_WALR, new S57enum(89, "main_waterway_ahead_left_secondary_right")); Catnmk.put(CatNMK.NMK_PEND, new S57enum(90, "prohibition_ends"));
+        Catnmk.put(CatNMK.NMK_DWTR, new S57enum(91, "drinking_water")); Catnmk.put(CatNMK.NMK_TELE, new S57enum(92, "telephone")); Catnmk.put(CatNMK.NMK_MTCP, new S57enum(93, "motor_craft_permitted"));
+        Catnmk.put(CatNMK.NMK_SPCP, new S57enum(94, "sport_craft_permitted")); Catnmk.put(CatNMK.NMK_WSKP, new S57enum(95, "waterskiing_permitted")); Catnmk.put(CatNMK.NMK_SLCP, new S57enum(96, "sailing_craft_permitted"));
+        Catnmk.put(CatNMK.NMK_UPCP, new S57enum(97, "unpowered_craft_permitted")); Catnmk.put(CatNMK.NMK_SLBP, new S57enum(98, "sailboards_permitted")); Catnmk.put(CatNMK.NMK_RADI, new S57enum(99, "radio_information"));
+        Catnmk.put(CatNMK.NMK_WTBP, new S57enum(100, "waterbikes_permitted")); Catnmk.put(CatNMK.NMK_HSCP, new S57enum(101, "high_speeds_permitted")); Catnmk.put(CatNMK.NMK_LBGP, new S57enum(102, "launching_beaching_permitted"));
+        Catnmk.put(CatNMK.NMK_KTPM, new S57enum(103, "keep_to_port_margin")); Catnmk.put(CatNMK.NMK_KTSM, new S57enum(104, "keep_to_starboard_margin")); Catnmk.put(CatNMK.NMK_KTMR, new S57enum(105, "keep_to_mid-river"));
+        Catnmk.put(CatNMK.NMK_CRTP, new S57enum(106, "cross_river_to_port")); Catnmk.put(CatNMK.NMK_CRTS, new S57enum(107, "cross_river_to_starboard")); Catnmk.put(CatNMK.NMK_TRBM, new S57enum(108, "traffic_between_margins"));
+        Catnmk.put(CatNMK.NMK_RSPD, new S57enum(109, "reduce_speed")); Catnmk.put(CatNMK.NMK_WRKP, new S57enum(110, "wreck_pontoon")); Catnmk.put(CatNMK.NMK_PSBS, new S57enum(111, "pass_both_sides"));
+        Catnmk.put(CatNMK.NMK_NCPS, new S57enum(112, "no_convoy_passing")); Catnmk.put(CatNMK.NMK_NSMC, new S57enum(113, "no_small_craft")); Catnmk.put(CatNMK.NMK_ATTN, new S57enum(114, "attention"));
+        Catnmk.put(CatNMK.NMK_FWCR, new S57enum(115, "fairway_crossing")); Catnmk.put(CatNMK.NMK_SHIP, new S57enum(112, "shipping_inspection_point"));
+    }
+
+    public enum ClsDNG { DNG_UNKN, DNG_1BLU, DNG_2BLU, DNG_3BLU, DNG_0BLU, DNG_1RED }
+
+    private static final EnumMap<ClsDNG, S57enum> Clsdng = new EnumMap<>(ClsDNG.class); static {
+        Clsdng.put(ClsDNG.DNG_UNKN, new S57enum(0, ""));
+        Clsdng.put(ClsDNG.DNG_1BLU, new S57enum(1, "one_blue")); Clsdng.put(ClsDNG.DNG_2BLU, new S57enum(2, "two_blue")); Clsdng.put(ClsDNG.DNG_3BLU, new S57enum(3, "three_blue"));
+        Clsdng.put(ClsDNG.DNG_0BLU, new S57enum(4, "no_blue")); Clsdng.put(ClsDNG.DNG_1RED, new S57enum(5, "one_red"));
+    }
+
+    public enum DirIMP { IMP_UNKN, IMP_UPST, IMP_DNST, IMP_LTBK, IMP_RTBK, IMP_THBR }
+
+    private static final EnumMap<DirIMP, S57enum> Dirimp = new EnumMap<>(DirIMP.class); static {
+        Dirimp.put(DirIMP.IMP_UNKN, new S57enum(0, ""));
+        Dirimp.put(DirIMP.IMP_UPST, new S57enum(1, "upstream")); Dirimp.put(DirIMP.IMP_DNST, new S57enum(2, "downstream")); Dirimp.put(DirIMP.IMP_LTBK, new S57enum(3, "left_bank"));
+        Dirimp.put(DirIMP.IMP_RTBK, new S57enum(4, "right_bank")); Dirimp.put(DirIMP.IMP_THBR, new S57enum(5, "to_harbour"));
+    }
+
+    public enum FncFNM { FNM_UNKN, FNM_PRHB, FNM_RGLN, FNM_RSTN, FNM_RCMD, FNM_INFO }
+
+    private static final EnumMap<FncFNM, S57enum> Fnctnm = new EnumMap<>(FncFNM.class); static {
+        Fnctnm.put(FncFNM.FNM_UNKN, new S57enum(0, ""));
+        Fnctnm.put(FncFNM.FNM_PRHB, new S57enum(1, "prohibition")); Fnctnm.put(FncFNM.FNM_RGLN, new S57enum(2, "regulation")); Fnctnm.put(FncFNM.FNM_RSTN, new S57enum(3, "restriction"));
+        Fnctnm.put(FncFNM.FNM_RCMD, new S57enum(4, "recommendation")); Fnctnm.put(FncFNM.FNM_INFO, new S57enum(5, "information"));
+    }
+
+    public enum BunVES { VES_UNKN, VES_BVAV, VES_NBVA }
+
+    private static final EnumMap<BunVES, S57enum> Bunves = new EnumMap<>(BunVES.class); static {
+        Bunves.put(BunVES.VES_UNKN, new S57enum(0, ""));
+        Bunves.put(BunVES.VES_BVAV, new S57enum(1, "bunker_vessel_available")); Bunves.put(BunVES.VES_NBVA, new S57enum(2, "no_bunker_vessel_available"));
+    }
+
+    public enum CatBRT { BRT_UNKN, BRT_LODG, BRT_ULDG, BRT_OVNT, BRT_PSHN, BRT_NPSH, BRT_FLTG, BRT_FCLS, BRT_SCLS }
+
+    private static final EnumMap<CatBRT, S57enum> Catbrt = new EnumMap<>(CatBRT.class); static {
+        Catbrt.put(CatBRT.BRT_UNKN, new S57enum(0, ""));
+        Catbrt.put(CatBRT.BRT_LODG, new S57enum(1, "loading")); Catbrt.put(CatBRT.BRT_ULDG, new S57enum(2, "unloading")); Catbrt.put(CatBRT.BRT_OVNT, new S57enum(3, "overnight_accommodation"));
+        Catbrt.put(CatBRT.BRT_PSHN, new S57enum(4, "pushing-navigation")); Catbrt.put(CatBRT.BRT_NPSH, new S57enum(5, "non-pushing-navigation"));
+        Catbrt.put(CatBRT.BRT_FLTG, new S57enum(6, "fleeting")); Catbrt.put(CatBRT.BRT_FCLS, new S57enum(7, "first_class")); Catbrt.put(CatBRT.BRT_SCLS, new S57enum(8, "second_class"));
+    }
+
+    public enum CatBUN { BUN_UNKN, BUN_DESL, BUN_WATR, BUN_BLST }
+
+    private static final EnumMap<CatBUN, S57enum> Catbun = new EnumMap<>(CatBUN.class); static {
+        Catbun.put(CatBUN.BUN_UNKN, new S57enum(0, ""));
+        Catbun.put(CatBUN.BUN_DESL, new S57enum(1, "diesel")); Catbun.put(CatBUN.BUN_WATR, new S57enum(2, "water")); Catbun.put(CatBUN.BUN_BLST, new S57enum(3, "ballast"));
+    }
+
+    public enum CatCCL { CCL_UNKN, CCL_SMLV, CCL_PNCH, CCL_CMPB, CCL_DMEB, CCL_RHNB, CCL_1BPT, CCL_2PTL, CCL_2PTW, CCL_4BPT, CCL_6BPT, CCL_NCCL }
+
+    private static final EnumMap<CatCCL, S57enum> Catccl = new EnumMap<>(CatCCL.class); static {
+        Catccl.put(CatCCL.CCL_UNKN, new S57enum(0, ""));
+        Catccl.put(CatCCL.CCL_SMLV, new S57enum(1, "small_vessels")); Catccl.put(CatCCL.CCL_PNCH, new S57enum(2, "peniche")); Catccl.put(CatCCL.CCL_CMPB, new S57enum(3, "campine_barge"));
+        Catccl.put(CatCCL.CCL_DMEB, new S57enum(4, "dortmund-ems_barge")); Catccl.put(CatCCL.CCL_RHNB, new S57enum(5, "rhine-herne_barge")); Catccl.put(CatCCL.CCL_1BPT, new S57enum(6, "1-barge_push-tow"));
+        Catccl.put(CatCCL.CCL_2PTL, new S57enum(7, "2-barge_push-tow_long")); Catccl.put(CatCCL.CCL_2PTW, new S57enum(8, "2-barge_push-tow_wide")); Catccl.put(CatCCL.CCL_4BPT, new S57enum(9, "4-barge_push-tow"));
+        Catccl.put(CatCCL.CCL_6BPT, new S57enum(10, "6-barge_push-tow")); Catccl.put(CatCCL.CCL_NCCL, new S57enum(11, "no_cemt_class"));
+    }
+
+    public enum CatCOM { COM_UNKN, COM_VTSC, COM_VTSS, COM_IVSP, COM_MID, COM_LOCK, COM_BRDG, COM_CSTM, COM_HRBR }
+
+    private static final EnumMap<CatCOM, S57enum> Catcom = new EnumMap<>(CatCOM.class); static {
+        Catcom.put(CatCOM.COM_UNKN, new S57enum(0, ""));
+        Catcom.put(CatCOM.COM_VTSC, new S57enum(1, "vts_centre")); Catcom.put(CatCOM.COM_VTSS, new S57enum(2, "vts_sector")); Catcom.put(CatCOM.COM_IVSP, new S57enum(3, "ivs_point"));
+        Catcom.put(CatCOM.COM_MID, new S57enum(4, "mib")); Catcom.put(CatCOM.COM_LOCK, new S57enum(5, "lock")); Catcom.put(CatCOM.COM_BRDG, new S57enum(6, "bridge"));
+        Catcom.put(CatCOM.COM_CSTM, new S57enum(7, "customs")); Catcom.put(CatCOM.COM_HRBR, new S57enum(8, "harbour"));
+    }
+
+    public enum CatHBR { HBR_UNKN, HBR_CSTM, HBR_REFG, HBR_MRNA, HBR_FISH, HBR_PRIV, HBR_ }
+
+    private static final EnumMap<CatHBR, S57enum> Cathbr = new EnumMap<>(CatHBR.class); static {
+        Cathbr.put(CatHBR.HBR_UNKN, new S57enum(0, ""));
+        Cathbr.put(CatHBR.HBR_CSTM, new S57enum(1, "customs")); Cathbr.put(CatHBR.HBR_REFG, new S57enum(2, "refuge")); Cathbr.put(CatHBR.HBR_MRNA, new S57enum(3, "marina"));
+        Cathbr.put(CatHBR.HBR_FISH, new S57enum(4, "fishing")); Cathbr.put(CatHBR.HBR_PRIV, new S57enum(5, "private"));
+    }
+
+    public enum CatRFD { RFD_UNKN, RFD_CRSD, RFD_WOIL, RFD_GBWT, RFD_DREF }
+
+    private static final EnumMap<CatRFD, S57enum> Catrfd = new EnumMap<>(CatRFD.class); static {
+        Catrfd.put(CatRFD.RFD_UNKN, new S57enum(0, ""));
+        Catrfd.put(CatRFD.RFD_CRSD, new S57enum(1, "cargo_residue")); Catrfd.put(CatRFD.RFD_WOIL, new S57enum(2, "waste_oil")); Catrfd.put(CatRFD.RFD_GBWT, new S57enum(3, "grey_black_water"));
+        Catrfd.put(CatRFD.RFD_DREF, new S57enum(4, "domestic_refuse"));
+    }
+
+    public enum CatTML { TML_UNKN, TML_PSGR, TML_FERY, TML_TSPT, TML_RORO }
+
+    private static final EnumMap<CatTML, S57enum> Cattml = new EnumMap<>(CatTML.class); static {
+        Cattml.put(CatTML.TML_UNKN, new S57enum(0, ""));
+        Cattml.put(CatTML.TML_PSGR, new S57enum(1, "passenger")); Cattml.put(CatTML.TML_FERY, new S57enum(2, "ferry")); Cattml.put(CatTML.TML_TSPT, new S57enum(3, "transhipment"));
+        Cattml.put(CatTML.TML_RORO, new S57enum(4, "roro"));
+    }
+
+    public enum TrsTGD { TGD_UNKN, TGD_CONT, TGD_BULK, TGD_OIL, TGD_FUEL, TGD_CHEM, TGD_LIQD, TGD_EXPL, TGD_FISH, TGD_CARS, TGD_GNRL }
+
+    private static final EnumMap<TrsTGD, S57enum> Trshgd = new EnumMap<>(TrsTGD.class); static {
+        Trshgd.put(TrsTGD.TGD_UNKN, new S57enum(0, ""));
+        Trshgd.put(TrsTGD.TGD_CONT, new S57enum(1, "containers")); Trshgd.put(TrsTGD.TGD_BULK, new S57enum(2, "bulk")); Trshgd.put(TrsTGD.TGD_OIL, new S57enum(3, "oil"));
+        Trshgd.put(TrsTGD.TGD_FUEL, new S57enum(4, "fuel")); Trshgd.put(TrsTGD.TGD_CHEM, new S57enum(5, "chemicals")); Trshgd.put(TrsTGD.TGD_LIQD, new S57enum(6, "liquid"));
+        Trshgd.put(TrsTGD.TGD_EXPL, new S57enum(7, "explosive")); Trshgd.put(TrsTGD.TGD_FISH, new S57enum(8, "fish")); Trshgd.put(TrsTGD.TGD_CARS, new S57enum(9, "cars"));
+        Trshgd.put(TrsTGD.TGD_GNRL, new S57enum(10, "general"));
+    }
+
+    public enum CatGAG { GAG_UNKN, GAG_STAF, GAG_RCRD, GAG_RCRA, GAG_RCEI, GAG_RRAI }
+
+    private static final EnumMap<CatGAG, S57enum> Catgag = new EnumMap<>(CatGAG.class); static {
+        Catgag.put(CatGAG.GAG_UNKN, new S57enum(0, ""));
+        Catgag.put(CatGAG.GAG_STAF, new S57enum(1, "staff")); Catgag.put(CatGAG.GAG_RCRD, new S57enum(2, "recording")); Catgag.put(CatGAG.GAG_RCRA, new S57enum(3, "recording_remote_access"));
+        Catgag.put(CatGAG.GAG_RCEI, new S57enum(4, "recording_external_indicator")); Catgag.put(CatGAG.GAG_RRAI, new S57enum(5, "recording_remote_access_indicator"));
+    }
+
+    public enum RefLEV { LEV_UNKN, LEV_BALT, LEV_ADRC, LEV_AMSD, LEV_MSL, LEV_OTHR, LEV_NG29, LEV_NA88, LEV_1912, LEV_1929 }
+
+    private static final EnumMap<RefLEV, S57enum> Reflev = new EnumMap<>(RefLEV.class); static {
+        Reflev.put(RefLEV.LEV_UNKN, new S57enum(0, ""));
+        Reflev.put(RefLEV.LEV_BALT, new S57enum(1, "baltic")); Reflev.put(RefLEV.LEV_ADRC, new S57enum(2, "adriatic")); Reflev.put(RefLEV.LEV_AMSD, new S57enum(3, "amsterdam"));
+        Reflev.put(RefLEV.LEV_MSL, new S57enum(4, "msl")); Reflev.put(RefLEV.LEV_OTHR, new S57enum(5, "other")); Reflev.put(RefLEV.LEV_NG29, new S57enum(6, "ngvd29"));
+        Reflev.put(RefLEV.LEV_NA88, new S57enum(7, "navd88")); Reflev.put(RefLEV.LEV_1912, new S57enum(8, "msl1912")); Reflev.put(RefLEV.LEV_1929, new S57enum(9, "msl1929"));
+    }
+
+    public enum CatVTR { VTR_UNKN, VTR_OFFL, VTR_PRIV, VTR_CARC, VTR_CARP, VTR_PREQ, VTR_LGAT }
+
+    private static final EnumMap<CatVTR, S57enum> Catvtr = new EnumMap<>(CatVTR.class); static {
+        Catvtr.put(CatVTR.VTR_UNKN, new S57enum(0, ""));
+        Catvtr.put(CatVTR.VTR_OFFL, new S57enum(1, "official")); Catvtr.put(CatVTR.VTR_PRIV, new S57enum(2, "private")); Catvtr.put(CatVTR.VTR_CARC, new S57enum(3, "car_cranes"));
+        Catvtr.put(CatVTR.VTR_CARP, new S57enum(4, "car_planks")); Catvtr.put(CatVTR.VTR_PREQ, new S57enum(5, "permission_required")); Catvtr.put(CatVTR.VTR_LGAT, new S57enum(6, "locked_gate"));
+    }
+
+    public enum CatTAB { TAB_UNKN, TAB_OPPD, TAB_NOPP }
+
+    private static final EnumMap<CatTAB, S57enum> Cattab = new EnumMap<>(CatTAB.class); static {
+        Cattab.put(CatTAB.TAB_UNKN, new S57enum(0, ""));
+        Cattab.put(CatTAB.TAB_OPPD, new S57enum(1, "operational_period")); Cattab.put(CatTAB.TAB_NOPP, new S57enum(2, "non-operational_period"));
+    }
+
+    public enum UseSHP { SHP_UNKN, SHP_LINT, SHP_OCSH, SHP_LESR }
+
+    private static final EnumMap<UseSHP, S57enum> Useshp = new EnumMap<>(UseSHP.class); static {
+        Useshp.put(UseSHP.SHP_UNKN, new S57enum(0, ""));
+        Useshp.put(UseSHP.SHP_LINT, new S57enum(1, "liner_trade")); Useshp.put(UseSHP.SHP_OCSH, new S57enum(2, "occasional_professional_shipping")); Useshp.put(UseSHP.SHP_LESR, new S57enum(3, "leisure"));
+    }
+
+    public enum CatEXS { EXS_UNKN, EXS_LLOK, EXS_AQDT, EXS_SPLK, EXS_WSLK, EXS_OTHR }
+
+    private static final EnumMap<CatEXS, S57enum> Catexs = new EnumMap<>(CatEXS.class); static {
+        Catexs.put(CatEXS.EXS_UNKN, new S57enum(0, ""));
+        Catexs.put(CatEXS.EXS_LLOK, new S57enum(1, "lift-lock")); Catexs.put(CatEXS.EXS_AQDT, new S57enum(2, "aqueduct")); Catexs.put(CatEXS.EXS_SPLK, new S57enum(3, "sloping_plane_lock"));
+        Catexs.put(CatEXS.EXS_WSLK, new S57enum(4, "water_slope_lock")); Catexs.put(CatEXS.EXS_OTHR, new S57enum(5, "other"));
+    }
+
+    public enum CatWWM { WWM_UNKN, WWM_WWRT, WWM_WWLT, WWM_WWSP, WWM_CHRT, WWM_CHLT, WWM_CHSP, WWM_CHRB, WWM_CHLB, WWM_CORT, WWM_COLT, WWM_DGRT, WWM_DGLT,
+        WWM_TORT, WWM_TOLT, WWM_JNRT, WWM_JNLT, WWM_HBRT, WWM_HBLT, WWM_BRPR }
+
+    private static final EnumMap<CatWWM, S57enum> Catwwm = new EnumMap<>(CatWWM.class); static {
+        Catwwm.put(CatWWM.WWM_UNKN, new S57enum(0, ""));
+        Catwwm.put(CatWWM.WWM_WWRT, new S57enum(1, "waterway_right")); Catwwm.put(CatWWM.WWM_WWLT, new S57enum(2, "waterway_left")); Catwwm.put(CatWWM.WWM_WWSP, new S57enum(3, "waterway_separation"));
+        Catwwm.put(CatWWM.WWM_CHRT, new S57enum(4, "channel_right")); Catwwm.put(CatWWM.WWM_CHLT, new S57enum(5, "channel_left")); Catwwm.put(CatWWM.WWM_CHSP, new S57enum(6, "channel_separation"));
+        Catwwm.put(CatWWM.WWM_CHRB, new S57enum(7, "channel_right_bank")); Catwwm.put(CatWWM.WWM_CHLB, new S57enum(8, "channel_left_bank")); Catwwm.put(CatWWM.WWM_CORT, new S57enum(9, "crossover_right"));
+        Catwwm.put(CatWWM.WWM_COLT, new S57enum(10, "crossover_left")); Catwwm.put(CatWWM.WWM_DGRT, new S57enum(11, "danger_right")); Catwwm.put(CatWWM.WWM_DGLT, new S57enum(12, "danger_left"));
+        Catwwm.put(CatWWM.WWM_TORT, new S57enum(13, "turnoff_right")); Catwwm.put(CatWWM.WWM_TOLT, new S57enum(14, "turnoff_left")); Catwwm.put(CatWWM.WWM_JNRT, new S57enum(15, "junction_right"));
+        Catwwm.put(CatWWM.WWM_JNLT, new S57enum(16, "junction_left")); Catwwm.put(CatWWM.WWM_HBRT, new S57enum(17, "harbour_right")); Catwwm.put(CatWWM.WWM_HBLT, new S57enum(18, "harbour_left"));
+        Catwwm.put(CatWWM.WWM_BRPR, new S57enum(19, "bridge_pier"));
+    }
+
+    public enum Lg_SPR { SPR_UNKN, SPR_OTHR, SPR_SPOG, SPR_SPTW }
+
+    private static final EnumMap<Lg_SPR, S57enum> Lg_spr = new EnumMap<>(Lg_SPR.class); static {
+        Lg_spr.put(Lg_SPR.SPR_UNKN, new S57enum(0, ""));
+        Lg_spr.put(Lg_SPR.SPR_OTHR, new S57enum(1, "other")); Lg_spr.put(Lg_SPR.SPR_SPOG, new S57enum(2, "speed_over_ground")); Lg_spr.put(Lg_SPR.SPR_SPTW, new S57enum(3, "speed_through_water"));
+    }
+
+    public enum Lg_WDU { WDU_UNKN, WDU_OTHR, WDU_CUMT, WDU_TONS }
+
+    private static final EnumMap<Lg_WDU, S57enum> Lg_wdu = new EnumMap<>(Lg_WDU.class); static {
+        Lg_wdu.put(Lg_WDU.WDU_UNKN, new S57enum(0, ""));
+        Lg_wdu.put(Lg_WDU.WDU_OTHR, new S57enum(1, "other")); Lg_wdu.put(Lg_WDU.WDU_CUMT, new S57enum(2, "cubic_metres")); Lg_wdu.put(Lg_WDU.WDU_TONS, new S57enum(3, "tonnes"));
+    }
+
+    public enum Lg_REL { REL_UNKN, REL_OTHR, REL_USWW, REL_CREQ, REL_TKOP }
+
+    private static final EnumMap<Lg_REL, S57enum> Lg_rel = new EnumMap<>(Lg_REL.class); static {
+        Lg_rel.put(Lg_REL.REL_UNKN, new S57enum(0, ""));
+        Lg_rel.put(Lg_REL.REL_OTHR, new S57enum(1, "other")); Lg_rel.put(Lg_REL.REL_USWW, new S57enum(2, "usage_of_waterway")); Lg_rel.put(Lg_REL.REL_CREQ, new S57enum(3, "carriage_of_equipment"));
+        Lg_rel.put(Lg_REL.REL_TKOP, new S57enum(4, "task_operation"));
+    }
+
+    public enum Lg_FNC { FNC_UNKN, FNC_OTHR, FNC_PRHB, FNC_PRHE, FNC_PERM, FNC_PERE, FNC_RCMD, FNC_NRCD }
+
+    private static final EnumMap<Lg_FNC, S57enum> Lg_fnc = new EnumMap<>(Lg_FNC.class); static {
+        Lg_fnc.put(Lg_FNC.FNC_UNKN, new S57enum(0, ""));
+        Lg_fnc.put(Lg_FNC.FNC_OTHR, new S57enum(1, "other")); Lg_fnc.put(Lg_FNC.FNC_PRHB, new S57enum(2, "prohibited")); Lg_fnc.put(Lg_FNC.FNC_PRHE, new S57enum(3, "prohibited_with_exceptions"));
+        Lg_fnc.put(Lg_FNC.FNC_PERM, new S57enum(4, "permitted")); Lg_fnc.put(Lg_FNC.FNC_PERE, new S57enum(5, "permitted_with_exceptions")); Lg_fnc.put(Lg_FNC.FNC_RCMD, new S57enum(6, "recommended"));
+        Lg_fnc.put(Lg_FNC.FNC_NRCD, new S57enum(7, "not_recommended"));
+    }
+
+    public enum Lc_CSX { CSX_UNKN, CSX_ALL, CSX_OTHR, CSX_NMOT, CSX_CRFT, CSX_VSSL, CSX_ILWW, CSX_SEAG, CSX_MOTR, CSX_MTNK, CSX_MCGO, CSX_CBRG, CSX_TUG, CSX_PSHR, CSX_BARG, CSX_TNKB,
+        CSX_DMBB, CSX_LGTR, CSX_TNKL, CSX_CGOL, CSX_SBLR, CSX_PSGR, CSX_PSGS, CSX_DAYT, CSX_CABN, CSX_HSPD, CSX_FLEQ, CSX_WSIT, CSX_RCNL, CSX_DNGY, CSX_FEST, CSX_FOBJ }
+
+    private static final EnumMap<Lc_CSX, S57enum> Lc_csi = new EnumMap<>(Lc_CSX.class); static {
+        Lc_csi.put(Lc_CSX.CSX_UNKN, new S57enum(0, ""));
+        Lc_csi.put(Lc_CSX.CSX_ALL, new S57enum(1, "all")); Lc_csi.put(Lc_CSX.CSX_OTHR, new S57enum(2, "other")); Lc_csi.put(Lc_CSX.CSX_NMOT, new S57enum(3, "non-motorized"));
+        Lc_csi.put(Lc_CSX.CSX_CRFT, new S57enum(5, "craft")); Lc_csi.put(Lc_CSX.CSX_VSSL, new S57enum(6, "vessel")); Lc_csi.put(Lc_CSX.CSX_ILWW, new S57enum(7, "inland_waterway"));
+        Lc_csi.put(Lc_CSX.CSX_SEAG, new S57enum(8, "sea-going")); Lc_csi.put(Lc_CSX.CSX_MOTR, new S57enum(9, "motor")); Lc_csi.put(Lc_CSX.CSX_MTNK, new S57enum(10, "motor_tanker"));
+        Lc_csi.put(Lc_CSX.CSX_MCGO, new S57enum(11, "motor_cargo")); Lc_csi.put(Lc_CSX.CSX_CBRG, new S57enum(12, "canal_barge")); Lc_csi.put(Lc_CSX.CSX_TUG, new S57enum(13, "tug"));
+        Lc_csi.put(Lc_CSX.CSX_PSHR, new S57enum(14, "pusher")); Lc_csi.put(Lc_CSX.CSX_BARG, new S57enum(15, "barge")); Lc_csi.put(Lc_CSX.CSX_TNKB, new S57enum(16, "tank_barge"));
+        Lc_csi.put(Lc_CSX.CSX_DMBB, new S57enum(17, "dumb_barge")); Lc_csi.put(Lc_CSX.CSX_LGTR, new S57enum(18, "lighter")); Lc_csi.put(Lc_CSX.CSX_TNKL, new S57enum(19, "tank_lighter"));
+        Lc_csi.put(Lc_CSX.CSX_CGOL, new S57enum(20, "cargo_lighter")); Lc_csi.put(Lc_CSX.CSX_SBLR, new S57enum(21, "ship_borne_lighter")); Lc_csi.put(Lc_CSX.CSX_PSGR, new S57enum(22, "passenger"));
+        Lc_csi.put(Lc_CSX.CSX_PSGS, new S57enum(23, "passenger_sailing")); Lc_csi.put(Lc_CSX.CSX_DAYT, new S57enum(24, "day_trip")); Lc_csi.put(Lc_CSX.CSX_CABN, new S57enum(25, "cabin"));
+        Lc_csi.put(Lc_CSX.CSX_HSPD, new S57enum(26, "high-speed")); Lc_csi.put(Lc_CSX.CSX_FLEQ, new S57enum(27, "floating_equipment")); Lc_csi.put(Lc_CSX.CSX_WSIT, new S57enum(28, "worksite"));
+        Lc_csi.put(Lc_CSX.CSX_RCNL, new S57enum(29, "recreational")); Lc_csi.put(Lc_CSX.CSX_DNGY, new S57enum(30, "dinghy")); Lc_csi.put(Lc_CSX.CSX_FEST, new S57enum(31, "floating_establishment"));
+        Lc_csi.put(Lc_CSX.CSX_FOBJ, new S57enum(32, "floating_object"));
+    }
+
+    private static final EnumMap<Lc_CSX, S57enum> Lc_cse = new EnumMap<>(Lc_CSX.class); static {
+        Lc_cse.put(Lc_CSX.CSX_UNKN, new S57enum(0, ""));
+        Lc_cse.put(Lc_CSX.CSX_ALL, new S57enum(1, "all")); Lc_cse.put(Lc_CSX.CSX_OTHR, new S57enum(2, "other")); Lc_cse.put(Lc_CSX.CSX_NMOT, new S57enum(3, "non-motorized"));
+        Lc_cse.put(Lc_CSX.CSX_CRFT, new S57enum(5, "craft")); Lc_cse.put(Lc_CSX.CSX_VSSL, new S57enum(6, "vessel")); Lc_cse.put(Lc_CSX.CSX_ILWW, new S57enum(7, "inland_waterway"));
+        Lc_cse.put(Lc_CSX.CSX_SEAG, new S57enum(8, "sea-going")); Lc_cse.put(Lc_CSX.CSX_MOTR, new S57enum(9, "motor")); Lc_cse.put(Lc_CSX.CSX_MTNK, new S57enum(10, "motor_tanker"));
+        Lc_cse.put(Lc_CSX.CSX_MCGO, new S57enum(11, "motor_cargo")); Lc_cse.put(Lc_CSX.CSX_CBRG, new S57enum(12, "canal_barge")); Lc_cse.put(Lc_CSX.CSX_TUG, new S57enum(13, "tug"));
+        Lc_cse.put(Lc_CSX.CSX_PSHR, new S57enum(14, "pusher")); Lc_cse.put(Lc_CSX.CSX_BARG, new S57enum(15, "barge")); Lc_cse.put(Lc_CSX.CSX_TNKB, new S57enum(16, "tank_barge"));
+        Lc_cse.put(Lc_CSX.CSX_DMBB, new S57enum(17, "dumb_barge")); Lc_cse.put(Lc_CSX.CSX_LGTR, new S57enum(18, "lighter")); Lc_cse.put(Lc_CSX.CSX_TNKL, new S57enum(19, "tank_lighter"));
+        Lc_cse.put(Lc_CSX.CSX_CGOL, new S57enum(20, "cargo_lighter")); Lc_cse.put(Lc_CSX.CSX_SBLR, new S57enum(21, "ship_borne_lighter")); Lc_cse.put(Lc_CSX.CSX_PSGR, new S57enum(22, "passenger"));
+        Lc_cse.put(Lc_CSX.CSX_PSGS, new S57enum(23, "passenger_sailing")); Lc_cse.put(Lc_CSX.CSX_DAYT, new S57enum(24, "day_trip")); Lc_cse.put(Lc_CSX.CSX_CABN, new S57enum(25, "cabin"));
+        Lc_cse.put(Lc_CSX.CSX_HSPD, new S57enum(26, "high-speed")); Lc_cse.put(Lc_CSX.CSX_FLEQ, new S57enum(27, "floating_equipment")); Lc_cse.put(Lc_CSX.CSX_WSIT, new S57enum(28, "worksite"));
+        Lc_cse.put(Lc_CSX.CSX_RCNL, new S57enum(29, "recreational")); Lc_cse.put(Lc_CSX.CSX_DNGY, new S57enum(30, "dinghy")); Lc_cse.put(Lc_CSX.CSX_FEST, new S57enum(31, "floating_establishment"));
+        Lc_cse.put(Lc_CSX.CSX_FOBJ, new S57enum(32, "floating_object"));
+    }
+
+    public enum Lc_ASX { ASX_UNKN, ASX_ALL, ASX_OTHR, ASX_SNGL, ASX_CONV, ASX_FMTN, ASX_RCNV, ASX_PCNV, ASX_BSTD, ASX_TCNV }
+
+    private static final EnumMap<Lc_ASX, S57enum> Lc_asi = new EnumMap<>(Lc_ASX.class); static {
+        Lc_asi.put(Lc_ASX.ASX_UNKN, new S57enum(0, ""));
+        Lc_asi.put(Lc_ASX.ASX_ALL, new S57enum(1, "all")); Lc_asi.put(Lc_ASX.ASX_OTHR, new S57enum(2, "other")); Lc_asi.put(Lc_ASX.ASX_SNGL, new S57enum(3, "single"));
+        Lc_asi.put(Lc_ASX.ASX_CONV, new S57enum(5, "convoy")); Lc_asi.put(Lc_ASX.ASX_FMTN, new S57enum(6, "formation")); Lc_asi.put(Lc_ASX.ASX_RCNV, new S57enum(7, "rigid_convoy"));
+        Lc_asi.put(Lc_ASX.ASX_PCNV, new S57enum(8, "pushed_convoy")); Lc_asi.put(Lc_ASX.ASX_BSTD, new S57enum(9, "breasted")); Lc_asi.put(Lc_ASX.ASX_TCNV, new S57enum(10, "towed_convoy"));
+    }
+
+    private static final EnumMap<Lc_ASX, S57enum> Lc_ase = new EnumMap<>(Lc_ASX.class); static {
+        Lc_ase.put(Lc_ASX.ASX_UNKN, new S57enum(0, ""));
+        Lc_ase.put(Lc_ASX.ASX_ALL, new S57enum(1, "all")); Lc_ase.put(Lc_ASX.ASX_OTHR, new S57enum(2, "other")); Lc_ase.put(Lc_ASX.ASX_SNGL, new S57enum(3, "single"));
+        Lc_ase.put(Lc_ASX.ASX_CONV, new S57enum(5, "convoy")); Lc_ase.put(Lc_ASX.ASX_FMTN, new S57enum(6, "formation")); Lc_ase.put(Lc_ASX.ASX_RCNV, new S57enum(7, "rigid_convoy"));
+        Lc_ase.put(Lc_ASX.ASX_PCNV, new S57enum(8, "pushed_convoy")); Lc_ase.put(Lc_ASX.ASX_BSTD, new S57enum(9, "breasted")); Lc_ase.put(Lc_ASX.ASX_TCNV, new S57enum(10, "towed_convoy"));
+    }
+
+    public enum Lc_CCX { CCX_UNKN, CCX_ALL, CCX_OTHR, CCX_BULK, CCX_DRY, CCX_LIQD, CCX_LQDN, CCX_LQDC, CCX_GAS }
+
+    private static final EnumMap<Lc_CCX, S57enum> Lc_cci = new EnumMap<>(Lc_CCX.class); static {
+        Lc_cci.put(Lc_CCX.CCX_UNKN, new S57enum(0, ""));
+        Lc_cci.put(Lc_CCX.CCX_ALL, new S57enum(1, "all")); Lc_cci.put(Lc_CCX.CCX_OTHR, new S57enum(2, "other")); Lc_cci.put(Lc_CCX.CCX_BULK, new S57enum(4, "bulk"));
+        Lc_cci.put(Lc_CCX.CCX_DRY, new S57enum(5, "dry")); Lc_cci.put(Lc_CCX.CCX_LIQD, new S57enum(6, "liquid")); Lc_cci.put(Lc_CCX.CCX_LQDN, new S57enum(7, "liquid_n"));
+        Lc_cci.put(Lc_CCX.CCX_LQDC, new S57enum(8, "liquid_c")); Lc_cci.put(Lc_CCX.CCX_GAS, new S57enum(9, "gas"));
+    }
+
+    private static final EnumMap<Lc_CCX, S57enum> Lc_cce = new EnumMap<>(Lc_CCX.class); static {
+        Lc_cce.put(Lc_CCX.CCX_UNKN, new S57enum(0, ""));
+        Lc_cce.put(Lc_CCX.CCX_ALL, new S57enum(1, "all")); Lc_cce.put(Lc_CCX.CCX_OTHR, new S57enum(2, "other")); Lc_cce.put(Lc_CCX.CCX_BULK, new S57enum(4, "bulk"));
+        Lc_cce.put(Lc_CCX.CCX_DRY, new S57enum(5, "dry")); Lc_cce.put(Lc_CCX.CCX_LIQD, new S57enum(6, "liquid")); Lc_cce.put(Lc_CCX.CCX_LQDN, new S57enum(7, "liquid_n"));
+        Lc_cce.put(Lc_CCX.CCX_LQDC, new S57enum(8, "liquid_c")); Lc_cce.put(Lc_CCX.CCX_GAS, new S57enum(9, "gas"));
+    }
+
+    public enum ShpTYP { TYP_UNKN, TYP_CRGO, TYP_CONT, TYP_TNKR, TYP_SAIL, TYP_FISH, TYP_SPPS, TYP_MOWR, TYP_SUBM, TYP_HSPD, TYP_BCAR, TYP_SPLN, TYP_TUGB, TYP_PSGR, TYP_FERY, TYP_BOAT }
+
+    private static final EnumMap<ShpTYP, S57enum> Shptyp = new EnumMap<>(ShpTYP.class); static {
+        Shptyp.put(ShpTYP.TYP_UNKN, new S57enum(0, ""));
+        Shptyp.put(ShpTYP.TYP_CRGO, new S57enum(1, "cargo")); Shptyp.put(ShpTYP.TYP_CONT, new S57enum(2, "container")); Shptyp.put(ShpTYP.TYP_TNKR, new S57enum(3, "tanker"));
+        Shptyp.put(ShpTYP.TYP_SAIL, new S57enum(4, "sailing")); Shptyp.put(ShpTYP.TYP_FISH, new S57enum(5, "fishing")); Shptyp.put(ShpTYP.TYP_SPPS, new S57enum(6, "special_purpose."));
+        Shptyp.put(ShpTYP.TYP_MOWR, new S57enum(7, "man_of_war")); Shptyp.put(ShpTYP.TYP_SUBM, new S57enum(8, "submarine")); Shptyp.put(ShpTYP.TYP_HSPD, new S57enum(9, "high-speed"));
+        Shptyp.put(ShpTYP.TYP_BCAR, new S57enum(10, "bulk_carrier")); Shptyp.put(ShpTYP.TYP_SPLN, new S57enum(11, "seaplane")); Shptyp.put(ShpTYP.TYP_TUGB, new S57enum(12, "tugboat"));
+        Shptyp.put(ShpTYP.TYP_PSGR, new S57enum(13, "passenger")); Shptyp.put(ShpTYP.TYP_FERY, new S57enum(14, "ferry")); Shptyp.put(ShpTYP.TYP_BOAT, new S57enum(15, "boat"));
+    }
+
+    public enum CatCVR { CVR_UNKN, CVR_COVR, CVR_NCVR }
+
+    private static final EnumMap<CatCVR, S57enum> Catcvr = new EnumMap<>(CatCVR.class); static {
+        Catcvr.put(CatCVR.CVR_UNKN, new S57enum(0, ""));
+        Catcvr.put(CatCVR.CVR_COVR, new S57enum(1, "coverage")); Catcvr.put(CatCVR.CVR_NCVR, new S57enum(2, "no_coverage"));
+    }
+
+    private static final EnumMap<Att, S57key> keys = new EnumMap<>(Att.class);
+    static {
+        keys.put(Att.UNKATT, new S57key(Conv.A, null)); keys.put(Att.AGENCY, new S57key(Conv.A, null)); keys.put(Att.BCNSHP, new S57key(Conv.E, Bcnshp));
+        keys.put(Att.BUISHP, new S57key(Conv.E, Buishp)); keys.put(Att.BOYSHP, new S57key(Conv.E, Boyshp)); keys.put(Att.BURDEP, new S57key(Conv.F, null));
+        keys.put(Att.CALSGN, new S57key(Conv.S, null)); keys.put(Att.CATAIR, new S57key(Conv.L, Catair)); keys.put(Att.CATACH, new S57key(Conv.L, Catach));
+        keys.put(Att.CATBRG, new S57key(Conv.L, Catbrg)); keys.put(Att.CATBUA, new S57key(Conv.E, Catbua)); keys.put(Att.CATCBL, new S57key(Conv.E, Catcbl));
+        keys.put(Att.CATCAN, new S57key(Conv.E, Catcan)); keys.put(Att.CATCAM, new S57key(Conv.E, Catcam)); keys.put(Att.CATCHP, new S57key(Conv.E, Catchp));
+        keys.put(Att.CATCOA, new S57key(Conv.E, Catcoa)); keys.put(Att.CATCTR, new S57key(Conv.E, Catctr)); keys.put(Att.CATCON, new S57key(Conv.E, Catcon));
+        keys.put(Att.CATCRN, new S57key(Conv.E, Catcrn)); keys.put(Att.CATDAM, new S57key(Conv.E, Catdam)); keys.put(Att.CATDIS, new S57key(Conv.E, Catdis));
+        keys.put(Att.CATDOC, new S57key(Conv.E, Catdoc)); keys.put(Att.CATDPG, new S57key(Conv.L, Catdpg)); keys.put(Att.CATFNC, new S57key(Conv.E, Catfnc));
+        keys.put(Att.CATFRY, new S57key(Conv.E, Catfry)); keys.put(Att.CATFIF, new S57key(Conv.E, Catfif)); keys.put(Att.CATFOG, new S57key(Conv.E, Catfog));
+        keys.put(Att.CATFOR, new S57key(Conv.E, Catfor)); keys.put(Att.CATGAT, new S57key(Conv.E, Catgat)); keys.put(Att.CATHAF, new S57key(Conv.L, Cathaf));
+        keys.put(Att.CATHLK, new S57key(Conv.L, Cathlk)); keys.put(Att.CATICE, new S57key(Conv.E, Catice)); keys.put(Att.CATINB, new S57key(Conv.E, Catinb));
+        keys.put(Att.CATLND, new S57key(Conv.L, Catlnd)); keys.put(Att.CATLMK, new S57key(Conv.L, Catlmk)); keys.put(Att.CATLAM, new S57key(Conv.E, Catlam));
+        keys.put(Att.CATLIT, new S57key(Conv.L, Catlit)); keys.put(Att.CATMFA, new S57key(Conv.E, Catmfa)); keys.put(Att.CATMPA, new S57key(Conv.L, Catmpa));
+        keys.put(Att.CATMOR, new S57key(Conv.E, Catmor)); keys.put(Att.CATNAV, new S57key(Conv.E, Catnav)); keys.put(Att.CATOBS, new S57key(Conv.E, Catobs));
+        keys.put(Att.CATOFP, new S57key(Conv.L, Catofp)); keys.put(Att.CATOLB, new S57key(Conv.E, Catolb)); keys.put(Att.CATOPA, new S57key(Conv.E, Catopa));
+        keys.put(Att.CATPLE, new S57key(Conv.E, Catple)); keys.put(Att.CATPIL, new S57key(Conv.E, Catpil)); keys.put(Att.CATPIP, new S57key(Conv.L, Catpip));
+        keys.put(Att.CATPRA, new S57key(Conv.E, Catpra)); keys.put(Att.CATPYL, new S57key(Conv.E, Catpyl)); keys.put(Att.CATRAS, new S57key(Conv.E, Catras));
+        keys.put(Att.CATRTB, new S57key(Conv.E, Catrtb)); keys.put(Att.CATROS, new S57key(Conv.L, Catros)); keys.put(Att.CATTRK, new S57key(Conv.E, Cattrk));
+        keys.put(Att.CATRSC, new S57key(Conv.L, Catrsc)); keys.put(Att.CATREA, new S57key(Conv.L, Catrea)); keys.put(Att.CATROD, new S57key(Conv.E, Catrod));
+        keys.put(Att.CATRUN, new S57key(Conv.E, Catrun)); keys.put(Att.CATSEA, new S57key(Conv.E, Catsea)); keys.put(Att.CATSIL, new S57key(Conv.E, Catsil));
+        keys.put(Att.CATSLO, new S57key(Conv.E, Catslo)); keys.put(Att.CATSCF, new S57key(Conv.L, Catscf)); keys.put(Att.CATSLC, new S57key(Conv.E, Catslc));
+        keys.put(Att.CATSIT, new S57key(Conv.L, Catsit)); keys.put(Att.CATSIW, new S57key(Conv.L, Catsiw)); keys.put(Att.CATSPM, new S57key(Conv.L, Catspm));
+        keys.put(Att.CATTSS, new S57key(Conv.E, Cattss)); keys.put(Att.CATVEG, new S57key(Conv.L, Catveg)); keys.put(Att.CATWAT, new S57key(Conv.E, Catwat));
+        keys.put(Att.CATWED, new S57key(Conv.E, Catwed)); keys.put(Att.CATWRK, new S57key(Conv.E, Catwrk)); keys.put(Att.CATVAN, new S57key(Conv.E, Catvan));
+        keys.put(Att.COLOUR, new S57key(Conv.L, Colour)); keys.put(Att.COLPAT, new S57key(Conv.L, Colpat)); keys.put(Att.COMCHA, new S57key(Conv.A, null));
+        keys.put(Att.CPDATE, new S57key(Conv.A, null));   keys.put(Att.CSCALE, new S57key(Conv.I, null)); keys.put(Att.CONDTN, new S57key(Conv.E, Condtn));
+        keys.put(Att.CONRAD, new S57key(Conv.E, Conrad)); keys.put(Att.CONVIS, new S57key(Conv.E, Convis)); keys.put(Att.CURVEL, new S57key(Conv.F, null));
+        keys.put(Att.DATEND, new S57key(Conv.A, null)); keys.put(Att.DATSTA, new S57key(Conv.A, null)); keys.put(Att.DRVAL1, new S57key(Conv.F, null));
+        keys.put(Att.DRVAL2, new S57key(Conv.F, null)); keys.put(Att.ELEVAT, new S57key(Conv.F, null)); keys.put(Att.ESTRNG, new S57key(Conv.F, null));
+        keys.put(Att.EXCLIT, new S57key(Conv.E, Exclit)); keys.put(Att.EXPSOU, new S57key(Conv.E, Expsou)); keys.put(Att.FUNCTN, new S57key(Conv.L, Functn));
+        keys.put(Att.HEIGHT, new S57key(Conv.F, null)); keys.put(Att.HUNITS, new S57key(Conv.E, Hunits)); keys.put(Att.HORACC, new S57key(Conv.F, null));
+        keys.put(Att.HORCLR, new S57key(Conv.F, null)); keys.put(Att.HORLEN, new S57key(Conv.F, null)); keys.put(Att.HORWID, new S57key(Conv.F, null));
+        keys.put(Att.ICEFAC, new S57key(Conv.F, null)); keys.put(Att.INFORM, new S57key(Conv.S, null)); keys.put(Att.JRSDTN, new S57key(Conv.E, Jrsdtn));
+        keys.put(Att.LIFCAP, new S57key(Conv.F, null)); keys.put(Att.LITCHR, new S57key(Conv.E, Litchr)); keys.put(Att.LITVIS, new S57key(Conv.L, Litvis));
+        keys.put(Att.MARSYS, new S57key(Conv.E, Marsys)); keys.put(Att.MLTYLT, new S57key(Conv.I, null)); keys.put(Att.NATION, new S57key(Conv.A, null));
+        keys.put(Att.NATCON, new S57key(Conv.L, Natcon)); keys.put(Att.NATSUR, new S57key(Conv.L, Natsur)); keys.put(Att.NATQUA, new S57key(Conv.L, Natqua));
+        keys.put(Att.NMDATE, new S57key(Conv.A, null)); keys.put(Att.OBJNAM, new S57key(Conv.S, null)); keys.put(Att.ORIENT, new S57key(Conv.F, null));
+        keys.put(Att.PEREND, new S57key(Conv.A, null)); keys.put(Att.PERSTA, new S57key(Conv.A, null)); keys.put(Att.PICREP, new S57key(Conv.S, null));
+        keys.put(Att.PILDST, new S57key(Conv.S, null)); keys.put(Att.PRCTRY, new S57key(Conv.A, null)); keys.put(Att.PRODCT, new S57key(Conv.L, Prodct));
+        keys.put(Att.PUBREF, new S57key(Conv.S, null)); keys.put(Att.QUASOU, new S57key(Conv.L, Quasou)); keys.put(Att.RADWAL, new S57key(Conv.A, null));
+        keys.put(Att.RADIUS, new S57key(Conv.F, null));
+        keys.put(Att.RYRMGV, new S57key(Conv.A, null)); keys.put(Att.RESTRN, new S57key(Conv.L, Restrn));
+        keys.put(Att.SCAMIN, new S57key(Conv.I, null)); keys.put(Att.SCVAL1, new S57key(Conv.I, null)); keys.put(Att.SCVAL2, new S57key(Conv.I, null));
+        keys.put(Att.SECTR1, new S57key(Conv.F, null)); keys.put(Att.SECTR2, new S57key(Conv.F, null)); keys.put(Att.SHIPAM, new S57key(Conv.A, null));
+        keys.put(Att.SIGFRQ, new S57key(Conv.I, null)); keys.put(Att.SIGGEN, new S57key(Conv.E, Siggen)); keys.put(Att.SIGGRP, new S57key(Conv.A, null));
+        keys.put(Att.SIGPER, new S57key(Conv.F, null)); keys.put(Att.SIGSEQ, new S57key(Conv.A, null)); keys.put(Att.SOUACC, new S57key(Conv.F, null));
+        keys.put(Att.SDISMX, new S57key(Conv.I, null)); keys.put(Att.SDISMN, new S57key(Conv.I, null)); keys.put(Att.SORDAT, new S57key(Conv.A, null));
+        keys.put(Att.SORIND, new S57key(Conv.A, null)); keys.put(Att.STATUS, new S57key(Conv.L, Status)); keys.put(Att.SURATH, new S57key(Conv.S, null));
+        keys.put(Att.SUREND, new S57key(Conv.A, null)); keys.put(Att.SURSTA, new S57key(Conv.A, null)); keys.put(Att.SURTYP, new S57key(Conv.L, Surtyp));
+        keys.put(Att.TECSOU, new S57key(Conv.L, Tecsou)); keys.put(Att.TXTDSC, new S57key(Conv.S, null)); keys.put(Att.TS_TSP, new S57key(Conv.A, null));
+        keys.put(Att.TS_TSV, new S57key(Conv.A, null)); keys.put(Att.T_ACWL, new S57key(Conv.E, null)); keys.put(Att.T_HWLW, new S57key(Conv.A, null));
+        keys.put(Att.T_MTOD, new S57key(Conv.E, null)); keys.put(Att.T_THDF, new S57key(Conv.A, null)); keys.put(Att.T_TINT, new S57key(Conv.I, null));
+        keys.put(Att.T_TSVL, new S57key(Conv.A, null)); keys.put(Att.T_VAHC, new S57key(Conv.A, null)); keys.put(Att.TIMEND, new S57key(Conv.A, null));
+        keys.put(Att.TIMSTA, new S57key(Conv.A, null)); keys.put(Att.TOPSHP, new S57key(Conv.E, Topshp)); keys.put(Att.TRAFIC, new S57key(Conv.E, Trafic));
+        keys.put(Att.VALACM, new S57key(Conv.F, null)); keys.put(Att.VALDCO, new S57key(Conv.F, null)); keys.put(Att.VALLMA, new S57key(Conv.F, null));
+        keys.put(Att.VALMAG, new S57key(Conv.F, null)); keys.put(Att.VALMXR, new S57key(Conv.F, null)); keys.put(Att.VALNMR, new S57key(Conv.F, null));
+        keys.put(Att.VALSOU, new S57key(Conv.F, null)); keys.put(Att.VERACC, new S57key(Conv.F, null)); keys.put(Att.VERCLR, new S57key(Conv.F, null));
+        keys.put(Att.VERCCL, new S57key(Conv.F, null)); keys.put(Att.VERCOP, new S57key(Conv.F, null)); keys.put(Att.VERCSA, new S57key(Conv.F, null));
+        keys.put(Att.VERDAT, new S57key(Conv.E, Verdat)); keys.put(Att.VERLEN, new S57key(Conv.F, null)); keys.put(Att.WATLEV, new S57key(Conv.E, Watlev));
+        keys.put(Att.CAT_TS, new S57key(Conv.E, Cat_ts)); keys.put(Att.NINFOM, new S57key(Conv.S, null));
+        keys.put(Att.NOBJNM, new S57key(Conv.S, null)); keys.put(Att.NPLDST, new S57key(Conv.S, null)); keys.put(Att.NTXTDS, new S57key(Conv.S, null));
+        keys.put(Att.HORDAT, new S57key(Conv.E, null)); keys.put(Att.POSACC, new S57key(Conv.F, null)); keys.put(Att.QUAPOS, new S57key(Conv.E, Quapos));
+        keys.put(Att.CLSDNG, new S57key(Conv.E, Clsdng)); keys.put(Att.DIRIMP, new S57key(Conv.L, Dirimp)); keys.put(Att.DISBK1, new S57key(Conv.F, null));
+        keys.put(Att.DISBK2, new S57key(Conv.F, null)); keys.put(Att.DISIPU, new S57key(Conv.F, null)); keys.put(Att.DISIPD, new S57key(Conv.F, null));
+        keys.put(Att.ELEVA1, new S57key(Conv.F, null)); keys.put(Att.ELEVA2, new S57key(Conv.F, null)); keys.put(Att.FNCTNM, new S57key(Conv.E, Fnctnm));
+        keys.put(Att.WTWDIS, new S57key(Conv.F, null)); keys.put(Att.BUNVES, new S57key(Conv.E, Bunves)); keys.put(Att.COMCTN, new S57key(Conv.S, null));
+        keys.put(Att.HORCLL, new S57key(Conv.F, null)); keys.put(Att.HORCLW, new S57key(Conv.F, null)); keys.put(Att.TRSHGD, new S57key(Conv.L, Trshgd));
+        keys.put(Att.UNLOCD, new S57key(Conv.S, null)); keys.put(Att.HIGWAT, new S57key(Conv.F, null)); keys.put(Att.HIGNAM, new S57key(Conv.S, null));
+        keys.put(Att.LOWWAT, new S57key(Conv.F, null)); keys.put(Att.LOWNAM, new S57key(Conv.S, null)); keys.put(Att.MEAWAT, new S57key(Conv.F, null));
+        keys.put(Att.MEANAM, new S57key(Conv.S, null)); keys.put(Att.OTHWAT, new S57key(Conv.F, null)); keys.put(Att.OTHNAM, new S57key(Conv.S, null));
+        keys.put(Att.REFLEV, new S57key(Conv.E, Reflev)); keys.put(Att.SDRLEV, new S57key(Conv.S, null)); keys.put(Att.VCRLEV, new S57key(Conv.S, null));
+        keys.put(Att.SCHREF, new S57key(Conv.S, null)); keys.put(Att.USESHP, new S57key(Conv.E, Useshp)); keys.put(Att.CURVHW, new S57key(Conv.F, null));
+        keys.put(Att.CURVLW, new S57key(Conv.F, null)); keys.put(Att.CURVMW, new S57key(Conv.F, null)); keys.put(Att.CURVOW, new S57key(Conv.F, null));
+        keys.put(Att.APTREF, new S57key(Conv.S, null)); keys.put(Att.SHPTYP, new S57key(Conv.E, Shptyp)); keys.put(Att.UPDMSG, new S57key(Conv.S, null));
+        keys.put(Att.ADDMRK, new S57key(Conv.L, Addmrk)); keys.put(Att.BNKWTW, new S57key(Conv.E, Bnkwtw));
+        keys.put(Att.CATNMK, new S57key(Conv.E, Catnmk)); keys.put(Att.CATBRT, new S57key(Conv.L, Catbrt)); keys.put(Att.CATBUN, new S57key(Conv.L, Catbun));
+        keys.put(Att.CATCCL, new S57key(Conv.L, Catccl)); keys.put(Att.CATCOM, new S57key(Conv.L, Catcom)); keys.put(Att.CATHBR, new S57key(Conv.L, Cathbr));
+        keys.put(Att.CATRFD, new S57key(Conv.L, Catrfd)); keys.put(Att.CATTML, new S57key(Conv.L, Cattml)); keys.put(Att.CATGAG, new S57key(Conv.L, Catgag));
+        keys.put(Att.CATVTR, new S57key(Conv.L, Catvtr)); keys.put(Att.CATTAB, new S57key(Conv.E, Cattab)); keys.put(Att.CATEXS, new S57key(Conv.E, Catexs));
+        keys.put(Att.LG_SPD, new S57key(Conv.F, null)); keys.put(Att.LG_SPR, new S57key(Conv.L, Lg_spr)); keys.put(Att.LG_BME, new S57key(Conv.F, null));
+        keys.put(Att.LG_LGS, new S57key(Conv.F, null)); keys.put(Att.LG_DRT, new S57key(Conv.F, null)); keys.put(Att.LG_WDP, new S57key(Conv.F, null));
+        keys.put(Att.LG_WDU, new S57key(Conv.E, Lg_wdu)); keys.put(Att.LG_REL, new S57key(Conv.L, Lg_rel)); keys.put(Att.LG_FNC, new S57key(Conv.L, Lg_fnc));
+        keys.put(Att.LG_DES, new S57key(Conv.S, null)); keys.put(Att.LG_PBR, new S57key(Conv.S, null)); keys.put(Att.LC_CSI, new S57key(Conv.L, Lc_csi));
+        keys.put(Att.LC_CSE, new S57key(Conv.L, Lc_cse)); keys.put(Att.LC_ASI, new S57key(Conv.L, Lc_asi)); keys.put(Att.LC_ASE, new S57key(Conv.L, Lc_ase));
+        keys.put(Att.LC_CCI, new S57key(Conv.L, Lc_cci)); keys.put(Att.LC_CCE, new S57key(Conv.L, Lc_cce)); keys.put(Att.LC_BM1, new S57key(Conv.F, null));
+        keys.put(Att.LC_BM2, new S57key(Conv.F, null)); keys.put(Att.LC_LG1, new S57key(Conv.F, null)); keys.put(Att.LC_LG2, new S57key(Conv.F, null));
+        keys.put(Att.LC_DR1, new S57key(Conv.F, null)); keys.put(Att.LC_DR2, new S57key(Conv.F, null)); keys.put(Att.LC_SP1, new S57key(Conv.F, null));
+        keys.put(Att.LC_SP2, new S57key(Conv.F, null)); keys.put(Att.LC_WD1, new S57key(Conv.F, null)); keys.put(Att.LC_WD2, new S57key(Conv.F, null));
+        keys.put(Att.CATCVR, new S57key(Conv.E, Catcvr));
+    }
+
+    public static Enum<?> s57Enum(String val, Att att) { // Convert S57 attribute value string to SCM enumeration
+        EnumMap<?, ?> map = keys.get(att).map;
+        Enum<?> unkn = null;
+        int i = 0;
+        try {
+            i = Integer.parseInt(val);
+        } catch (Exception e) {
+            return unkn;
+        }
+        if (map != null) {
+            for (Object item : map.keySet()) {
+                if (unkn == null)
+                    unkn = (Enum<?>) item;
+                if (((S57enum) map.get(item)).atvl.equals(i))
+                    return (Enum<?>) item;
+            }
+        }
+        return unkn;
+    }
+
+    public static AttVal<?> decodeValue(String val, Att att) { // Convert S57 attribute value string to SCM attribute value
+        Conv conv = keys.get(att).conv;
+        switch (conv) {
+        case A:
+        case S:
+            return new AttVal<>(conv, val);
+        case E:
+            ArrayList<Enum<?>> list = new ArrayList<>();
+            list.add(s57Enum(val, att));
+            return new AttVal<ArrayList<?>>(Conv.E, list);
+        case L:
+            list = new ArrayList<>();
+            for (String item : val.split(",")) {
+                list.add(s57Enum(item, att));
+            }
+            return new AttVal<ArrayList<?>>(Conv.L, list);
+        case I:
+            try {
+                return new AttVal<>(Conv.I, Long.parseLong(val));
+            } catch (Exception e) {
+                break;
+            }
+        case F:
+            try {
+                return new AttVal<>(Conv.F, Double.parseDouble(val));
+            } catch (Exception e) {
+                break;
+            }
+        }
+        return null;
+    }
+
+    public static String encodeValue(AttVal<?> attval, Att att) { // Convert SCM attribute value to S57 attribute value string
+        if (attval != null) {
+            String str = stringValue(attval, att);
+            if ((attval.conv == Conv.E) || (attval.conv == Conv.L)) {
+                String[] vals = str.split(";");
+                str = "";
+                for (String val : vals) {
+                    if (!str.isEmpty()) str += ",";
+                    EnumMap<?, ?> map = keys.get(att).map;
+                    for (Object item : map.keySet()) {
+                        if (((S57enum) map.get(item)).val.equals(val))
+                            str += ((S57enum) map.get(item)).atvl.toString();
+                    }
+                }
+            }
+            return str;
+        }
+        return "";
+    }
+
+    public static String stringValue(AttVal<?> attval, Att att) { // Convert SCM attribute value to OSM attribute value string
+        if (attval != null) {
+            switch (attval.conv) {
+            case A:
+            case S:
+                return (String) attval.val;
+            case E:
+                EnumMap<?, ?> map = keys.get(att).map;
+                return ((S57enum) map.get(((ArrayList<?>) attval.val).get(0))).val;
+            case L:
+                String str = "";
+                map = keys.get(att).map;
+                for (Object item : (ArrayList<?>) attval.val) {
+                    if (!str.isEmpty())
+                        str += ";";
+                    if (item != null)
+                        str += ((S57enum) map.get(item)).val;
+                }
+                return str;
+            case I:
+                return ((Long) attval.val).toString();
+            case F:
+                return ((Double) attval.val).toString();
+            }
+        }
+        return "";
+    }
+
+    public static Enum<?> osmEnum(String val, Att att) { // Convert OSM attribute value string to SCM enumeration
+        EnumMap<?, ?> map = keys.get(att).map;
+        Enum<?> unkn = null;
+        if (map != null) {
+            for (Object item : map.keySet()) {
+                if (unkn == null)
+                    unkn = (Enum<?>) item;
+                if (((S57enum) map.get(item)).val.equals(val))
+                    return (Enum<?>) item;
+            }
+        }
+        return unkn;
+    }
+
+    public static AttVal<?> convertValue(String val, Att att) { // Convert OSM attribute value string to SCM attribute value
+        switch (keys.get(att).conv) {
+        case A:
+        case S:
+            return new AttVal<>(Conv.S, val);
+        case E:
+            ArrayList<Enum<?>> list = new ArrayList<>();
+            list.add(osmEnum(val, att));
+            return new AttVal<ArrayList<?>>(Conv.E, list);
+        case L:
+            list = new ArrayList<>();
+            for (String item : val.split(";")) {
+                list.add(osmEnum(item, att));
+            }
+            return new AttVal<ArrayList<?>>(Conv.L, list);
+        case I:
+            try {
+                return new AttVal<>(Conv.I, Long.parseLong(val));
+            } catch (Exception e) {
+                break;
+            }
+        case F:
+            try {
+                return new AttVal<>(Conv.F, Double.parseDouble(val));
+            } catch (Exception e) {
+                break;
+            }
+        }
+        return new AttVal<>(keys.get(att).conv, null);
+    }
+
+    public static Enum<?> unknAtt(Att att) {
+        return (Enum<?>) keys.get(att).map.keySet().toArray()[0];
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/seachart/ChartImage.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/seachart/ChartImage.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/seachart/ChartImage.java	(revision 36424)
@@ -0,0 +1,168 @@
+// License: GPL. For details, see LICENSE file.
+package seachart;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+import java.awt.geom.Point2D.Double;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.Action;
+
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.imagery.ImageryInfo;
+import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
+import org.openstreetmap.josm.gui.layer.ImageryLayer;
+
+import render.ChartContext;
+import render.Renderer;
+import s57.S57map;
+import s57.S57map.Feature;
+import s57.S57map.GeomIterator;
+import s57.S57map.Pflag;
+import s57.S57map.Snode;
+import s57.S57obj.Obj;
+import symbols.Symbols;
+
+/**
+ * @author Malcolm Herring
+ */
+public class ChartImage extends ImageryLayer implements ZoomChangeListener, ChartContext {
+
+    double top;
+    double bottom;
+    double left;
+    double right;
+    double width;
+    double height;
+    int zoom;
+
+    public ChartImage(ImageryInfo info) {
+        super(info);
+        MapView.addZoomChangeListener(this);
+        zoomChanged();
+    }
+
+    @Override
+    public Action[] getMenuEntries() {
+        return null;
+    }
+
+    @Override
+    protected List<OffsetMenuEntry> getOffsetMenuEntries() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public String getToolTipText() {
+        return null;
+    }
+
+    @Override
+    protected Action getAdjustAction() {
+        return null;
+    }
+
+    @Override
+    public void visitBoundingBox(BoundingXYVisitor arg0) {
+    }
+
+    @Override
+    public void paint(Graphics2D g2, MapView mv, Bounds bb) {
+        Rectangle rect = MainApplication.getMap().mapView.getBounds();
+        Renderer.reRender(g2, rect, zoom, Math.pow(2, (zoom-12)), SeachartAction.map, this);
+        g2.setPaint(Color.black);
+        g2.setFont(new Font("Arial", Font.BOLD, 20));
+        Rectangle crect = g2.getClipBounds();
+        if ((crect.y + crect.height) < (rect.y + rect.height - 10)) {
+            g2.drawString(("Z" + zoom), (crect.x + crect.width - 40), (crect.y + crect.height - 10));
+        } else {
+            g2.drawString(("Z" + zoom), (rect.x + rect.width - 40), (rect.y + rect.height - 10));
+        }
+    }
+
+    @Override
+    public void zoomChanged() {
+        if ((MainApplication.getMap() != null) && (MainApplication.getMap().mapView != null)) {
+            Bounds bounds = MainApplication.getMap().mapView.getRealBounds();
+            top = bounds.getMax().lat();
+            bottom = bounds.getMin().lat();
+            left = bounds.getMin().lon();
+            right = bounds.getMax().lon();
+            width = MainApplication.getMap().mapView.getBounds().getWidth();
+            height = MainApplication.getMap().mapView.getBounds().getHeight();
+            zoom = ((int) Math.min(18, Math.max(9, Math.round(Math.floor(Math.log(1024 / bounds.asRect().height) / Math.log(2))))));
+        }
+    }
+
+    @Override
+    public Point2D.Double getPoint(Snode coord) {
+        return (Double) MainApplication.getMap().mapView.getPoint2D(new LatLon(Math.toDegrees(coord.lat), Math.toDegrees(coord.lon)));
+    }
+
+    @Override
+    public double mile(Feature feature) {
+        return 185000 / MainApplication.getMap().mapView.getDist100Pixel();
+    }
+
+    @Override
+    public boolean clip() {
+        return true;
+    }
+
+    @Override
+    public int grid() {
+        return 0;
+    }
+
+    @Override
+    public Color background(S57map map) {
+        if (map.features.containsKey(Obj.COALNE)) {
+            for (Feature feature : map.features.get(Obj.COALNE)) {
+                if (feature.geom.prim == Pflag.POINT) {
+                    break;
+                }
+                GeomIterator git = map.new GeomIterator(feature.geom);
+                git.nextComp();
+                while (git.hasEdge()) {
+                    git.nextEdge();
+                    while (git.hasNode()) {
+                        Snode node = git.next();
+                        if (node == null)
+                            continue;
+                        if ((node.lat >= map.bounds.minlat) && (node.lat <= map.bounds.maxlat)
+                                && (node.lon >= map.bounds.minlon) && (node.lon <= map.bounds.maxlon)) {
+                            return Symbols.Bwater;
+                        }
+                    }
+                }
+            }
+            return Symbols.Yland;
+        } else {
+            if (map.features.containsKey(Obj.ROADWY) || map.features.containsKey(Obj.RAILWY)
+                    || map.features.containsKey(Obj.LAKARE) || map.features.containsKey(Obj.RIVERS) || map.features.containsKey(Obj.CANALS)) {
+                return Symbols.Yland;
+            } else {
+                return Symbols.Bwater;
+            }
+        }
+    }
+
+    @Override
+    public RuleSet ruleset() {
+        return RuleSet.ALL;
+    }
+
+	@Override
+	public Chart chart() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+}
Index: /applications/editors/josm/plugins/SeaChart/src/seachart/Seachart.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/seachart/Seachart.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/seachart/Seachart.java	(revision 36424)
@@ -0,0 +1,18 @@
+// License: GPL. For details, see LICENSE file.
+package seachart;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginInformation;
+
+/**
+ * @author Malcolm Herring
+ */
+public class Seachart extends Plugin {
+
+    public Seachart(PluginInformation info) {
+        super(info);
+        MainMenu.add(MainApplication.getMenu().imageryMenu, new SeachartAction());
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/seachart/SeachartAction.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/seachart/SeachartAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/seachart/SeachartAction.java	(revision 36424)
@@ -0,0 +1,231 @@
+// License: GPL. For details, see LICENSE file.
+package seachart;
+
+import java.awt.event.ActionEvent;
+import java.util.Map.Entry;
+
+import javax.swing.SwingUtilities;
+
+import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.imagery.ImageryInfo;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
+import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
+import org.openstreetmap.josm.data.osm.event.DataSetListener;
+import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
+import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
+import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
+import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
+import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
+import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+import s57.S57map;
+
+/**
+ * @author Malcolm Herring
+ */
+public class SeachartAction extends JosmAction implements ActiveLayerChangeListener, LayerChangeListener {
+    private static String title = "SeaChart";
+    private boolean isOpen = false;
+    public static ChartImage rendering;
+    public static S57map map = null;
+    public DataSet data = null;
+
+    private final DataSetListener dataSetListener = new DataSetListener() {
+
+        @Override
+        public void dataChanged(DataChangedEvent e) {
+            makeChart();
+        }
+
+        @Override
+        public void nodeMoved(NodeMovedEvent e) {
+            makeChart();
+        }
+
+        @Override
+        public void otherDatasetChange(AbstractDatasetChangedEvent e) {
+            makeChart();
+        }
+
+        @Override
+        public void primitivesAdded(PrimitivesAddedEvent e) {
+            makeChart();
+        }
+
+        @Override
+        public void primitivesRemoved(PrimitivesRemovedEvent e) {
+            makeChart();
+        }
+
+        @Override
+        public void relationMembersChanged(RelationMembersChangedEvent e) {
+            makeChart();
+        }
+
+        @Override
+        public void tagsChanged(TagsChangedEvent e) {
+            makeChart();
+        }
+
+        @Override
+        public void wayNodesChanged(WayNodesChangedEvent e) {
+            makeChart();
+        }
+    };
+
+    public SeachartAction() {
+        super(title, "SC", title, null, true);
+    }
+
+    @Override
+    public void layerAdded(LayerAddEvent e) {
+    }
+
+    @Override
+    public void layerRemoving(LayerRemoveEvent e) {
+        if ("SeaChart".equals(e.getRemovedLayer().getName())) {
+            closeChartLayer();
+        }
+    }
+
+    @Override
+    public void layerOrderChanged(LayerOrderChangeEvent e) {
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent arg0) {
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                if (!isOpen)
+                    createChartLayer();
+                isOpen = true;
+            }
+        });
+    }
+
+    protected void createChartLayer() {
+        rendering = new ChartImage(new ImageryInfo("SeaChart"));
+        rendering.setBackgroundLayer(true);
+        MainApplication.getLayerManager().addLayer(rendering);
+        MainApplication.getLayerManager().addAndFireActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
+    }
+
+    public void closeChartLayer() {
+        if (isOpen) {
+        	try {
+            MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
+            MainApplication.getLayerManager().removeLayerChangeListener(this);
+            MainApplication.getLayerManager().removeLayer(rendering);
+        	} catch (Exception e) {
+        		// Assume that this can't be serious?
+        		System.err.println(e);
+        	}
+        }
+        isOpen = false;
+    }
+
+    @Override
+    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+        OsmDataLayer oldLayer = e.getPreviousDataLayer();
+        if (oldLayer != null) {
+            oldLayer.getDataSet().removeDataSetListener(dataSetListener);
+        }
+        OsmDataLayer newLayer = MainApplication.getLayerManager().getEditLayer();
+        if (newLayer != null) {
+            newLayer.getDataSet().addDataSetListener(dataSetListener);
+            data = newLayer.getDataSet();
+            makeChart();
+        } else {
+            data = null;
+            map = null;
+        }
+    }
+
+    void makeChart() {
+        map = new S57map(false);
+        if (data != null) {
+            double minlat = 90;
+            double maxlat = -90;
+            double minlon = 180;
+            double maxlon = -180;
+            for (Bounds bounds : data.getDataSourceBounds()) {
+                if (bounds.getMinLat() < minlat) {
+                    minlat = bounds.getMinLat();
+                }
+                if (bounds.getMaxLat() > maxlat) {
+                    maxlat = bounds.getMaxLat();
+                }
+                if (bounds.getMinLon() < minlon) {
+                    minlon = bounds.getMinLon();
+                }
+                if (bounds.getMaxLon() > maxlon) {
+                    maxlon = bounds.getMaxLon();
+                }
+            }
+            map.addNode(1, maxlat, minlon);
+            map.addNode(2, minlat, minlon);
+            map.addNode(3, minlat, maxlon);
+            map.addNode(4, maxlat, maxlon);
+            map.bounds.minlat = Math.toRadians(minlat);
+            map.bounds.maxlat = Math.toRadians(maxlat);
+            map.bounds.minlon = Math.toRadians(minlon);
+            map.bounds.maxlon = Math.toRadians(maxlon);
+            for (Node node : data.getNodes()) {
+                LatLon coor = node.getCoor();
+                if (coor != null) {
+                    map.addNode(node.getUniqueId(), coor.lat(), coor.lon());
+                    for (Entry<String, String> entry : node.getKeys().entrySet()) {
+                        map.addTag(entry.getKey(), entry.getValue());
+                    }
+                    map.tagsDone(node.getUniqueId());
+                }
+            }
+            for (Way way : data.getWays()) {
+                if (way.getNodesCount() > 0) {
+                    map.addEdge(way.getUniqueId());
+                    for (Node node : way.getNodes()) {
+                        map.addToEdge(node.getUniqueId());
+                    }
+                    for (Entry<String, String> entry : way.getKeys().entrySet()) {
+                        map.addTag(entry.getKey(), entry.getValue());
+                    }
+                    map.tagsDone(way.getUniqueId());
+                }
+            }
+            for (Relation rel : data.getRelations()) {
+                if (rel.isMultipolygon() && (rel.getMembersCount() > 0)) {
+                    map.addArea(rel.getUniqueId());
+                    for (RelationMember mem : rel.getMembers()) {
+                        if (mem.getType() == OsmPrimitiveType.WAY)
+                            map.addToArea(mem.getUniqueId(), mem.getRole().equals("outer"));
+                    }
+                    for (Entry<String, String> entry : rel.getKeys().entrySet()) {
+                        map.addTag(entry.getKey(), entry.getValue());
+                    }
+                    map.tagsDone(rel.getUniqueId());
+                }
+            }
+            map.mapDone();
+            if (rendering != null) rendering.zoomChanged();
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Areas.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Areas.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Areas.java	(revision 36424)
@@ -0,0 +1,395 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import symbols.Symbols.Delta;
+import symbols.Symbols.Form;
+import symbols.Symbols.Handle;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Areas {
+    private Areas() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    public static final Symbol Plane = new Symbol();
+    static {
+        Plane.add(new Instr(Form.BBOX, new Rectangle2D.Double(-60, -60, 120, 120)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(40, 20); p.lineTo(50, 10); p.lineTo(27.0, 13.3); p.lineTo(23.7, 6.8); p.lineTo(40.0, 5.0); p.curveTo(55, 4, 55, -9, 40, -10);
+        p.quadTo(31, -11, 30, -15); p.lineTo(-30, 2); p.quadTo(-35, -12, -45, -15); p.quadTo(-56, -3, -50, 15); p.lineTo(18.4, 7.3); p.lineTo(21.7, 14); p.lineTo(-20, 20); p.closePath();
+        Plane.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol LimitDash = new Symbol();
+    static {
+        LimitDash.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        LimitDash.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        LimitDash.add(new Instr(Form.LINE, new Line2D.Double(0, -30, 0, 30)));
+    }
+
+    public static final Symbol LimitCC = new Symbol();
+    static {
+        LimitCC.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -240, 60, 240)));
+        LimitCC.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        LimitCC.add(new Instr(Form.LINE, new Line2D.Double(0, -200, 0, -160)));
+        LimitCC.add(new Instr(Form.LINE, new Line2D.Double(-20, -180, 20, -180)));
+        LimitCC.add(new Instr(Form.LINE, new Line2D.Double(0, -80, 0, -120)));
+        LimitCC.add(new Instr(Form.LINE, new Line2D.Double(-20, -100, 20, -100)));
+    }
+
+    public static final Symbol Cable = new Symbol();
+    static {
+        Cable.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 60)));
+        Cable.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Cable.add(new Instr(Form.FILL, new Color(0xc480ff)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, 0); p.curveTo(-13, -13, -13, -17, 0, -30); p.curveTo(13, -43, 13, -47, 0, -60);
+        Cable.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol CableDot = new Symbol();
+    static {
+        CableDot.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 60)));
+        CableDot.add(new Instr(Form.RSHP, new Ellipse2D.Double(-10, -40, 20, 20)));
+    }
+
+    public static final Symbol CableDash = new Symbol();
+    static {
+        CableDash.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 60)));
+        CableDash.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        CableDash.add(new Instr(Form.LINE, new Line2D.Double(0, -15, 0, -45)));
+    }
+
+    public static final Symbol CableFlash = new Symbol();
+    static {
+        CableFlash.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 60)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-30, -25); p.lineTo(-10, -40); p.lineTo(10, -26); p.lineTo(30, -35); p.lineTo(10, -20); p.lineTo(-10, -34); p.closePath();
+        CableFlash.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol Dash = new Symbol();
+    static {
+        Dash.add(new Instr(Form.BBOX, new Rectangle2D.Double(-15, -30, 30, 30)));
+        Dash.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Dash.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -30)));
+    }
+
+    public static final Symbol Foul = new Symbol();
+    static {
+        Foul.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 60)));
+        Foul.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Foul.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double();
+        p.moveTo(0, -30); p.lineTo(-20, 30);
+        p.moveTo(20, -30); p.lineTo(0, 30);
+        p.moveTo(-20, -15); p.lineTo(30, -15);
+        p.moveTo(-30, 15); p.lineTo(20, 15);
+        Foul.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol LaneArrow = new Symbol();
+    static {
+        LaneArrow.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -240, 40, 240)));
+        LaneArrow.add(new Instr(Form.STRK, new BasicStroke(10, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        LaneArrow.add(new Instr(Form.FILL, Symbols.Mtss));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(15, 0); p.lineTo(15, -195); p.lineTo(40, -195);
+        p.lineTo(0, -240); p.lineTo(-40, -195); p.lineTo(-15, -195); p.lineTo(-15, 0); p.closePath();
+        LaneArrow.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol LineAnchor = new Symbol();
+    static {
+        LineAnchor.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 90)));
+        LineAnchor.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.5, 0, 0, null, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))))));
+    }
+
+    public static final Symbol LineFoul = new Symbol();
+    static {
+        LineFoul.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 90)));
+        LineFoul.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Foul, 0.5, 0, 0, null, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))))));
+    }
+
+    public static final Symbol LinePlane = new Symbol();
+    static {
+        LinePlane.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 90)));
+        LinePlane.add(new Instr(Form.FILL, new Color(0xc480ff)));
+        LinePlane.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Areas.Plane, 0.5, 0, 0, null, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))))));
+    }
+
+    public static final Symbol MarineFarm = new Symbol();
+    static {
+        MarineFarm.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-23, 12); p.lineTo(-23, 23); p.lineTo(23, 23); p.lineTo(23, 12); p.moveTo(-8, 15); p.lineTo(-8, 23); p.moveTo(8, 15); p.lineTo(8, 23);
+        p.moveTo(-23, -12); p.lineTo(-23, -23); p.lineTo(23, -23); p.lineTo(23, -12); p.moveTo(-8, -15); p.lineTo(-8, -23); p.moveTo(8, -15); p.lineTo(8, -23);
+        p.moveTo(-21, 8); p.quadTo(-1, -14, 21, 0); p.quadTo(-1, 14, -21, -8); p.moveTo(7, 6); p.quadTo(2, 0, 7, -6);
+        MarineFarm.add(new Instr(Form.PLIN, p));
+        MarineFarm.add(new Instr(Form.RSHP, new Ellipse2D.Double(9, -2, 4, 4)));
+    }
+
+    public static final Symbol NoWake = new Symbol();
+    static {
+        NoWake.add(new Instr(Form.STRK, new BasicStroke(12, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoWake.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-60, 20); p.curveTo(-28, 20, -32, 0, 0, 0); p.curveTo(32, 0, 28, 20, 60, 20); p.moveTo(-60, 0); p.curveTo(-28, 0, -32, -20, 0, -20); p.curveTo(32, -20, 28, 0, 60, 0);
+        NoWake.add(new Instr(Form.PLIN, p));
+        NoWake.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoWake.add(new Instr(Form.LINE, new Line2D.Double(-60, 60, 60, -60)));
+        NoWake.add(new Instr(Form.LINE, new Line2D.Double(-60, -60, 60, 60)));
+    }
+
+    public static final Symbol Pipeline = new Symbol();
+    static {
+        Pipeline.add(new Instr(Form.BBOX, new Rectangle2D.Double(-15, -60, 30, 60)));
+        Pipeline.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Pipeline.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -50)));
+        Pipeline.add(new Instr(Form.RSHP, new Ellipse2D.Double(-10, -60, 20, 20)));
+    }
+
+    public static final Symbol Restricted = new Symbol();
+    static {
+        Restricted.add(new Instr(Form.BBOX, new Rectangle2D.Double(-15, -30, 30, 30)));
+        Restricted.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Restricted.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -30)));
+        Restricted.add(new Instr(Form.LINE, new Line2D.Double(0, -15, 17, -15)));
+    }
+
+    public static final Symbol Rock = new Symbol();
+    static {
+        Rock.add(new Instr(Form.FILL, new Color(0x80c0ff)));
+        Rock.add(new Instr(Form.RSHP, new Ellipse2D.Double(-30, -30, 60, 60)));
+        Rock.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1, new float[]{5, 5}, 0)));
+        Rock.add(new Instr(Form.FILL, Color.black));
+        Rock.add(new Instr(Form.ELPS, new Ellipse2D.Double(-30, -30, 60, 60)));
+        Rock.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Rock.add(new Instr(Form.LINE, new Line2D.Double(-20, 0, 20, 0)));
+        Rock.add(new Instr(Form.LINE, new Line2D.Double(0, -20, 0, 20)));
+    }
+
+    public static final Symbol RockA = new Symbol();
+    static {
+        RockA.add(new Instr(Form.FILL, new Color(0x80c0ff)));
+        RockA.add(new Instr(Form.RSHP, new Ellipse2D.Double(-30, -30, 60, 60)));
+        RockA.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1, new float[]{5, 5}, 0)));
+        RockA.add(new Instr(Form.FILL, Color.black));
+        RockA.add(new Instr(Form.ELPS, new Ellipse2D.Double(-30, -30, 60, 60)));
+        RockA.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        RockA.add(new Instr(Form.LINE, new Line2D.Double(-20, 0, 20, 0)));
+        RockA.add(new Instr(Form.LINE, new Line2D.Double(0, -20, 0, 20)));
+        RockA.add(new Instr(Form.RSHP, new Ellipse2D.Double(-17, -17, 8, 8)));
+        RockA.add(new Instr(Form.RSHP, new Ellipse2D.Double(-17, 9, 8, 8)));
+        RockA.add(new Instr(Form.RSHP, new Ellipse2D.Double(9, -17, 8, 8)));
+        RockA.add(new Instr(Form.RSHP, new Ellipse2D.Double(9, 9, 8, 8)));
+    }
+
+    public static final Symbol RockC = new Symbol();
+    static {
+        RockC.add(new Instr(Form.FILL, new Color(0x80c0ff)));
+        RockC.add(new Instr(Form.RSHP, new Ellipse2D.Double(-30, -30, 60, 60)));
+        RockC.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1, new float[]{5, 5}, 0)));
+        RockC.add(new Instr(Form.FILL, Color.black));
+        RockC.add(new Instr(Form.ELPS, new Ellipse2D.Double(-30, -30, 60, 60)));
+        RockC.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        RockC.add(new Instr(Form.LINE, new Line2D.Double(-20, 0, 20, 0)));
+        RockC.add(new Instr(Form.LINE, new Line2D.Double(-10, 17.3, 10, -17.3)));
+        RockC.add(new Instr(Form.LINE, new Line2D.Double(10, 17.3, -10, -17.3)));
+    }
+
+    public static final Symbol Seaplane = new Symbol();
+    static {
+        Seaplane.add(new Instr(Form.BBOX, new Rectangle2D.Double(-60, -60, 120, 120)));
+        Seaplane.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Seaplane.add(new Instr(Form.ELPS, new Ellipse2D.Double(-58, -58, 116, 116)));
+        Seaplane.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Areas.Plane, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol WindFarm = new Symbol();
+    static {
+        WindFarm.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        WindFarm.add(new Instr(Form.ELPS, new Ellipse2D.Double(-100, -100, 200, 200)));
+        WindFarm.add(new Instr(Form.LINE, new Line2D.Double(-35, 50, 35, 50)));
+        WindFarm.add(new Instr(Form.LINE, new Line2D.Double(0, 50, 0, -27.5)));
+        WindFarm.add(new Instr(Form.LINE, new Line2D.Double(0, -27.5, 30, -27.5)));
+        WindFarm.add(new Instr(Form.LINE, new Line2D.Double(0, -27.5, -13.8, -3.8)));
+        WindFarm.add(new Instr(Form.LINE, new Line2D.Double(0, -27.5, -13.8, -53.6)));
+    }
+
+    public static final Symbol WreckD = new Symbol();
+    static {
+        WreckD.add(new Instr(Form.FILL, new Color(0x80c0ff)));
+        WreckD.add(new Instr(Form.RSHP, new Ellipse2D.Double(-50, -40, 100, 80)));
+        WreckD.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1, new float[]{5, 5}, 0)));
+        WreckD.add(new Instr(Form.FILL, Color.black));
+        WreckD.add(new Instr(Form.ELPS, new Ellipse2D.Double(-50, -40, 100, 80)));
+        WreckD.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        WreckD.add(new Instr(Form.LINE, new Line2D.Double(-40, 0, 40, 0)));
+        WreckD.add(new Instr(Form.LINE, new Line2D.Double(0, -30, 0, 30)));
+        WreckD.add(new Instr(Form.LINE, new Line2D.Double(-20, -15, -20, 15)));
+        WreckD.add(new Instr(Form.LINE, new Line2D.Double(20, -15, 20, 15)));
+    }
+
+    public static final Symbol WreckND = new Symbol();
+    static {
+        WreckND.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        WreckND.add(new Instr(Form.LINE, new Line2D.Double(-40, 0, 40, 0)));
+        WreckND.add(new Instr(Form.LINE, new Line2D.Double(0, -30, 0, 30)));
+        WreckND.add(new Instr(Form.LINE, new Line2D.Double(-20, -15, -20, 15)));
+        WreckND.add(new Instr(Form.LINE, new Line2D.Double(20, -15, 20, 15)));
+    }
+
+    public static final Symbol WreckS = new Symbol();
+    static {
+        WreckS.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        WreckS.add(new Instr(Form.ELPS, new Ellipse2D.Double(-6, -6, 12, 12)));
+        WreckS.add(new Instr(Form.LINE, new Line2D.Double(-40, 0, -6, 0)));
+        WreckS.add(new Instr(Form.LINE, new Line2D.Double(40, 0, 6, 0)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-30, 0); p.lineTo(-40, -25); p.lineTo(-0.3, -12.6); p.lineTo(13.7, -37.7); p.lineTo(16.3, -36.3);
+        p.lineTo(2.7, -11.6); p.lineTo(37.5, 0); p.lineTo(6, 0); p.curveTo(5.6, -8, -5.6, -8, -6, 0); p.closePath();
+        WreckS.add(new Instr(Form.PGON, p));
+    }
+
+    public static final BufferedImage Sandwaves = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
+    static {
+        Graphics2D g2 = Sandwaves.createGraphics();
+        g2.setStroke(new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+        g2.setBackground(new Color(0, true));
+        g2.clearRect(0, 0, 100, 100);
+        g2.setPaint(Color.black);
+        Path2D.Double p = new Path2D.Double();
+        p.moveTo(0.0, 34.5); p.lineTo(03.3, 30.8); p.lineTo(09.9, 19.3); p.lineTo(13.2, 16.0); p.lineTo(16.5, 16.1); p.lineTo(18.2, 19.5);
+        p.lineTo(19.9, 25.0); p.lineTo(21.6, 30.3); p.lineTo(23.3, 33.4); p.lineTo(25.0, 33.3); p.lineTo(28.3, 30.1); p.lineTo(31.6, 25.0); p.lineTo(34.9, 20.1); p.lineTo(38.2, 17.2);
+        p.lineTo(41.5, 17.3); p.lineTo(43.2, 20.3); p.lineTo(44.9, 25); p.lineTo(46.6, 29.6); p.lineTo(48.3, 32.2); p.lineTo(50.0, 32.1);        
+        p.moveTo(50.0, 84.5); p.lineTo(53.3, 80.8); p.lineTo(56.6, 75.0); p.lineTo(59.9, 69.3); p.lineTo(63.2, 66.0); p.lineTo(66.5, 66.1); p.lineTo(68.2, 69.5); p.lineTo(69.9, 75.0);
+        p.lineTo(71.6, 80.3); p.lineTo(73.3, 83.4); p.lineTo(75.0, 83.3); p.lineTo(78.3, 80.1); p.lineTo(81.6, 75.0); p.lineTo(84.9, 70.1); p.lineTo(88.2, 67.2); p.lineTo(91.5, 67.3);
+        p.lineTo(93.2, 70.3); p.lineTo(94.9, 75.0); p.lineTo(96.6, 79.6); p.lineTo(98.3, 82.2); p.lineTo(100.0, 82.1);
+        g2.draw(p);
+    }
+    
+    public static final Symbol Spring = new Symbol();
+    static {
+        Spring.add(new Instr(Form.FILL, Color.black));
+        Spring.add(new Instr(Form.STRK, new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(0, 0, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(-20, 0, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(-40, 0, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(20, 0, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(40, 0, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(0, -20, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(0, -40, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(0, -60, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(0, -80, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(-15, -90, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(15, -90, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(-35, -85, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(35, -85, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(-50, -70, 10, 10)));
+        Spring.add(new Instr(Form.RSHP, new Ellipse2D.Double(50, -70, 10, 10)));
+    }
+
+    public static final BufferedImage Seagrass = new BufferedImage(240, 240, BufferedImage.TYPE_INT_ARGB);
+    static {
+        Graphics2D g2 = Seagrass.createGraphics();
+        g2.setStroke(new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+        g2.setBackground(new Color(0, true));
+        g2.clearRect(0, 0, 240, 240);
+        g2.setPaint(new Color(0x2E8E20));
+        Path2D.Double p = new Path2D.Double();
+        p.moveTo(90, 100); p.quadTo(50, 93, 29, 110);
+        p.moveTo(78, 98); p.quadTo(120, 75, 115, 50);
+        p.moveTo(45, 100); p.quadTo(65, 80, 55, 60); p.quadTo(50, 35, 60, 10);
+        p.moveTo(32, 108); p.quadTo(50, 90, 43, 70); p.quadTo(35, 40, 41, 18);
+        p.moveTo(32, 108); p.quadTo(0, 70, 16, 46);
+        p.moveTo(42, 103); p.quadTo(13, 75, 32, 31);
+        p.moveTo(23, 95); p.quadTo(35, 90, 34, 63);
+        p.moveTo(59, 99); p.quadTo(75, 75, 71, 22);
+        p.moveTo(66, 98); p.quadTo(85, 75, 82, 27);
+        p.moveTo(55, 97); p.quadTo(110, 50, 106, 30);
+        p.moveTo(90+120, 100+120); p.quadTo(50+120, 93+120, 29+120, 110+120);
+        p.moveTo(78+120, 98+120); p.quadTo(120+120, 75+120, 115+120, 50+120);
+        p.moveTo(45+120, 100+120); p.quadTo(65+120, 80+120, 55+120, 60+120); p.quadTo(50+120, 35+120, 60+120, 10+120);
+        p.moveTo(32+120, 108+120); p.quadTo(50+120, 90+120, 43+120, 70+120); p.quadTo(35+120, 40+120, 41+120, 18+120);
+        p.moveTo(32+120, 108+120); p.quadTo(0+120, 70+120, 16+120, 46+120);
+        p.moveTo(42+120, 103+120); p.quadTo(13+120, 75+120, 32+120, 31+120);
+        p.moveTo(23+120, 95+120); p.quadTo(35+120, 90+120, 34+120, 63+120);
+        p.moveTo(59+120, 99+120); p.quadTo(75+120, 75+120, 71+120, 22+120);
+        p.moveTo(66+120, 98+120); p.quadTo(85+120, 75+120, 82+120, 27+120);
+        p.moveTo(55+120, 97+120); p.quadTo(110+120, 50+120, 106+120, 30+120);
+        g2.draw(p);
+    }
+
+    public static final Symbol SeagrassP = new Symbol();
+    static {
+    	SeagrassP.add(new Instr(Form.BBOX, new Rectangle2D.Double(-60, -60, 120, 120)));
+    	SeagrassP.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        SeagrassP.add(new Instr(Form.FILL, new Color(0x2E8E20)));
+        Path2D.Double p = new Path2D.Double();
+        p.moveTo(30, 40); p.quadTo(-10, 33, -31, 50);
+        p.moveTo(18, 38); p.quadTo(60, 15, 55, -10);
+        p.moveTo(-15, 40); p.quadTo(5, 20, -5, 0); p.quadTo(-10, -25, 0, -50);
+        p.moveTo(-28, 48); p.quadTo(-10, 30, -17, 10); p.quadTo(-25, -20, -19, -42);
+        p.moveTo(-28, 48); p.quadTo(-60, 10, -44, -14);
+        p.moveTo(-18, 43); p.quadTo(-47, 15, -28, -29);
+        p.moveTo(-37, 35); p.quadTo(-25, 30, -26, 3);
+        p.moveTo(-1, 39); p.quadTo(15, 15, 11, -38);
+        p.moveTo(6, 38); p.quadTo(25, 15, 22, -33);
+        SeagrassP.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Rocks = new Symbol();
+    static {
+        Rocks.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 120)));
+        Rocks.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Path2D.Double p = new Path2D.Double(); 
+        p.moveTo(8, -50); p.quadTo(5, -58, 0, -60); p.quadTo(-15, -50, -8, -30); p.quadTo(-10, -20, 0, -15); p.quadTo(10, -10, 15, -25);
+        p.moveTo(0, -15); p.quadTo(-18, -6, -12, 10); p.quadTo(-9, 20, 0, 20); p.quadTo(8, 16, 12, 25);
+        p.moveTo(0, 20); p.quadTo(-15, 26, -10, 44); p.quadTo(-12, 55, 0, 60);
+        Rocks.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Coral = new Symbol();
+    static {
+        Coral.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -60, 40, 120)));
+        Coral.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -60); p.lineTo(0, -50); p.moveTo(15, -48); p.lineTo(-20, -50); 
+        p.lineTo(0, -30); p.lineTo(-20, -20); p.lineTo(10, 0); p.lineTo(-20, 20); p.lineTo(0, 30); p.lineTo(-20, 50); 
+        p.lineTo(20, 45); p.moveTo(0, 49); p.lineTo(0, 60);
+        Coral.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final BufferedImage Kelp = new BufferedImage(240, 240, BufferedImage.TYPE_INT_ARGB);
+    static {
+        Graphics2D g2 = Kelp.createGraphics();
+        g2.setStroke(new BasicStroke(6, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+        g2.setBackground(new Color(0, true));
+        g2.clearRect(0, 0, 240, 240);
+        g2.setPaint(Color.black);
+        Path2D.Double p = new Path2D.Double();
+        p.moveTo(0, 60); p.curveTo(40, 40, 44, 100, 84, 80); p.moveTo(0, 60); p.quadTo(12, 80, 28, 72); p.moveTo(24, 56); p.quadTo(36, 36, 56, 44); p.quadTo(68, 28, 80, 36);
+        p.moveTo(56, 44); p.quadTo(68, 60, 80, 52); p.moveTo(52, 76); p.quadTo(72, 60, 96, 68); p.quadTo(108, 84, 120, 76); p.moveTo(96, 68); p.quadTo(108, 52, 120, 60);
+        p.moveTo(120, 180); p.curveTo(160, 160, 164, 220, 204, 200); p.moveTo(120, 180); p.quadTo(132, 200, 148, 192); p.moveTo(144, 176); p.quadTo(156, 156, 176, 164); p.quadTo(188, 148, 200, 156);
+        p.moveTo(176, 164); p.quadTo(188, 180, 200, 172); p.moveTo(172, 196); p.quadTo(192, 180, 216, 188); p.quadTo(228, 204, 240, 196); p.moveTo(216, 188); p.quadTo(228, 172, 240, 180);
+        g2.draw(p);
+    }
+    
+    public static final Symbol KelpP = new Symbol();
+    static {
+    	KelpP.add(new Instr(Form.BBOX, new Rectangle2D.Double(-60, -60, 120, 120)));
+    	KelpP.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Path2D.Double p = new Path2D.Double();
+        p.moveTo(-60, 0); p.curveTo(-20, -20, -16, 40, 24, 20); p.moveTo(-60, 0); p.quadTo(-48, 20, -32, 12); p.moveTo(-36, -4); p.quadTo(-24, -24, -4, -16); p.quadTo(8, -32, 20, -24);
+        p.moveTo(-4, -16); p.quadTo(8, 0, 20, -8); p.moveTo(-8, 16); p.quadTo(12, 0, 36, 8); p.quadTo(48, 24, 60, 16); p.moveTo(36, 8); p.quadTo(48, -8, 60, 0);
+        KelpP.add(new Instr(Form.PLIN, p));
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Beacons.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Beacons.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Beacons.java	(revision 36424)
@@ -0,0 +1,250 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.util.EnumMap;
+
+import s57.S57val.BcnSHP;
+import symbols.Symbols.Form;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Beacons {
+    private Beacons() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    public static final Symbol Beacon = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-6.0, -8.5); p.lineTo(-6.0, -70.0); p.lineTo(6.0, -70.0); p.lineTo(6.0, -8.5); p.curveTo(6.0, -10.0, -6.0, -10.0, -6.0, -8.5); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-6.0, -8.5); p.lineTo(-6.0, -40.0); p.lineTo(6.0, -40.0); p.lineTo(6.0, -8.5); p.curveTo(6.0, -10.0, -6.0, -10.0, -6.0, -8.5); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-6.0, -30.0); p.lineTo(-6.0, -50.0); p.lineTo(6.0, -50.0); p.lineTo(6.0, -30.0); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(-6.0, -40.0); p.lineTo(-6.0, -55.0); p.lineTo(6.0, -55.0); p.lineTo(6.0, -40.0); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-6.0, -25.0); p.lineTo(-6.0, -40.0); p.lineTo(6.0, -40.0); p.lineTo(6.0, -25.0); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -70.0); p.lineTo(6.0, -70.0); p.lineTo(6.0, -8.5); p.quadTo(3.0, -9.3, 0.0, -10.0); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        Beacon.add(new Instr(Form.COLR, colours));
+        Beacon.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Beacon.add(new Instr(Form.FILL, Color.black));
+        Beacon.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Beacon.add(new Instr(Form.LINE, new Line2D.Double(-20, 0, -10, 0)));
+        Beacon.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 20, 0)));
+        p = new Path2D.Double(); p.moveTo(-6.0, -8.5); p.lineTo(-6.0, -70.0); p.lineTo(6.0, -70.0); p.lineTo(6.0, -8.5);
+        Beacon.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Cairn = new Symbol();
+    static {
+        Cairn.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Cairn.add(new Instr(Form.FILL, Color.black));
+        Cairn.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Cairn.add(new Instr(Form.LINE, new Line2D.Double(-40, 0, -10, 0)));
+        Cairn.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 40, 0)));
+        Cairn.add(new Instr(Form.ELPS, new Ellipse2D.Double(3, -40, 40, 40)));
+        Cairn.add(new Instr(Form.ELPS, new Ellipse2D.Double(-43, -40, 40, 40)));
+        Cairn.add(new Instr(Form.ELPS, new Ellipse2D.Double(-18, -70, 36, 36)));
+    }
+
+    public static final Symbol Floodlight = new Symbol();
+    static {
+    	Floodlight.add(new Instr(Form.BBOX, new Rectangle2D.Double(-50, -50, 100, 100)));
+    	Floodlight.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+    	Floodlight.add(new Instr(Form.FILL, new Color(0xffff00)));
+      Path2D.Double p = new Path2D.Double(); p.moveTo(0, 0); p.lineTo(-34, -15); p.quadTo(-35, -31, -20, -31); p.lineTo(0, 0);
+      p.moveTo(-20, -31); p.quadTo(-13, -44, 0, -36); p.lineTo(0, 0);
+      p.moveTo(0, -36); p.quadTo(13, -44, 20, -31); p.lineTo(0, 0);
+      p.moveTo(20, -31); p.quadTo(35, -31, 34, -15); p.lineTo(0, 0);
+      Floodlight.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol FogSignal = new Symbol();
+    static {
+        FogSignal.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        FogSignal.add(new Instr(Form.FILL, Color.black));
+        FogSignal.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        FogSignal.add(new Instr(Form.STRK, new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        FogSignal.add(new Instr(Form.FILL, new Color(0xd400d4)));
+        FogSignal.add(new Instr(Form.EARC, new Arc2D.Double(-120.0, -120.0, 240.0, 240.0, 190.0, 50.0, Arc2D.OPEN)));
+        FogSignal.add(new Instr(Form.EARC, new Arc2D.Double(-92.5, -92.5, 185.0, 185.0, 190.0, 50.0, Arc2D.OPEN)));
+        FogSignal.add(new Instr(Form.EARC, new Arc2D.Double(-65.0, -65.0, 130.0, 130.0, 190.0, 50.0, Arc2D.OPEN)));
+    }
+
+    public static final Symbol Lattice = new Symbol();
+    static {
+      Symbol colours = new Symbol();
+      Path2D.Double p = new Path2D.Double(); p.moveTo(-20.0, 0.0); p.lineTo(-15.0, -70.0); p.lineTo(15.0, -70.0); p.lineTo(20.0, 0.0); p.lineTo(10.0, 0.0); p.curveTo(10.0, -13.3, -10.0, -13.3, -10.0, 0.0); p.closePath();
+      colours.add(new Instr(Form.P1, p));
+      p = new Path2D.Double(); p.moveTo(-20.0, 0.0); p.lineTo(-17.5, -35.0); p.lineTo(17.5, -35.0); p.lineTo(20.0, 0.0); p.lineTo(10.0, 0.0); p.curveTo(10.0, -13.3, -10.0, -13.3, -10.0, 0.0); p.closePath();
+      colours.add(new Instr(Form.H2, p));
+      p = new Path2D.Double(); p.moveTo(-18.3, -23.3); p.lineTo(-16.7, -46.7); p.lineTo(16.7, -46.7); p.lineTo(18.3, -23.3); p.closePath();
+      colours.add(new Instr(Form.H3, p));
+      p = new Path2D.Double(); p.moveTo(-17.5, -35.0); p.lineTo(-16.25, -52.5); p.lineTo(16.25, -52.5); p.lineTo(17.5, -35.0); p.closePath();
+      colours.add(new Instr(Form.H4, p));
+      p = new Path2D.Double(); p.moveTo(-18.75, -17.5); p.lineTo(-17.5, -35.0); p.lineTo(17.5, -35.0); p.lineTo(18.75, -17.5); p.closePath();
+      colours.add(new Instr(Form.H5, p));
+      p = new Path2D.Double(); p.moveTo(0.0, -70.0); p.lineTo(15.0, -70.0); p.lineTo(20.0, 0.0); p.lineTo(10.0, 0.0); p.quadTo(10.0, -10.0, 0.0, -10.0); p.closePath();
+      colours.add(new Instr(Form.V2, p));
+      Lattice.add(new Instr(Form.COLR, colours));
+      Lattice.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+      Lattice.add(new Instr(Form.FILL, Color.black));
+      Lattice.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+      Lattice.add(new Instr(Form.LINE, new Line2D.Double(-30, 0, -10, 0)));
+      Lattice.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 30, 0)));
+      p = new Path2D.Double(); p.moveTo(-20.0, 0.0); p.lineTo(-15.0, -70.0); p.lineTo(15.0, -70.0); p.lineTo(20.0, 0.0);
+      p.moveTo(-19.0, -7.0); p.lineTo(17.5, -33.0); p.moveTo(19.0, -7.0); p.lineTo(-17.5, -33.0);
+      p.moveTo(-15.0, -65.0); p.lineTo(18.0, -40.0); p.moveTo(15.0, -65.0); p.lineTo(-18.0, -40.0);
+      Lattice.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol LightFlare = new Symbol();
+    static {
+        LightFlare.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -100, 40, 100)));
+        LightFlare.add(new Instr(Form.RSHP, new Ellipse2D.Double(-3, -3, 6, 6)));
+        Path2D.Double p = new Path2D.Double();
+        p.moveTo(0.0, -25.0); p.lineTo(15.0, -95.0); p.curveTo(20.0, -123.0, -20.0, -123.0, -15.0, -95.0);
+        p.closePath();
+        LightFlare.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol LightMajor = new Symbol();
+    static {
+        LightMajor.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_NON_ZERO);
+        p.moveTo(0.0, -7.0); p.curveTo(-9.3, -6.5, -9.3, 6.5, 0.0, 7.0); p.curveTo(9.3, 6.5, 9.3, -6.5, 0.0, -7.0); p.closePath();
+        p.moveTo(0.0, -35.5); p.lineTo(8.0, -11.2); p.lineTo(33.5, -11.2); p.lineTo(12.8, 4.0);
+        p.lineTo(20.5, 28.5); p.lineTo(0.0, 13.0); p.lineTo(-20.5, 28.5); p.lineTo(-12.8, 4.0); p.lineTo(-33.5, -11.2); p.lineTo(-8.0, -11.2); p.closePath();
+        LightMajor.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol LightMinor = new Symbol();
+    static {
+        LightMinor.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -26.5); p.lineTo(6.0, -8.4); p.lineTo(25.1, -8.4); p.lineTo(9.6, 3.0);
+        p.lineTo(15.4, 21.4); p.lineTo(0.0, 9.8); p.lineTo(-15.4, 21.4); p.lineTo(-9.6, 3.0); p.lineTo(-25.1, -8.4); p.lineTo(-6.0, -8.4); p.closePath();
+        LightMinor.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol PerchPort = new Symbol();
+    static {
+        PerchPort.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        PerchPort.add(new Instr(Form.FILL, Color.black));
+        PerchPort.add(new Instr(Form.LINE, new Line2D.Double(-10, 0, 10, 0)));
+        PerchPort.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -40)));
+        PerchPort.add(new Instr(Form.LINE, new Line2D.Double(25, -70, 0, -40)));
+        PerchPort.add(new Instr(Form.LINE, new Line2D.Double(-25, -70, 0, -40)));
+    }
+
+    public static final Symbol PerchStarboard = new Symbol();
+    static {
+        PerchStarboard.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        PerchStarboard.add(new Instr(Form.FILL, Color.black));
+        PerchStarboard.add(new Instr(Form.LINE, new Line2D.Double(-10, 0, 10, 0)));
+        PerchStarboard.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -70)));
+        PerchStarboard.add(new Instr(Form.LINE, new Line2D.Double(25, -40, 0, -68.7)));
+        PerchStarboard.add(new Instr(Form.LINE, new Line2D.Double(-25, -40, 0, -68.7)));
+    }
+
+    public static final Symbol RadarStation = new Symbol();
+    static {
+        RadarStation.add(new Instr(Form.STRK, new BasicStroke(2.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        RadarStation.add(new Instr(Form.FILL, new Color(0xd400d4)));
+        RadarStation.add(new Instr(Form.ELPS, new Ellipse2D.Double(-150, -150, 300, 300)));
+    }
+
+    public static final Symbol Stake = new Symbol();
+    static {
+        Stake.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Stake.add(new Instr(Form.FILL, Color.black));
+        Stake.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -70)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-2.0, 0.0); p.lineTo(-2.0, -70.0); p.lineTo(2.0, -70.0); p.lineTo(2.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-2.0, 0.0); p.lineTo(-2.0, -35.0); p.lineTo(2.0, -35.0); p.lineTo(2.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-2.0, -23.3); p.lineTo(-2.0, -46.7); p.lineTo(2.0, -46.7); p.lineTo(2.0, -23.3); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(-2.0, -35.0); p.lineTo(-2.0, -52.5); p.lineTo(2.0, -52.5); p.lineTo(2.0, -35.0); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-2.0, -17.5); p.lineTo(-2.0, -35.0); p.lineTo(2.0, -35.0); p.lineTo(2.0, -17.5); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        Stake.add(new Instr(Form.COLR, colours));
+        Stake.add(new Instr(Form.FILL, Color.black));
+        Stake.add(new Instr(Form.LINE, new Line2D.Double(-10, 0, 10, 0)));
+    }
+
+    public static final Symbol Tower = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0, 0.0); p.lineTo(-20.0, -70.0); p.lineTo(20.0, -70.0); p.lineTo(25.0, 0.0); p.lineTo(10.0, 0.0); p.curveTo(10.0, -13.3, -10.0, -13.3, -10.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-25.0, 0.0); p.lineTo(-22.5, -35.0); p.lineTo(22.5, -35.0); p.lineTo(25.0, 0.0); p.lineTo(10.0, 0.0); p.curveTo(10.0, -13.3, -10.0, -13.3, -10.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-23.3, -23.3); p.lineTo(-21.7, -46.7); p.lineTo(21.7, -46.7); p.lineTo(23.3, -23.3); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(-22.5, -35.0); p.lineTo(-21.0, -52.5); p.lineTo(21.0, -52.5); p.lineTo(22.5, -35.0); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-23.6, -17.5); p.lineTo(-22.5, -35.0); p.lineTo(22.5, -35.0); p.lineTo(23.6, -17.5); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -70.0); p.lineTo(20.0, -70.0); p.lineTo(25.0, 0.0); p.lineTo(10.0, 0.0); p.quadTo(10.0, -10.0, 0.0, -10.0); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        p = new Path2D.Double(); p.moveTo(-10, 0.0); p.lineTo(-6.7, -70.0); p.lineTo(6.7, -70.0); p.lineTo(10.0, 0.0); p.curveTo(10.0, -13.3, -10.0, -13.3, -10.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.V3, p));
+        Tower.add(new Instr(Form.COLR, colours));
+        Tower.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Tower.add(new Instr(Form.FILL, Color.black));
+        Tower.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Tower.add(new Instr(Form.LINE, new Line2D.Double(-35, 0, -10, 0)));
+        Tower.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 35, 0)));
+        p = new Path2D.Double(); p.moveTo(-25.0, 0.0); p.lineTo(-20.0, -70.0); p.lineTo(20.0, -70.0); p.lineTo(25.0, 0.0);
+        Tower.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol WithyPort = new Symbol();
+    static {
+        WithyPort.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        WithyPort.add(new Instr(Form.FILL, Color.black));
+        WithyPort.add(new Instr(Form.LINE, new Line2D.Double(-10, 0, 10, 0)));
+        WithyPort.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -70)));
+        WithyPort.add(new Instr(Form.LINE, new Line2D.Double(20, -60, 0, -50)));
+        WithyPort.add(new Instr(Form.LINE, new Line2D.Double(-20, -60, 0, -50)));
+        WithyPort.add(new Instr(Form.LINE, new Line2D.Double(30, -35, 0, -21)));
+        WithyPort.add(new Instr(Form.LINE, new Line2D.Double(-30, -35, 0, -21)));
+    }
+
+    public static final Symbol WithyStarboard = new Symbol();
+    static {
+        WithyStarboard.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        WithyStarboard.add(new Instr(Form.FILL, Color.black));
+        WithyStarboard.add(new Instr(Form.LINE, new Line2D.Double(-10, 0, 10, 0)));
+        WithyStarboard.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -70)));
+        WithyStarboard.add(new Instr(Form.LINE, new Line2D.Double(20, -50, 0, -60)));
+        WithyStarboard.add(new Instr(Form.LINE, new Line2D.Double(-20, -50, 0, -60)));
+        WithyStarboard.add(new Instr(Form.LINE, new Line2D.Double(30, -21, 0, -35)));
+        WithyStarboard.add(new Instr(Form.LINE, new Line2D.Double(-30, -21, 0, -35)));
+    }
+
+    public static final EnumMap<BcnSHP, Symbol> Shapes = new EnumMap<>(BcnSHP.class);
+    static {
+        Shapes.put(BcnSHP.BCN_UNKN, Beacons.Beacon); Shapes.put(BcnSHP.BCN_STAK, Beacons.Stake); Shapes.put(BcnSHP.BCN_TOWR, Beacons.Tower);
+        Shapes.put(BcnSHP.BCN_LATT, Beacons.Lattice); Shapes.put(BcnSHP.BCN_PILE, Beacons.Beacon); Shapes.put(BcnSHP.BCN_POLE, Beacons.Stake);
+        Shapes.put(BcnSHP.BCN_CARN, Beacons.Cairn); Shapes.put(BcnSHP.BCN_BUOY, Beacons.Beacon); Shapes.put(BcnSHP.BCN_POST, Beacons.Stake);
+        Shapes.put(BcnSHP.BCN_PRCH, Beacons.Stake);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Buoys.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Buoys.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Buoys.java	(revision 36424)
@@ -0,0 +1,270 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.util.EnumMap;
+
+import s57.S57val.BoySHP;
+import symbols.Symbols.Form;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Buoys {
+    private Buoys() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    public static final Symbol Barrel = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-50.0, 0); p.curveTo(-50.0, -11.0, -45.0, -32.0, -32.0, -36.0);
+        p.curveTo(-18.0, -40.0, 12.0, -40.0, 25.0, -36.0); p.curveTo(38.0, -32.0, 43.0, -11.0, 43.0, 0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        Barrel.add(new Instr(Form.COLR, colours));
+        Barrel.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Barrel.add(new Instr(Form.FILL, Color.black));
+        Barrel.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Barrel.add(new Instr(Form.LINE, new Line2D.Double(-57, 0, -10, 0)));
+        Barrel.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 50, 0)));
+        p = new Path2D.Double(); p.moveTo(-50.0, 0); p.curveTo(-50.0, -11.0, -45.0, -32.0, -32.0, -36.0); p.curveTo(-18.0, -40.0, 12.0, -40.0, 25.0, -36.0);
+        p.curveTo(38.0, -32.0, 43.0, -11.0, 43.0, 0); p.moveTo(-32.0, -36.0); p.curveTo(-23.0, -25.0, -21.0, -12.0, -21.0, 0.0);
+        Barrel.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Can = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-31.6, 0); p.lineTo(-15.7, -47.4); p.lineTo(41.1, -28.4); p.lineTo(31.6, 0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-31.6, 0); p.lineTo(-22.0, -28.4); p.lineTo(34.8, -9.4); p.lineTo(31.6, 0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-24.2, -22.1); p.lineTo(-19.9, -34.8); p.lineTo(36.9, -15.8); p.lineTo(32.6, -3.1); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(-22.0, -28.4); p.lineTo(-18.9, -37.9); p.lineTo(37.9, -18.9); p.lineTo(34.8, -9.4); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-25.2, -19.0); p.lineTo(-22.0, -28.4); p.lineTo(34.8, -9.4); p.lineTo(31.6, 0.0); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(12.7, -37.9); p.lineTo(41.1, -28.4); p.lineTo(31.6, 0); p.lineTo(8.0, 0.0); p.quadTo(8.0, -6.0, 2.5, -7.6); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        Can.add(new Instr(Form.COLR, colours));
+        Can.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Can.add(new Instr(Form.FILL, Color.black));
+        Can.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Can.add(new Instr(Form.LINE, new Line2D.Double(-40, 0, -10, 0)));
+        Can.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 40, 0)));
+        p = new Path2D.Double(); p.moveTo(-31.6, 0); p.lineTo(-15.7, -47.4); p.lineTo(41.1, -28.4); p.lineTo(31.6, 0);
+        Can.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Cone = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-31.6, 0); p.curveTo(-24.9, -32.2, 1.4, -38.7, 12.7, -37.9); p.curveTo(21.9, -30.5, 32.8, -18.4, 32.1, 0.0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-31.6, 0); p.quadTo(-29.0, -15.5, -17.3, -26.9); p.lineTo(31.5, -10.5); p.quadTo(33.0, -5.0, 32.1, 0.0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-22.3, -21.4); p.quadTo(-15.2, -29.8, -10.8, -31.8); p.lineTo(28.8, -18.5); p.quadTo(31.8, -12.5, 32.6, -3.1); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(-17.3, -27.0); p.quadTo(-13.0, -31.4, -6.9, -33.8); p.lineTo(26.4, -22.7); p.quadTo(30.0, -17.0, 31.7, -10.3); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-24.4, -18.7); p.quadTo(-20.3, -25.0, -17.3, -27.0); p.lineTo(31.7, -10.3); p.quadTo(32.7, -4.5, 32.1, 0.0); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(12.7, -37.9); p.curveTo(21.9, -30.5, 32.8, -18.4, 32.1, 0.0); p.lineTo(8.0, 0.0); p.quadTo(8.0, -6.0, 2.5, -7.6); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        Cone.add(new Instr(Form.COLR, colours));
+        Cone.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Cone.add(new Instr(Form.FILL, Color.black));
+        Cone.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Cone.add(new Instr(Form.LINE, new Line2D.Double(-40, 0, -10, 0)));
+        Cone.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 40, 0)));
+        p = new Path2D.Double(); p.moveTo(-31.6, 0); p.curveTo(-24.9, -32.2, 1.4, -38.7, 12.7, -37.9); p.curveTo(21.9, -30.5, 32.8, -18.4, 32.1, 0.0);
+        Cone.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Float = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-36.0, 0); p.lineTo(-47.0, -33.0); p.quadTo(-30.0, -25.0, -19.0, -23.0);
+        p.lineTo(-12.0, -42.0); p.lineTo(12.0, -42.0); p.lineTo(19.0, -23.0); p.quadTo(30.0, -25.0, 47.0, -33.0); p.lineTo(36.0, 0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-36.0, 0); p.lineTo(-43.0, -21.0); p.lineTo(43.0, -21.0); p.lineTo(36.0, 0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-40.8, -14.0); p.lineTo(-45.4, -28.0); p.lineTo(-35.5, -28.0); p.quadTo(-28.0, -25.0, -19.0, -23.0); p.lineTo(-17.2, -28.0);
+        p.lineTo(17.2, -28.0); p.lineTo(19.0, -23.0); p.quadTo(28.0, -25.0, 35.5, -28.0); p.lineTo(45.4, -28.0); p.lineTo(40.8, -14.0); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(-43.0, -21.0); p.lineTo(-47.0, -33.0); p.quadTo(-29.7, -24.8, -19.0, -23.0); p.lineTo(-15.8, -31.5); p.lineTo(15.8, -31.5);
+        p.lineTo(19.0, -23.0); p.quadTo(28.4, -24.3, 47.0, -33.0); p.lineTo(43.0, -21.0); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-39.8, -11.5); p.lineTo(-43.0, -21.0); p.lineTo(43.0, -21.0); p.lineTo(39.8, -11.5); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -42.0); p.lineTo(12.0, -42.0); p.lineTo(19.0, -23.0); p.quadTo(28.4, -24.3, 47.0, -33.0); p.lineTo(36.0, 0.0);
+        p.lineTo(8.0, 0.0); p.quadTo(7.7, -7.7, 0.0, -8.0); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        Float.add(new Instr(Form.COLR, colours));
+        Float.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Float.add(new Instr(Form.FILL, Color.black));
+        Float.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Float.add(new Instr(Form.LINE, new Line2D.Double(-54, 0, -10, 0)));
+        Float.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 54, 0)));
+        p = new Path2D.Double(); p.moveTo(-36.0, 0); p.lineTo(-47.0, -33.0); p.curveTo(-15.0, -17.0, 15.0, -17.0, 47.0, -33.0); p.lineTo(36.0, 0);
+        p.moveTo(-19.0, -23.0); p.lineTo(-12.0, -42.0); p.lineTo(12.0, -42.0); p.lineTo(19.0, -23.0);
+        Float.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Ice = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, 0); p.quadTo(-30.0, 0.0, -30.0, -15.0); p.lineTo(-30.0, -25.0); p.lineTo(30.0, -25.0); p.lineTo(30.0, -15); p.quadTo(30.0, 0.0, 15.0, 0.0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        Ice.add(new Instr(Form.COLR, colours));
+        Ice.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Ice.add(new Instr(Form.FILL, Color.black));
+        Ice.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Ice.add(new Instr(Form.LINE, new Line2D.Double(-35, 0, -10, 0)));
+        Ice.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 35, 0)));
+        p = new Path2D.Double(); p.moveTo(-15.0, 0); p.quadTo(-30.0, 0.0, -30.0, -15.0); p.lineTo(-30.0, -25.0); p.lineTo(30.0, -25.0); p.lineTo(30.0, -15); p.quadTo(30.0, 0.0, 15.0, 0.0);
+        Ice.add(new Instr(Form.PLIN, p));
+        p = new Path2D.Double(); p.moveTo(-6.0, 8.0); p.lineTo(-6.0, 40.0); p.lineTo(6.0, 40.0); p.lineTo(6.0, 8.0);
+        Ice.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Pillar = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-32.0, 0.0); p.lineTo(-2.8, -32.5); p.lineTo(25.6, -96.7); p.lineTo(37.0, -92.9); p.lineTo(21.8, -24.3);
+        p.lineTo(25.0, 0.0); p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-32.0, 0); p.lineTo(-2.8, -32.5); p.lineTo(5.3, -51.0); p.lineTo(26.3, -43.9); p.lineTo(21.8, -24.3); p.lineTo(25.0, 0.0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-0.9, -37.1); p.lineTo(11.3, -64.6); p.lineTo(29.6, -58.7); p.lineTo(23.1, -29.3); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(5.3, -51.0); p.lineTo(14.5, -71.5); p.lineTo(31.2, -65.9); p.lineTo(26.3, -43.9); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-5.2, -29.7); p.lineTo(-2.8, -32.5); p.lineTo(5.3, -51.0); p.lineTo(26.3, -43.9); p.lineTo(21.8, -24.3); p.lineTo(22.2, -21.5); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(12.7, -37.9); p.lineTo(31.3, -94.8); p.lineTo(37.0, -92.9); p.lineTo(21.8, -24.3);
+        p.lineTo(25.0, 0.0); p.lineTo(8.0, 0.0); p.quadTo(8.0, -6.0, 2.5, -7.6); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        Pillar.add(new Instr(Form.COLR, colours));
+        Pillar.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Pillar.add(new Instr(Form.FILL, Color.black));
+        Pillar.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Pillar.add(new Instr(Form.LINE, new Line2D.Double(-42, 0, -10, 0)));
+        Pillar.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 36, 0)));
+        p = new Path2D.Double(); p.moveTo(-32.0, 0.0); p.lineTo(-2.8, -32.5); p.lineTo(25.6, -96.7); p.lineTo(37.0, -92.9); p.lineTo(21.8, -24.3); p.lineTo(25.0, 0.0);
+        Pillar.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Spar = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-3.2, -9.5); p.lineTo(25.6, -96.7); p.lineTo(37.0, -92.9); p.lineTo(8.2, -5.7); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-3.2, -9.5); p.lineTo(11.2, -53.1); p.lineTo(22.6, -49.3); p.lineTo(8.2, -5.7); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(6.4, -38.6); p.lineTo(16.0, -67.6); p.lineTo(27.4, -63.8); p.lineTo(17.8, -34.8); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(11.2, -53.1); p.lineTo(18.4, -74.9); p.lineTo(29.8, -71.1); p.lineTo(22.6, -49.3); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(4.0, -31.3); p.lineTo(11.2, -53.1); p.lineTo(22.6, -49.3); p.lineTo(15.4, -27.5); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(2.5, -7.6); p.lineTo(31.3, -94.8); p.lineTo(37.0, -92.9); p.lineTo(8.2, -5.7); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        Spar.add(new Instr(Form.COLR, colours));
+        Spar.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Spar.add(new Instr(Form.FILL, Color.black));
+        Spar.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Spar.add(new Instr(Form.LINE, new Line2D.Double(-20, 0, -10, 0)));
+        Spar.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 20, 0)));
+        p = new Path2D.Double(); p.moveTo(-3.2, -9.5); p.lineTo(25.6, -96.7); p.lineTo(37.0, -92.9); p.lineTo(8.2, -5.7);
+        Spar.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Sphere = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0, 0); p.curveTo(-32.0, -21.0, -14.0, -45.5, 12.7, -37.9); p.curveTo(27.5, -33.8, 37.8, -15.5, 32.0, 0.0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-25.0, 0); p.quadTo(-30.0, -15.0, -20.5, -28.0); p.lineTo(33.8, -10.0); p.quadTo(33.7, -4.0, 32.0, 0.0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-24.2, -22.1); p.quadTo(-21.0, -28.5, -15.2, -33.3); p.lineTo(32.8, -17.2); p.quadTo(34.6, -10.0, 33.0, -2.9); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(-20.5, -28.0); p.quadTo(-16.5, -33.0, -12.0, -35.5); p.lineTo(31.5, -21.0); p.quadTo(33.5, -17.0, 34.0, -9.5); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-25.2, -19.0); p.quadTo(-23.5, -24.0, -20.5, -28.0); p.lineTo(34.0, -9.5); p.quadTo(34.0, -3.0, 32.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(12.7, -37.9); p.curveTo(27.5, -33.8, 37.8, -15.5, 32.0, 0.0); p.lineTo(8.0, 0.0); p.quadTo(8.0, -6.0, 2.5, -7.6); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        Sphere.add(new Instr(Form.COLR, colours));
+        Sphere.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Sphere.add(new Instr(Form.FILL, Color.black));
+        Sphere.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Sphere.add(new Instr(Form.LINE, new Line2D.Double(-33, 0, -10, 0)));
+        Sphere.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 40, 0)));
+        Sphere.add(new Instr(Form.EARC, new Arc2D.Double(-26.5, -39.4, 60.0, 60.0, -18.0, 216.0, Arc2D.OPEN)));
+    }
+
+    public static final Symbol Storage = new Symbol();
+    static {
+        Storage.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Storage.add(new Instr(Form.FILL, Color.black));
+        Storage.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-50.0, 0.0); p.lineTo(-40.0, -20.0); p.lineTo(40.0, -20.0); p.lineTo(40.0, -20.0);
+        p.lineTo(50.0, 0.0); p.lineTo(40.0, 20.0); p.lineTo(-40.0, 20.0); p.closePath();
+        Storage.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Super = new Symbol();
+    static {
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-48.0, 0); p.lineTo(-28.0, -42.0); p.lineTo(28.0, -42.0); p.lineTo(48.0, 0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-48.0, 0); p.lineTo(-38.0, -21.0); p.lineTo(38.0, -21.0); p.lineTo(48.0, 0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-41.3, -14.0); p.lineTo(-34.7, -28.0); p.lineTo(34.7, -28.0); p.lineTo(41.3, -14.0); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(-38.0, -21.0); p.lineTo(-33.0, -31.5); p.lineTo(33.0, -31.5); p.lineTo(38.0, -21.0); p.closePath();
+        colours.add(new Instr(Form.H4, p));
+        p = new Path2D.Double(); p.moveTo(-43.0, -11.5); p.lineTo(-38.0, -21.0); p.lineTo(38.0, -21.0); p.lineTo(43.0, -11.5); p.closePath();
+        colours.add(new Instr(Form.H5, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -42.0); p.lineTo(28.0, -42.0); p.lineTo(48.0, 0.0); p.lineTo(8.0, 0.0); p.quadTo(7.7, -7.7, 0.0, -8.0); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        Super.add(new Instr(Form.COLR, colours));
+        Super.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Super.add(new Instr(Form.FILL, Color.black));
+        Super.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Super.add(new Instr(Form.LINE, new Line2D.Double(-54, 0, -10, 0)));
+        Super.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 54, 0)));
+        p = new Path2D.Double(); p.moveTo(-48.0, 0); p.lineTo(-28.0, -42.0); p.lineTo(28.0, -42.0); p.lineTo(48.0, 0);
+        Super.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final EnumMap<BoySHP, Symbol> Shapes = new EnumMap<>(BoySHP.class);
+    static {
+        Shapes.put(BoySHP.BOY_UNKN, Buoys.Pillar); Shapes.put(BoySHP.BOY_CONE, Buoys.Cone); Shapes.put(BoySHP.BOY_CAN, Buoys.Can);
+        Shapes.put(BoySHP.BOY_SPHR, Buoys.Sphere); Shapes.put(BoySHP.BOY_PILR, Buoys.Pillar); Shapes.put(BoySHP.BOY_SPAR, Buoys.Spar);
+        Shapes.put(BoySHP.BOY_BARL, Buoys.Barrel); Shapes.put(BoySHP.BOY_SUPR, Buoys.Super); Shapes.put(BoySHP.BOY_ICE, Buoys.Ice);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Charts.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Charts.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Charts.java	(revision 36424)
@@ -0,0 +1,37 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import symbols.Symbols.Delta;
+import symbols.Symbols.Form;
+import symbols.Symbols.Handle;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Charts {
+    private Charts() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    public static final Symbol Grid = new Symbol();
+    static {
+    }
+
+    public static final Symbol Rose = new Symbol();
+    static {
+    }
+
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Facilities.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Facilities.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Facilities.java	(revision 36424)
@@ -0,0 +1,219 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RoundRectangle2D;
+import java.util.EnumMap;
+
+import s57.S57val.CatSCF;
+import symbols.Symbols.Form;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Facilities {
+    private Facilities() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    private static final Symbol Facility = new Symbol();
+    static {
+        Facility.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Facility.add(new Instr(Form.FILL, new Color(0x80ffffff, true)));
+        RoundRectangle2D.Double s = new RoundRectangle2D.Double(-29, -29, 58, 58, 15, 15);
+        Facility.add(new Instr(Form.RSHP, s));
+        Facility.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Facility.add(new Instr(Form.RRCT, s));
+    }
+
+    public static final Symbol Boatlift = new Symbol(); //was Crane
+    static {
+        Boatlift.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Boatlift.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        Boatlift.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Boatlift.add(new Instr(Form.ELPS, new Ellipse2D.Double(-3.7, -19.7, 12, 12)));
+        Boatlift.add(new Instr(Form.LINE, new Line2D.Double(2.3, -7.7, 2.3, -2.0)));
+        Boatlift.add(new Instr(Form.EARC, new Arc2D.Double(-10.0, -1.5, 20, 20, 75.0, -260.0, Arc2D.OPEN)));
+    }
+
+    public static final Symbol Boatyard = new Symbol();
+    static {
+        Boatyard.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Boatyard.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        Boatyard.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        Boatyard.add(new Instr(Form.LINE, new Line2D.Double(19, 19, -8, -8)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-11.3, -11.3); p.lineTo(-10.5, -17.5); p.lineTo(-14.8, -21.9); p.lineTo(-11.3, -25.4); p.lineTo(-7.4, -21.5);
+        p.curveTo(1.0, -11.5, -11.5, 1.0, -21.5, -7.4); p.lineTo(-25.4, -11.3); p.lineTo(-21.9, -14.8); p.lineTo(-17.5, -10.5); p.closePath();
+        Boatyard.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol Chandler = new Symbol();
+    static {
+        Chandler.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Chandler.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        Chandler.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Chandler.add(new Instr(Form.ELPS, new Ellipse2D.Double(14, 7, 10, 10)));
+        Chandler.add(new Instr(Form.LINE, new Line2D.Double(-23.0, 12.0, 14.0, 12.0)));
+        Chandler.add(new Instr(Form.LINE, new Line2D.Double(8.0, 21.0, 8.0, -8.6)));
+        Chandler.add(new Instr(Form.LINE, new Line2D.Double(-16.0, 21.0, -16.0, -8.6)));
+        Chandler.add(new Instr(Form.EARC, new Arc2D.Double(-16.0, -20.5, 24, 24, 0.0, 180.0, Arc2D.OPEN)));
+    }
+
+    public static final Symbol Fuel = new Symbol();
+    static {
+        Fuel.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Fuel.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        Fuel.add(new Instr(Form.STRK, new BasicStroke(2.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Fuel.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-15.6, 22.1); p.lineTo(-15.6, -19.4); p.quadTo(-15.5, -22.7, -12.2, -22.8); p.lineTo(0.2, -22.8); p.quadTo(3.3, -22.7, 3.4, -19.4); p.lineTo(3.4, 22.1); p.closePath();
+        p.moveTo(-12.8, -19.0); p.quadTo(-12.7, -19.9, -11.8, -20.0); p.lineTo(-0.4, -20.0); p.quadTo(0.5, -19.9, 0.6, -19.0); p.lineTo(0.6, -9.4);
+        p.quadTo(0.5, -8.5, -0.4, -8.4); p.lineTo(-11.8, -8.4); p.quadTo(-12.7, -8.3, -12.8, -9.4); p.closePath();
+        Fuel.add(new Instr(Form.PGON, p));
+        p = new Path2D.Double(); p.moveTo(3.0, -3.0); p.lineTo(7.0, -3.0); p.quadTo(9.4, -2.8, 9.6, -0.4); p.lineTo(9.6, 18.0); p.curveTo(10.1, 23.2, 18.4, 21.5, 17.4, 17.2);
+        p.lineTo(14.9, 3.5); p.lineTo(15.1, -10.3); p.quadTo(14.9, -11.9, 13.9, -13.1); p.lineTo(7.4, -19.6); p.moveTo(15.1, -7.4); p.lineTo(12.6, -7.4); p.quadTo(11.1, -7.4, 11.1, -8.9); p.lineTo(11.1, -16.0);
+        Fuel.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Laundrette = new Symbol();
+    static {
+        Laundrette.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Laundrette.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        Laundrette.add(new Instr(Form.STRK, new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Laundrette.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Laundrette.add(new Instr(Form.RECT, new Rectangle2D.Double(-15, -15, 30, 30)));
+        Laundrette.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15, -15); p.lineTo(-15, -20); p.lineTo(15, -20); p.lineTo(15, -15);
+        p.moveTo(-10, 15); p.lineTo(-10, 20); p.lineTo(10, 20); p.lineTo(10, 15);
+        Laundrette.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol PumpOut = new Symbol();
+    static {
+        PumpOut.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        PumpOut.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        PumpOut.add(new Instr(Form.STRK, new BasicStroke(2.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        PumpOut.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(3.9, -3.7); p.lineTo(-7.4, -3.7); p.lineTo(-12.0, 2.0); p.lineTo(-22.7, 2.0);
+        p.lineTo(-11.8, 14.9); p.lineTo(15.1, 14.9); p.lineTo(21.9, 10.2); p.lineTo(21.9, 3.1); p.lineTo(13.5, 3.1);
+        PumpOut.add(new Instr(Form.PLIN, p));
+        PumpOut.add(new Instr(Form.STRK, new BasicStroke(3.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        p = new Path2D.Double(); p.moveTo(-2.5, 3.0); p.lineTo(-2.5, -13.8); p.lineTo(6.9, -13.8); p.lineTo(6.9, -6.7); p.lineTo(14.5, -6.7);
+        PumpOut.add(new Instr(Form.PLIN, p));
+        p = new Path2D.Double(); p.moveTo(9.7, 2.3); p.lineTo(9.7, 10.3); p.lineTo(-4.1, 10.3); p.lineTo(-4.1, 2.3); p.closePath();
+        PumpOut.add(new Instr(Form.PGON, p));
+        p = new Path2D.Double(); p.moveTo(14.1, -10.6); p.lineTo(23.1, -6.7); p.lineTo(14.1, -2.8); p.closePath();
+        PumpOut.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol SailingClub = new Symbol();
+    static {
+        SailingClub.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        SailingClub.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        SailingClub.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        SailingClub.add(new Instr(Form.FILL, new Color(0xa30075)));
+        SailingClub.add(new Instr(Form.LINE, new Line2D.Double(-5, 20, -5, -20)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-5, 0); p.lineTo(20, -10); p.lineTo(-5, -20); p.closePath();
+        SailingClub.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol Shower = new Symbol();
+    static {
+        Shower.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Shower.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        Shower.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Shower.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Shower.add(new Instr(Form.LINE, new Line2D.Double(-4.8, -24.5, 6.2, -13.5)));
+        Shower.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Shower.add(new Instr(Form.LINE, new Line2D.Double(-18.1, -17.9, -6.1, -21.3)));
+        Shower.add(new Instr(Form.LINE, new Line2D.Double(-13.9, -10.2, -3.9, -17.7)));
+        Shower.add(new Instr(Form.LINE, new Line2D.Double(-7.8, -4.4, -0.5, -14.3)));
+        Shower.add(new Instr(Form.LINE, new Line2D.Double(-0.2, -0.2, 3.1, -12.1)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(11.1, 24.6); p.lineTo(11.1, -16.0); p.curveTo(11.1, -22.7, 3.4, -23.6, 0.8, -19.3);
+        Shower.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Slipway = new Symbol();
+    static {
+        Slipway.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Slipway.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        Slipway.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Slipway.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-24.8, 0.1); p.lineTo(-24.8, 18.0); p.curveTo(-21.2, 18.0, -22.2, 16.7, -18.6, 16.7); p.curveTo(-15.0, 16.7, -16.0, 18.0, -12.4, 18.0);
+        p.curveTo(-8.8, 18.0, -9.8, 16.7, -6.2, 16.7); p.curveTo(-2.6, 16.7, -3.6, 18.0, 0.0, 18.0); p.curveTo(3.6, 18.0, 2.6, 16.7, 6.2, 16.7); p.curveTo(9.8, 16.7, 8.8, 18.0, 12.4, 18.0);
+        p.curveTo(16.0, 18.0, 15.0, 16.7, 18.6, 16.7); p.curveTo(22.2, 16.7, 21.2, 18.0, 24.8, 18.0); p.lineTo(24.8, 13.6); p.closePath();
+        Slipway.add(new Instr(Form.PGON, p));
+        Slipway.add(new Instr(Form.ELPS, new Ellipse2D.Double(-1.65, -1.9, 8, 8)));
+        Slipway.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Slipway.add(new Instr(Form.LINE, new Line2D.Double(-24.5, -8.3, -3.1, -2.4)));
+        Slipway.add(new Instr(Form.LINE, new Line2D.Double(9.3, 1.1, 22.2, 4.6)));
+        p = new Path2D.Double(); p.moveTo(22.9, 0.6); p.lineTo(25.0, -7.4); p.lineTo(-5.1, -15.8); p.lineTo(0.3, -19.6); p.lineTo(-1.6, -20.1); p.lineTo(-7.2, -16.2);
+        p.lineTo(-17.1, -18.9); p.quadTo(-16.8, -11.4, -7.7, -7.7); p.closePath();
+        Slipway.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol Toilet = new Symbol();
+    static {
+        Toilet.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Toilet.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+        Toilet.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        Toilet.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Toilet.add(new Instr(Form.LINE, new Line2D.Double(0, 20, 0, -20)));
+        Toilet.add(new Instr(Form.RSHP, new Ellipse2D.Double(-18.5, -22.5, 7.4, 7.4)));
+        Toilet.add(new Instr(Form.RSHP, new Ellipse2D.Double(11, -22.5, 7.4, 7.4)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-9.8, -12.2); p.lineTo(-4.8, 2.7); p.lineTo(-7.3, 3.9); p.lineTo(-10.6, -7.0); p.lineTo(-11.7, -6.4); p.lineTo(-7.6, 9.0);
+        p.lineTo(-11.3, 9.0); p.lineTo(-11.6, 22.1); p.lineTo(-13.9, 22.1); p.lineTo(-14.2, 9.0); p.lineTo(-15.8, 9.0); p.lineTo(-16.2, 22.1); p.lineTo(-18.4, 22.1);
+        p.lineTo(-18.8, 9.0); p.lineTo(-22.3, 9.0); p.lineTo(-18.2, -6.4); p.lineTo(-19.1, -7.0); p.lineTo(-22.9, 3.9); p.lineTo(-25.1, 2.7); p.lineTo(-19.9, -12.2); p.closePath();
+        Toilet.add(new Instr(Form.PGON, p));
+        p = new Path2D.Double(); p.moveTo(19.2, -12.2); p.lineTo(22.3, -10.1); p.lineTo(22.3, 4.4); p.lineTo(20.2, 4.4); p.lineTo(20.2, -7.3); p.lineTo(18.3, -7.3); p.lineTo(18.3, 22.1);
+        p.lineTo(15.8, 22.1); p.lineTo(15.8, 4.6); p.lineTo(13.8, 4.6); p.lineTo(13.4, 22.1); p.lineTo(11.0, 22.1); p.lineTo(11.0, -7.3); p.lineTo(9.5, -7.3); p.lineTo(9.5, 4.4); p.lineTo(6.8, 4.4);
+        p.lineTo(6.8, -10.1); p.lineTo(9.4, -12.2); p.closePath();
+        Toilet.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol VisitorBerth = new Symbol();
+    static {
+        VisitorBerth.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        VisitorBerth.add(new Instr(Form.FILL, new Color(0xa30075)));
+        VisitorBerth.add(new Instr(Form.RSHP, new Ellipse2D.Double(-25, -25, 50, 50)));
+        VisitorBerth.add(new Instr(Form.FILL, Color.white));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(7.9, -13.6); p.lineTo(14.0, -13.6); p.lineTo(3.4, 13.6); p.lineTo(-3.4, 13.6);
+        p.lineTo(-14.0, -13.6); p.lineTo(-7.9, -13.6); p.lineTo(0.0, 8.7); p.closePath();
+        VisitorBerth.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol VisitorMooring = new Symbol();
+    static {
+        VisitorMooring.add(new Instr(Form.FILL, new Color(0xa30075)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0, 0); p.curveTo(-32.0, -21.0, -14.0, -45.5, 12.7, -37.9); p.curveTo(27.5, -33.8, 37.8, -15.5, 32.0, 0.0);
+        p.lineTo(8.0, 0.0); p.curveTo(8.0, -11.0, -8.0, -11.0, -8.0, 0.0); p.closePath();
+        VisitorMooring.add(new Instr(Form.PGON, p));
+        VisitorMooring.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        VisitorMooring.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        VisitorMooring.add(new Instr(Form.LINE, new Line2D.Double(-33, 0, -10, 0)));
+        VisitorMooring.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 40, 0)));
+        VisitorMooring.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        VisitorMooring.add(new Instr(Form.ELPS, new Ellipse2D.Double(6.5, -49.5, 12, 12)));
+        VisitorMooring.add(new Instr(Form.FILL, Color.white));
+        p = new Path2D.Double(); p.moveTo(8.3, -32.8); p.lineTo(12.5, -32.8); p.lineTo(5.4, -12.9); p.lineTo(1.0, -12.9); p.lineTo(-6.1, -32.8);
+        p.lineTo(-1.9, -32.8); p.lineTo(3.2, -18.1); p.closePath();
+        VisitorMooring.add(new Instr(Form.PGON, p));
+    }
+
+    public static final EnumMap<CatSCF, Symbol> Cats = new EnumMap<>(CatSCF.class);
+    static {
+        Cats.put(CatSCF.SCF_BHST, Boatlift); Cats.put(CatSCF.SCF_BTYD, Boatyard); Cats.put(CatSCF.SCF_CHDR, Chandler); Cats.put(CatSCF.SCF_FUEL, Fuel); Cats.put(CatSCF.SCF_LAUN, Laundrette);
+        Cats.put(CatSCF.SCF_PMPO, PumpOut); Cats.put(CatSCF.SCF_CLUB, SailingClub); Cats.put(CatSCF.SCF_SHWR, Shower); Cats.put(CatSCF.SCF_SLPW, Slipway); Cats.put(CatSCF.SCF_WC, Toilet);
+        Cats.put(CatSCF.SCF_VBTH, VisitorBerth); Cats.put(CatSCF.SCF_VMOR, VisitorMooring);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Harbours.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Harbours.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Harbours.java	(revision 36424)
@@ -0,0 +1,249 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+
+import symbols.Symbols.Form;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Scheme;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Harbours {
+    private Harbours() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    public static final Symbol Anchor = new Symbol();
+    static {
+        Anchor.add(new Instr(Form.BBOX, new Rectangle2D.Double(-60, -60, 120, 120)));
+        Anchor.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Anchor.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -59, 20, 20)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(23.0, -40.0); p.lineTo(23.0, -30.0); p.lineTo(6.0, -30.0); p.lineTo(7.0, 31.0); p.quadTo(21.0, 29.0, 31.0, 22.0);
+        p.lineTo(27.0, 18.0); p.lineTo(52.0, 0.0); p.lineTo(45.0, 35.0); p.lineTo(37.0, 28.0); p.quadTo(25.0, 39.0, 7.0, 43.0); p.lineTo(6.0, 51.0);
+        p.lineTo(-6.0, 51.0); p.lineTo(-7.0, 43.0); p.quadTo(-25.0, 39.0, -37.0, 28.0); p.lineTo(-45.0, 35.0); p.lineTo(-52.0, 0.0); p.lineTo(-27.0, 18.0);
+        p.lineTo(-31.0, 22.0); p.quadTo(-21.0, 29.0, -7.0, 31.0); p.lineTo(-6.0, -30.0); p.lineTo(-23.0, -30.0); p.lineTo(-23.0, -40.0); p.closePath();
+        Anchor.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol Yacht = new Symbol();
+    static {
+        Yacht.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-65.0, 50.0); p.curveTo(-36.0, 97.0, 36.0, 97.0, 65.0, 50.0); p.lineTo(3.0, 50.0); p.lineTo(3.0, 40.0); p.lineTo(55.0, 30.0);
+        p.curveTo(32.0, 4.0, 25.0, -15.0, 26.0, -52.0); p.lineTo(1.5, -40.0); p.lineTo(1.0, -64.0); p.lineTo(-2.0, -64.0); p.lineTo(-4.0, 50.0); p.closePath();
+        p.moveTo(-50.0, 45.0); p.curveTo(-55.0, 3.0, -37.0, -28.5, -7.0, -46.0); p.curveTo(-28.0, -15.0, -26.0, 11.0, -20.5, 30.0); p.closePath();
+        Yacht.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol Anchorage = new Symbol();
+    static {
+        Anchorage.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.67, 0, 0, new Scheme(Symbols.Msymb), null)));
+    }
+
+    public static final Symbol Bollard = new Symbol();
+    static {
+        Bollard.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Bollard.add(new Instr(Form.FILL, Color.white));
+        Ellipse2D.Double s = new Ellipse2D.Double(-10, -10, 20, 20);
+        Bollard.add(new Instr(Form.RSHP, s));
+        Bollard.add(new Instr(Form.FILL, Color.black));
+        Bollard.add(new Instr(Form.ELPS, s));
+    }
+
+    public static final Symbol CallPoint1 = new Symbol();
+    static {
+        CallPoint1.add(new Instr(Form.BBOX, new Rectangle2D.Double(-50, -50, 100, 100)));
+        CallPoint1.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        CallPoint1.add(new Instr(Form.FILL, Symbols.Msymb));
+        CallPoint1.add(new Instr(Form.ELPS, new Ellipse2D.Double(-25, -25, 50, 50)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-16.0, -20.0); p.lineTo(0.0, -50.0); p.lineTo(16.0, -20.0);
+        CallPoint1.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol CallPoint2 = new Symbol();
+    static {
+        CallPoint2.add(new Instr(Form.BBOX, new Rectangle2D.Double(-50, -50, 100, 100)));
+        CallPoint2.add(new Instr(Form.SYMB, new Symbols.SubSymbol(CallPoint1, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-16.0, 20.0); p.lineTo(0.0, 50.0); p.lineTo(16.0, 20.0);
+        CallPoint2.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol ContainerCrane = new Symbol();
+    static {
+        ContainerCrane.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ContainerCrane.add(new Instr(Form.RSHP, new Rectangle2D.Double(-15, -65, 30, 100)));
+        ContainerCrane.add(new Instr(Form.RECT, new Rectangle2D.Double(-40, -12.5, 80, 25)));
+    }
+
+    public static final Symbol Customs = new Symbol();
+    static {
+        Customs.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Customs.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        Customs.add(new Instr(Form.ELPS, new Ellipse2D.Double(-28, -28, 56, 56)));
+        Customs.add(new Instr(Form.LINE, new Line2D.Double(-25, 5, 25, 5)));
+        Customs.add(new Instr(Form.LINE, new Line2D.Double(-25, -5, 25, -5)));
+    }
+
+    public static final Symbol DeviationDolphin = new Symbol();
+    static {
+        DeviationDolphin.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-30.0, 0.0); p.lineTo(30.0, 0.0); p.moveTo(0.0, 0.0); p.lineTo(0.0, -40.0);
+        p.moveTo(-20.0, 0.0); p.lineTo(-15.0, -32.0); p.lineTo(15.0, -32.0); p.lineTo(20.0, 0.0);
+        DeviationDolphin.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol DistanceI = new Symbol();
+    static {
+        DistanceI.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        DistanceI.add(new Instr(Form.ELPS, new Ellipse2D.Double(-11, -11, 22, 22)));
+    }
+
+    public static final Symbol DistanceU = new Symbol();
+    static {
+        DistanceU.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        DistanceU.add(new Instr(Form.FILL, Symbols.Msymb));
+        DistanceU.add(new Instr(Form.ELPS, new Ellipse2D.Double(-11, -11, 22, 22)));
+    }
+
+    public static final Symbol Dolphin = new Symbol();
+    static {
+        Dolphin.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Dolphin.add(new Instr(Form.FILL, new Color(0xffd400)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(3.8, -9.2); p.lineTo(9.2, -3.8); p.lineTo(9.2, 3.8); p.lineTo(3.8, 9.2);
+        p.lineTo(-3.8, 9.2); p.lineTo(-9.2, 3.8); p.lineTo(-9.2, -3.8); p.lineTo(-3.8, -9.2); p.closePath();
+        Dolphin.add(new Instr(Form.PGON, p));
+        Dolphin.add(new Instr(Form.FILL, Color.black));
+        Dolphin.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Explosives = new Symbol();
+    static {
+        Explosives.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Explosives.add(new Instr(Form.RSHP, new Ellipse2D.Double(-5, 25, 10, 10)));
+        Explosives.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-10, 20); p.lineTo(-13, 17); p.lineTo(-13, 8);
+        p.moveTo(0, 10); p.lineTo(0, 0); p.lineTo(-8, -10);
+        p.moveTo(10, 17); p.lineTo(18, -10); p.lineTo(10, -20);
+        Explosives.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Fishing = new Symbol();
+    static {
+        Fishing.add(new Instr(Form.STRK, new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Fishing.add(new Instr(Form.FILL, Symbols.Msymb));
+        Fishing.add(new Instr(Form.EARC, new Arc2D.Double(-50, -50, 100, 100, 15, 140, Arc2D.OPEN)));
+        Fishing.add(new Instr(Form.EARC, new Arc2D.Double(-50, -50, 100, 100, -15, -140, Arc2D.OPEN)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-24, 3); p.curveTo(12, 24, 30, 15, 48, 0); p.curveTo(30, -15, 12, -24, -24, -3);
+        p.lineTo(-45, -15); p.quadTo(-48, 0, -45, 15); p.closePath();
+        p.moveTo(25, 0); p.curveTo(25, 6, 34, 6, 34, 0); p.curveTo(34, -6, 25, -6, 25, 0); p.closePath();
+        Fishing.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol Harbour = new Symbol();
+    static {
+        Harbour.add(new Instr(Form.STRK, new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Harbour.add(new Instr(Form.FILL, Symbols.Msymb));
+        Harbour.add(new Instr(Form.ELPS, new Ellipse2D.Double(-50, -50, 100, 100)));
+        Harbour.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.6, 0, 0, new Scheme(Symbols.Msymb), null)));
+    }
+
+    public static final Symbol HarbourMaster = new Symbol();
+    static {
+        HarbourMaster.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        HarbourMaster.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        HarbourMaster.add(new Instr(Form.ELPS, new Ellipse2D.Double(-24, -28, 48, 56)));
+        HarbourMaster.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.4, 0, 0, null, null)));
+    }
+
+    public static final Symbol Hospital = new Symbol();
+    static {
+        Hospital.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Hospital.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        Hospital.add(new Instr(Form.ELPS, new Ellipse2D.Double(-28, -28, 56, 56)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-26, -5); p.lineTo(-5, -5); p.lineTo(-5, -25); p.moveTo(5, -25); p.lineTo(5, -5); p.lineTo(25, -5);
+        p.moveTo(-25, 5); p.lineTo(-5, 5); p.lineTo(-5, 25); p.moveTo(5, 25); p.lineTo(5, 5); p.lineTo(25, 5);
+        Hospital.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol LandingSteps = new Symbol();
+    static {
+        LandingSteps.add(new Instr(Form.FILL, Symbols.Msymb));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-20, -10); p.lineTo(10, 20); p.lineTo(20, 20); p.lineTo(20, 10);
+        p.lineTo(10, 10); p.lineTo(10, 0); p.lineTo(0, 0); p.lineTo(0, -10); p.lineTo(-10, -10); p.lineTo(-10, -20); p.lineTo(-20, -20); p.closePath();
+        LandingSteps.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol Marina = new Symbol();
+    static {
+        Marina.add(new Instr(Form.STRK, new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Marina.add(new Instr(Form.FILL, Symbols.Msymb));
+        Marina.add(new Instr(Form.EARC, new Arc2D.Double(-50.0, -50.0, 100.0, 100.0, 215.0, -250.0, Arc2D.OPEN)));
+        Marina.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 0.6, 0, 0, new Scheme(Symbols.Msymb), null)));
+    }
+
+    public static final Symbol MarinaNF = new Symbol();
+    static {
+        MarinaNF.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 0.6, 0, 0, new Scheme(Symbols.Msymb), null)));
+    }
+
+    public static final Symbol Pilot = new Symbol();
+    static {
+        Pilot.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Pilot.add(new Instr(Form.FILL, new Color(0xd400d4)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15, 0); p.lineTo(0, -56); p.lineTo(15, 0); p.lineTo(0, 56); p.closePath();
+        Pilot.add(new Instr(Form.PGON, p));
+        Pilot.add(new Instr(Form.ELPS, new Ellipse2D.Double(-58, -58, 116, 116)));
+    }
+
+    public static final Symbol PortCrane = new Symbol();
+    static {
+        PortCrane.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        PortCrane.add(new Instr(Form.EARC, new Arc2D.Double(-36.0, -36.0, 72.0, 72.0, 70.0, -320.0, Arc2D.OPEN)));
+        PortCrane.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -60)));
+    }
+
+    public static final Symbol Post = new Symbol();
+    static {
+        Post.add(new Instr(Form.RSHP, new Ellipse2D.Double(-10, -10, 20, 20)));
+    }
+
+    public static final Symbol Rescue = new Symbol();
+    static {
+        Rescue.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -50, 40, 100)));
+        Rescue.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-11, 0); p.lineTo(0, -43); p.lineTo(11, 0); p.lineTo(0, 43); p.closePath();
+        Rescue.add(new Instr(Form.PGON, p));
+        Rescue.add(new Instr(Form.LINE, new Line2D.Double(-15, 0, 15, 0)));
+    }
+
+    public static final Symbol SignalStation = new Symbol();
+    static {
+        SignalStation.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        SignalStation.add(new Instr(Form.ELPS, new Ellipse2D.Double(-20, -20, 40, 40)));
+        SignalStation.add(new Instr(Form.RSHP, new Ellipse2D.Double(-4, -4, 8, 8)));
+    }
+
+    public static final Symbol TideGauge = new Symbol();
+    static {
+        TideGauge.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TideGauge.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        TideGauge.add(new Instr(Form.LINE, new Line2D.Double(-10, 0, -30, 0)));
+        TideGauge.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 30, 0)));
+        TideGauge.add(new Instr(Form.LINE, new Line2D.Double(0, -10, 0, -80)));
+        TideGauge.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TideGauge.add(new Instr(Form.LINE, new Line2D.Double(-15, -25, 15, -25)));
+        TideGauge.add(new Instr(Form.LINE, new Line2D.Double(-25, -45, 25, -45)));
+        TideGauge.add(new Instr(Form.LINE, new Line2D.Double(-15, -65, 15, -65)));
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Landmarks.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Landmarks.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Landmarks.java	(revision 36424)
@@ -0,0 +1,234 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.util.EnumMap;
+
+import s57.S57val.CatLMK;
+import s57.S57val.FncFNC;
+import symbols.Symbols.Form;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Landmarks {
+    private Landmarks() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    private static final Symbol Base = new Symbol();
+    static {
+        Base.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Base.add(new Instr(Form.ELPS, new Ellipse2D.Double(-10, -10, 20, 20)));
+        Base.add(new Instr(Form.LINE, new Line2D.Double(-35, 0, -10, 0)));
+        Base.add(new Instr(Form.LINE, new Line2D.Double(10, 0, 35, 0)));
+    }
+
+    public static final Symbol Chimney = new Symbol();
+    static {
+        Chimney.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        Chimney.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0, 0.0); p.lineTo(-10.0, -120.0); p.lineTo(10.0, -120.0); p.lineTo(25.0, 0.0);
+        p.moveTo(-10.0, -128.0); p.curveTo(-13.0, -147.0, 15.0, -159.0, 20.0, -148.0);
+        p.moveTo(16.0, -152.3); p.curveTo(58.0, -194.0, 98.0, -87.0, 16.0, -132.0);
+        p.moveTo(11.0, -128.0); p.curveTo(13.4, -132.0, 20.0, -132.0, 20.0, -136.0);
+        Chimney.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Church = new Symbol();
+    static {
+        Path2D.Double p = new Path2D.Double(); p.moveTo(10.0, -10.0); p.lineTo(37.0, -10.0); p.quadTo(48.0, -10.0, 48.0, -21.0); p.lineTo(50.0, -21.0); p.lineTo(50.0, 21.0);
+        p.lineTo(48.0, 21.0); p.quadTo(48.0, 10.0, 37.0, 10.0); p.lineTo(10.0, 10.0); p.lineTo(10.0, 37.0); p.quadTo(10.0, 48.0, 21.0, 48.0); p.lineTo(21.0, 50.0);
+        p.lineTo(-21.0, 50.0); p.lineTo(-21.0, 48.0); p.quadTo(-10.0, 48.0, -10.0, 37.0); p.lineTo(-10.0, 10.0); p.lineTo(-37.0, 10.0); p.quadTo(-48.0, 10.0, -48.0, 21.0);
+        p.lineTo(-50.0, 21.0); p.lineTo(-50.0, -21.0); p.lineTo(-48.0, -21.0); p.quadTo(-48.0, -10.0, -37.0, -10.0); p.lineTo(-10.0, -10.0); p.lineTo(-10.0, -37.0);
+        p.quadTo(-10.0, -48.0, -21.0, -48.0); p.lineTo(-21.0, -50.0); p.lineTo(21.0, -50.0); p.lineTo(21.0, -48.0); p.quadTo(10.0, -48.0, 10.0, -37.0); p.closePath();
+        Church.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol ChurchTower = new Symbol();
+    static {
+        ChurchTower.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ChurchTower.add(new Instr(Form.RECT, new Rectangle2D.Double(-36, -36, 72, 72)));
+        ChurchTower.add(new Instr(Form.ELPS, new Ellipse2D.Double(-2, -2, 4, 4)));
+    }
+
+    public static final Symbol Cross = new Symbol();
+    static {
+        Cross.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        Cross.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Cross.add(new Instr(Form.LINE, new Line2D.Double(0, -10, 0, -150)));
+        Cross.add(new Instr(Form.LINE, new Line2D.Double(-30, -115, 30, -115)));
+    }
+
+    public static final Symbol DishAerial = new Symbol();
+    static {
+        DishAerial.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        DishAerial.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-7.8, -6.0); p.lineTo(0.0, -62.0); p.lineTo(7.8, -6.0); p.moveTo(18.0, -109.0); p.lineTo(25.0, -113.0);
+        p.moveTo(-9.5, -157.0); p.curveTo(-60.7, -125.5, -16.5, -33.9, 44.9, -61.7); p.closePath();
+        DishAerial.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Dome = new Symbol();
+    static {
+        Dome.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Dome.add(new Instr(Form.ELPS, new Ellipse2D.Double(-36, -36, 72, 72)));
+        Dome.add(new Instr(Form.RSHP, new Ellipse2D.Double(-4, -4, 8, 8)));
+    }
+
+    public static final Symbol Flagstaff = new Symbol();
+    static {
+        Flagstaff.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        Flagstaff.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(0.0, -150.0); p.moveTo(0.0, -140.0); p.lineTo(40.0, -140.0); p.lineTo(40.0, -100.0); p.lineTo(0.0, -100.0);
+        Flagstaff.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol FlareStack = new Symbol();
+    static {
+        FlareStack.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        FlareStack.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-7.8, -6.0); p.lineTo(-7.8, -100.0); p.lineTo(7.8, -100.0); p.lineTo(7.8, -6.0);
+        FlareStack.add(new Instr(Form.PLIN, p));
+        FlareStack.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        p = new Path2D.Double(); p.moveTo(21.6, -169.6); p.curveTo(-22.0, -132.4, -27.4, -103.5, 3.0, -100.0); p.curveTo(39.0, -118.0, -4.0, -141.0, 21.6, -169.6);
+        FlareStack.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol LandTower = new Symbol();
+    static {
+        LandTower.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        LandTower.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        LandTower.add(new Instr(Form.LINE, new Line2D.Double(-25, 0, -15, -120)));
+        LandTower.add(new Instr(Form.LINE, new Line2D.Double(25, 0, 15, -120)));
+        LandTower.add(new Instr(Form.RECT, new Rectangle2D.Double(-15, -150, 30, 30)));
+    }
+
+    public static final Symbol Mast = new Symbol();
+    static {
+        Mast.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        Mast.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0, 0.0); p.lineTo(0.0, -150.0); p.lineTo(25.0, 0.0);
+        Mast.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol Monument = new Symbol();
+    static {
+        Monument.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        Monument.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        Monument.add(new Instr(Form.LINE, new Line2D.Double(-25, 0, -15, -105)));
+        Monument.add(new Instr(Form.LINE, new Line2D.Double(25, 0, 15, -105)));
+        Monument.add(new Instr(Form.EARC, new Arc2D.Double(-25.0, -150.0, 50.0, 50.0, 233.0, -285.0, Arc2D.OPEN)));
+    }
+
+    public static final Symbol Platform = new Symbol();
+    static {
+        Platform.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Platform.add(new Instr(Form.RECT, new Rectangle2D.Double(-48, -48, 96, 96)));
+        Platform.add(new Instr(Form.RSHP, new Ellipse2D.Double(-4, -4, 8, 8)));
+    }
+
+    public static final Symbol RadioTV = new Symbol();
+    static {
+        RadioTV.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL)));
+        RadioTV.add(new Instr(Form.EARC, new Arc2D.Double(-30.0, -180.0, 60.0, 60.0, 45.0, -90.0, Arc2D.OPEN)));
+        RadioTV.add(new Instr(Form.EARC, new Arc2D.Double(-45.0, -195.0, 90.0, 90.0, 45.0, -90.0, Arc2D.OPEN)));
+        RadioTV.add(new Instr(Form.EARC, new Arc2D.Double(-30.0, -180.0, 60.0, 60.0, 225.0, -90.0, Arc2D.OPEN)));
+        RadioTV.add(new Instr(Form.EARC, new Arc2D.Double(-45.0, -195.0, 90.0, 90.0, 225.0, -90.0, Arc2D.OPEN)));
+    }
+
+    public static final Symbol Spire = new Symbol();
+    static {
+        Spire.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Spire.add(new Instr(Form.ELPS, new Ellipse2D.Double(-25, -25, 50, 50)));
+        Spire.add(new Instr(Form.RSHP, new Ellipse2D.Double(-4, -4, 8, 8)));
+    }
+
+    public static final Symbol Minaret = new Symbol();
+    static {
+        Minaret.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Spire, 1.0, 0, 0, null, null)));
+        Minaret.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Minaret.add(new Instr(Form.LINE, new Line2D.Double(0, -25, 0, -50)));
+        Minaret.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        Minaret.add(new Instr(Form.EARC, new Arc2D.Double(-40.0, -110.0, 80.0, 60.0, 180.0, 180.0, Arc2D.OPEN)));
+    }
+
+    public static final Symbol Temple = new Symbol();
+    static {
+        Temple.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Temple.add(new Instr(Form.RECT, new Rectangle2D.Double(-25, -15, 50, 30)));
+        Temple.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Temple.add(new Instr(Form.LINE, new Line2D.Double(-35, -21, 35, 21)));
+        Temple.add(new Instr(Form.LINE, new Line2D.Double(-35, 21, 35, -21)));
+    }
+
+    public static final Symbol WaterTower = new Symbol();
+    static {
+        WaterTower.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        WaterTower.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        WaterTower.add(new Instr(Form.LINE, new Line2D.Double(-25, 0, -15, -120)));
+        WaterTower.add(new Instr(Form.LINE, new Line2D.Double(25, 0, 15, -120)));
+        WaterTower.add(new Instr(Form.RECT, new Rectangle2D.Double(-25, -150, 50, 30)));
+    }
+
+    public static final Symbol WindMotor = new Symbol();
+    static {
+        WindMotor.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        WindMotor.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        WindMotor.add(new Instr(Form.LINE, new Line2D.Double(0, -10, 0, -90)));
+        WindMotor.add(new Instr(Form.LINE, new Line2D.Double(0, -90, 30, -90)));
+        WindMotor.add(new Instr(Form.LINE, new Line2D.Double(0, -90, -14, -116.6)));
+        WindMotor.add(new Instr(Form.LINE, new Line2D.Double(0, -90, -14.3, -66.7)));
+    }
+
+    public static final Symbol Windmill = new Symbol();
+    static {
+        Windmill.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Windmill.add(new Instr(Form.ELPS, new Ellipse2D.Double(-12, -12, 24, 24)));
+        Windmill.add(new Instr(Form.LINE, new Line2D.Double(-30, -42, 30, 10)));
+        Windmill.add(new Instr(Form.LINE, new Line2D.Double(-30, 10, 30, -42)));
+    }
+
+    public static final Symbol Windsock = new Symbol();
+    static {
+        Windsock.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+        Windsock.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        Windsock.add(new Instr(Form.LINE, new Line2D.Double(0, -10, 0, -100)));
+        Windsock.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        Windsock.add(new Instr(Form.LINE, new Line2D.Double(0, -100, 0, -150)));
+        Windsock.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -100.0); p.lineTo(10.0, -100.0); p.lineTo(10.0, -150.0); p.lineTo(0.0, -150.0);
+        p.moveTo(10.0, -150.0); p.lineTo(50.0, -145.0); p.lineTo(120.0, -70.0); p.quadTo(120.0, -55.0, 105.0, -55.0);
+        p.lineTo(55, -95); p.lineTo(40, -102); p.lineTo(10, -100); p.moveTo(40, -102); p.lineTo(50, -120); p.moveTo(55, -95); p.lineTo(75, -97);
+        Windsock.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final EnumMap<CatLMK, Symbol> Shapes = new EnumMap<>(CatLMK.class);
+    static {
+        Shapes.put(CatLMK.LMK_CARN, Beacons.Cairn); Shapes.put(CatLMK.LMK_CHMY, Landmarks.Chimney);
+        Shapes.put(CatLMK.LMK_DISH, Landmarks.DishAerial); Shapes.put(CatLMK.LMK_FLAG, Landmarks.Flagstaff); Shapes.put(CatLMK.LMK_FLAR, Landmarks.FlareStack);
+        Shapes.put(CatLMK.LMK_MAST, Landmarks.Mast); Shapes.put(CatLMK.LMK_WNDS, Landmarks.Windsock); Shapes.put(CatLMK.LMK_MNMT, Landmarks.Monument);
+        Shapes.put(CatLMK.LMK_CLMN, Landmarks.Monument); Shapes.put(CatLMK.LMK_MEML, Landmarks.Monument); Shapes.put(CatLMK.LMK_OBLK, Landmarks.Monument);
+        Shapes.put(CatLMK.LMK_STAT, Landmarks.Monument); Shapes.put(CatLMK.LMK_CROS, Landmarks.Cross); Shapes.put(CatLMK.LMK_DOME, Landmarks.Dome);
+        Shapes.put(CatLMK.LMK_RADR, Landmarks.Mast); Shapes.put(CatLMK.LMK_TOWR, Landmarks.LandTower); Shapes.put(CatLMK.LMK_WNDM, Landmarks.Windmill);
+        Shapes.put(CatLMK.LMK_WNDG, Landmarks.WindMotor); Shapes.put(CatLMK.LMK_SPIR, Landmarks.Spire); Shapes.put(CatLMK.LMK_BLDR, Beacons.Cairn);
+    }
+
+    public static final EnumMap<FncFNC, Symbol> Funcs = new EnumMap<>(FncFNC.class);
+    static {
+        Funcs.put(FncFNC.FNC_CHCH, Landmarks.Church); Funcs.put(FncFNC.FNC_CHPL, Landmarks.Church); Funcs.put(FncFNC.FNC_TMPL, Landmarks.Temple);
+        Funcs.put(FncFNC.FNC_PGDA, Landmarks.Temple); Funcs.put(FncFNC.FNC_SHSH, Landmarks.Temple); Funcs.put(FncFNC.FNC_BTMP, Landmarks.Temple);
+        Funcs.put(FncFNC.FNC_MOSQ, Landmarks.Minaret); Funcs.put(FncFNC.FNC_MRBT, Landmarks.Spire); Funcs.put(FncFNC.FNC_COMM, Landmarks.RadioTV);
+        Funcs.put(FncFNC.FNC_TV, Landmarks.RadioTV); Funcs.put(FncFNC.FNC_RADO, Landmarks.RadioTV); Funcs.put(FncFNC.FNC_RADR, Landmarks.RadioTV);
+        Funcs.put(FncFNC.FNC_LGHT, Beacons.LightMajor); Funcs.put(FncFNC.FNC_MCWV, Landmarks.RadioTV); Funcs.put(FncFNC.FNC_HBRM, Harbours.HarbourMaster);
+        Funcs.put(FncFNC.FNC_CSTM, Harbours.Customs); Funcs.put(FncFNC.FNC_HLTH, Harbours.Hospital); Funcs.put(FncFNC.FNC_HOSP, Harbours.Hospital);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Notices.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Notices.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Notices.java	(revision 36424)
@@ -0,0 +1,1749 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RoundRectangle2D;
+import java.util.ArrayList;
+import java.util.EnumMap;
+
+import s57.S57val.BnkWTW;
+import s57.S57val.CatNMK;
+import s57.S57val.MarSYS;
+import symbols.Symbols.Caption;
+import symbols.Symbols.Delta;
+import symbols.Symbols.Form;
+import symbols.Symbols.Handle;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Scheme;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Notices {
+    private Notices() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    private static final Symbol Bollard = new Symbol();
+    static {
+        Path2D.Double p = new Path2D.Double(); p.moveTo(20, 21); p.lineTo(20, 16.5); p.lineTo(11.6, 16.5); p.quadTo(9.1, 9.6, 8.3, 2.0); p.lineTo(-8.0, -0.3); p.quadTo(-8.6, 9.0, -11.3, 16.5);
+        p.lineTo(-23.5, 16.5); p.lineTo(-23.5, 21.0); p.closePath(); p.moveTo(23.8, 3.0); p.lineTo(-10.7, -1.8); p.curveTo(-13.1, -2.2, -12.8, -6.0, -10.2, -5.8); p.lineTo(23.8, -1.1);
+        p.closePath(); p.moveTo(8.4, -4.3); p.curveTo(9.0, -9.3, 9.0, -11.4, 11.2, -13.0); p.curveTo(12.8, -15.0, 12.8, -16.7, 11.0, -18.6); p.curveTo(4.0, -22.2, -4.0, -22.2, -11.0, -18.6);
+        p.curveTo(-12.8, -16.7, -12.8, -15.0, -11.2, -13.0); p.curveTo(-9.0, -11.3, -8.7, -9.5, -8.4, -6.5); p.closePath();
+        Bollard.add(new Instr(Form.PGON, p));
+    }
+
+    private static final Symbol Motor = new Symbol();
+    static {
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-5.0, 4.3); p.curveTo(-3.7, 5.5, -1.8, 5.7, -0.2, 4.9); p.curveTo(1.3, 8.7, 4.6, 10.9, 8.4, 10.9); p.curveTo(14.0, 10.9, 17.5, 6.3, 17.5, 2.0);
+        p.curveTo(17.5, -0.7, 16.1, -3.2, 14.5, -3.2); p.curveTo(12.5, -3.2, 11.7, 0.8, 2.5, 1.1); p.curveTo(2.5, -1.2, 1.6, -2.2, 0.6, -3.0); p.curveTo(3.2, -5.6, 4.0, -12.6, -1.0, -16.1);
+        p.curveTo(-5.3, -19.2, -11.6, -18.3, -13.7, -13.7); p.curveTo(-14.3, -12.2, -14.0, -11.2, -12.5, -10.6); p.curveTo(-8.6, -9.6, -5.3, -6.0, -4.0, -3.4); p.curveTo(-5.4, -2.6, -6.2, -2.0, -6.2, 0.2);
+        p.curveTo(-12.8, -1.0, -17.5, 3.7, -17.5, 9.3); p.curveTo(-17.5, 14.7, -12.6, 18.8, -8.0, 17.6); p.curveTo(-7.0, 17.2, -6.6, 16.2, -7.2, 14.6); p.curveTo(-7.7, 12.4, -7.0, 7.7, -5.0, 4.3); p.closePath();
+        Motor.add(new Instr(Form.PGON, p));
+    }
+
+    private static final Symbol Rowboat = new Symbol();
+    static {
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-17.5, -2.0); p.lineTo(17.5, -2.0); p.lineTo(15.0, 6.0); p.lineTo(-11.0, 6.0); p.closePath();
+        Rowboat.add(new Instr(Form.PGON, p));
+        Rowboat.add(new Instr(Form.RSHP, new Ellipse2D.Double(-6, -17.5, 6, 6)));
+        Rowboat.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Rowboat.add(new Instr(Form.LINE, new Line2D.Double(-5.5, -9, -8, 0)));
+        Rowboat.add(new Instr(Form.LINE, new Line2D.Double(-5.0, 10.0, -7.5, 14.0)));
+        Rowboat.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Rowboat.add(new Instr(Form.LINE, new Line2D.Double(-5.5, -9, 7, -6.5)));
+        Rowboat.add(new Instr(Form.LINE, new Line2D.Double(7.3, -7.8, -5.0, 10.0)));
+    }
+
+    private static final Symbol Sailboard = new Symbol();
+    static {
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-6.0, 19.0); p.quadTo(-4.0, -5, 1.5, -20.0); p.quadTo(14, -7, 15.5, 6.5); p.quadTo(7, 17, -6.0, 19.0); p.closePath();
+        Sailboard.add(new Instr(Form.PGON, p));
+        Sailboard.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Sailboard.add(new Instr(Form.LINE, new Line2D.Double(-2, 20, -10, 20)));
+        Sailboard.add(new Instr(Form.LINE, new Line2D.Double(-13, 2.5, -3, 2.5)));
+        Sailboard.add(new Instr(Form.RSHP, new Ellipse2D.Double(-15, -4, 5, 5)));
+        Sailboard.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        p = new Path2D.Double(); p.moveTo(-13, 2.5); p.lineTo(-12, 6.0); p.lineTo(-12, 9.5);
+        Sailboard.add(new Instr(Form.PLIN, p));
+        Sailboard.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        p = new Path2D.Double(); p.moveTo(-12, 9.5); p.lineTo(-7.5, 13.0); p.lineTo(-6.0, 19.0);
+        Sailboard.add(new Instr(Form.PLIN, p));
+    }
+
+    private static final Symbol Sailboat = new Symbol();
+    static {
+        Path2D.Double p = new Path2D.Double(); p.moveTo(3.75, -20.5); p.lineTo(3.75, 8.5); p.lineTo(-19.5, 8.5); p.closePath();
+        Sailboat.add(new Instr(Form.PGON, p));
+        p = new Path2D.Double(); p.moveTo(-19.5, 12.0); p.lineTo(19.5, 12.0); p.lineTo(13.0, 20.5); p.lineTo(-16.0, 20.5); p.closePath();
+        Sailboat.add(new Instr(Form.PGON, p));
+    }
+
+    private static final Symbol Slipway = new Symbol();
+    static {
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-17, -5.5); p.lineTo(-13.5, 0); p.lineTo(4, -1.5); p.quadTo(18, -5, 20, -13.5); p.closePath();
+        p.moveTo(-14, 7); p.lineTo(-14, 11); p.lineTo(20, 11); p.lineTo(20, 2); p.closePath();
+        Slipway.add(new Instr(Form.PGON, p));
+        Slipway.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Slipway.add(new Instr(Form.LINE, new Line2D.Double(-14, 3, 20, -2.5)));
+        Slipway.add(new Instr(Form.STRK, new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Slipway.add(new Instr(Form.ELPS, new Ellipse2D.Double(1, 1.5, 3, 3)));
+        p = new Path2D.Double(); p.moveTo(-21, 8.5); p.curveTo(-17.5, 5, -17.5, 12, -13, 7.2);
+        Slipway.add(new Instr(Form.PLIN, p));
+    }
+
+    private static final Symbol Speedboat = new Symbol();
+    static {
+        Speedboat.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Speedboat.add(new Instr(Form.LINE, new Line2D.Double(-21, 0, -17, -1)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-17.5, 8.5); p.curveTo(-10.5, 13, -2.5, 2, 4, 6); p.curveTo(12, 2, 11.5, 9.5, 20, 6);
+        Speedboat.add(new Instr(Form.PLIN, p));
+        p = new Path2D.Double(); p.moveTo(-18.5, 1.5); p.lineTo(-16, 6); p.curveTo(-9, 9.0, -3.5, -2.0, 4.5, 3.5); p.lineTo(14.5, 0); p.quadTo(19, -3, 19.5, -9);
+        p.lineTo(9.5, -6); p.lineTo(6.5, -8); p.lineTo(2.5, -4); p.closePath();
+        Speedboat.add(new Instr(Form.PGON, p));
+        Speedboat.add(new Instr(Form.RSHP, new Ellipse2D.Double(-1.5, -13, 5, 5)));
+        Speedboat.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Speedboat.add(new Instr(Form.LINE, new Line2D.Double(-2, -7, -5, 0)));
+        Speedboat.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Speedboat.add(new Instr(Form.LINE, new Line2D.Double(-2, -7, 5, -5)));
+    }
+
+    private static final Symbol Turn = new Symbol();
+    static {
+        Turn.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Turn.add(new Instr(Form.EARC, new Arc2D.Double(-9.0, -9.0, 18.0, 18.0, 270.0, 230.0, Arc2D.OPEN)));
+        Turn.add(new Instr(Form.EARC, new Arc2D.Double(-20.0, -20.0, 40.0, 40.0, 315.0, -280.0, Arc2D.OPEN)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(21.8, -7.0); p.lineTo(18.8, -18.2); p.lineTo(10.5, -10.0); p.closePath();
+        p.moveTo(-12.9, 0.7); p.lineTo(-1.7, -2.3); p.lineTo(-9.9, -10.5); p.closePath();
+        Turn.add(new Instr(Form.PGON, p));
+    }
+
+    private static final Symbol Waterbike = new Symbol();
+    static {
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-17.5, 13); p.curveTo(-10.5, 17.5, -2.5, 6.5, 4, 10.5); p.curveTo(12, 6.5, 11.5, 14, 20, 10.5);
+        Waterbike.add(new Instr(Form.PLIN, p));
+        p = new Path2D.Double(); p.moveTo(-16.5, 9.5); p.lineTo(-16, 10.5); p.curveTo(-9, 13.5, -3.5, 2.5, 4.5, 8); p.quadTo(15, 4, 19.5, -4); p.closePath();
+        p.moveTo(19.5, -5); p.lineTo(1, -5); p.lineTo(-4.5, -10); p.lineTo(-5.5, -10); p.lineTo(2, -2); p.lineTo(-15, 4); p.lineTo(-16, 8); p.closePath();
+        Waterbike.add(new Instr(Form.PGON, p));
+        Waterbike.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        p = new Path2D.Double(); p.moveTo(-7, 1); p.lineTo(-7.5, -1.5); p.lineTo(-12.5, -3.5); p.lineTo(-11.5, -10.5);
+        Waterbike.add(new Instr(Form.PLIN, p));
+        Waterbike.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Waterbike.add(new Instr(Form.LINE, new Line2D.Double(-11.5, -10.5, -3, -8.5)));
+        Waterbike.add(new Instr(Form.RSHP, new Ellipse2D.Double(-11.5, -18, 5, 5)));
+    }
+
+    private static final Symbol Waterski = new Symbol();
+    static {
+        Waterski.add(new Instr(Form.RSHP, new Ellipse2D.Double(12, -18, 6, 6)));
+        Waterski.add(new Instr(Form.STRK, new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Waterski.add(new Instr(Form.LINE, new Line2D.Double(-18, -6, 0, -6)));
+        Waterski.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(6.5, 17.5); p.lineTo(-13, 14.5); p.curveTo(-15, 14.25, -16.0, 13.6, -17.5, 12.0);
+        Waterski.add(new Instr(Form.PLIN, p));
+        Waterski.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+        p = new Path2D.Double(); p.moveTo(-1.5, -4.0); p.lineTo(14, -7.5); p.lineTo(9.5, 3.5); p.lineTo(2.0, 6.0); p.lineTo(-4.4, 15.8);
+        Waterski.add(new Instr(Form.PLIN, p));
+    }
+
+    private static final Symbol NoticeA = new Symbol();
+    static {
+        NoticeA.add(new Instr(Form.FILL, new Color(0xe80000)));
+        NoticeA.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeA.add(new Instr(Form.FILL, Color.white));
+        NoticeA.add(new Instr(Form.RSHP, new Rectangle2D.Double(-21, -21, 42, 42)));
+        NoticeA.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        NoticeA.add(new Instr(Form.FILL, new Color(0xe80000)));
+        NoticeA.add(new Instr(Form.LINE, new Line2D.Double(-25, -25, 25, 25)));
+        NoticeA.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeA.add(new Instr(Form.FILL, Color.black));
+        NoticeA.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+    }
+
+    private static final Symbol NoticeB = new Symbol();
+    static {
+        NoticeB.add(new Instr(Form.FILL, new Color(0xe80000)));
+        NoticeB.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeB.add(new Instr(Form.FILL, Color.white));
+        NoticeB.add(new Instr(Form.RSHP, new Rectangle2D.Double(-21, -21, 42, 42)));
+        NoticeB.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeB.add(new Instr(Form.FILL, Color.black));
+        NoticeB.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+    }
+
+    private static final Symbol NoticeE = new Symbol();
+    static {
+        NoticeE.add(new Instr(Form.FILL, new Color(0x0000a0)));
+        NoticeE.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeE.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE.add(new Instr(Form.FILL, Color.black));
+        NoticeE.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeE.add(new Instr(Form.FILL, Color.white));
+    }
+
+    public static final Symbol Notice = new Symbol();
+    static {
+        Notice.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Notice.add(new Instr(Form.FILL, new Color(0xe80000)));
+        Notice.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        Notice.add(new Instr(Form.FILL, new Color(0x0000a0)));
+        Notice.add(new Instr(Form.RSHP, new Rectangle2D.Double(-21, -21, 42, 42)));
+        Notice.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Notice.add(new Instr(Form.FILL, Color.black));
+        Notice.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+    }
+
+    public static final Symbol NoticeA1 = new Symbol();
+    static {
+        NoticeA1.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA1.add(new Instr(Form.FILL, new Color(0xe80000)));
+        NoticeA1.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeA1.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeA1.add(new Instr(Form.FILL, Color.white));
+        NoticeA1.add(new Instr(Form.RSHP, new Rectangle2D.Double(-30, -10, 60, 20)));
+        NoticeA1.add(new Instr(Form.FILL, Color.black));
+        NoticeA1.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+    }
+
+    public static final Symbol NoticeA1a = new Symbol();
+    static {
+        NoticeA1a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA1a.add(new Instr(Form.FILL, new Color(0xe80000)));
+        NoticeA1a.add(new Instr(Form.RSHP, new Ellipse2D.Double(-30, -30, 60, 60)));
+        NoticeA1a.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeA1a.add(new Instr(Form.FILL, Color.white));
+        NoticeA1a.add(new Instr(Form.RSHP, new Rectangle2D.Double(-29, -10, 58, 20)));
+        NoticeA1a.add(new Instr(Form.FILL, Color.black));
+        NoticeA1a.add(new Instr(Form.ELPS, new Ellipse2D.Double(-30, -30, 60, 60)));
+    }
+
+    public static final Symbol NoticeA2 = new Symbol();
+    static {
+        NoticeA2.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA2.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA2.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-10, 23); p.lineTo(-10, 0); p.lineTo(-6, 0); p.lineTo(-12.5, -8); p.lineTo(-19, 0); p.lineTo(-15, 0); p.lineTo(-15, 23);
+        p.closePath(); p.moveTo(10, 8); p.lineTo(10, -15); p.lineTo(6, -15); p.lineTo(12.5, -23); p.lineTo(19, -15); p.lineTo(15, -15); p.lineTo(15, 8); p.closePath();
+        NoticeA2.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeA3 = new Symbol();
+    static {
+        NoticeA3.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA3.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA2, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-10, 12); p.lineTo(-6, 12); p.lineTo(-12.5, 4); p.lineTo(-19, 12);
+        p.closePath(); p.moveTo(10, -3); p.lineTo(6, -3); p.lineTo(12.5, -11); p.lineTo(19, -3); p.closePath();
+        NoticeA3.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeA4 = new Symbol();
+    static {
+        NoticeA4.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA4.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA4.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-10, -15); p.lineTo(-10, 8); p.lineTo(-6, 8); p.lineTo(-12.5, 16); p.lineTo(-19, 8); p.lineTo(-15, 8); p.lineTo(-15, -15);
+        p.closePath(); p.moveTo(10, 15); p.lineTo(10, -8); p.lineTo(6, -8); p.lineTo(12.5, -16); p.lineTo(19, -8); p.lineTo(15, -8); p.lineTo(15, 15); p.closePath();
+        NoticeA4.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeA4_1 = new Symbol();
+    static {
+        NoticeA4_1.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA4_1.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA4, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-10, -4); p.lineTo(-6, -4); p.lineTo(-12.5, 4); p.lineTo(-19, -4);
+        p.closePath(); p.moveTo(10, 5); p.lineTo(6, 5); p.lineTo(12.5, -3); p.lineTo(19, 5); p.closePath();
+        NoticeA4_1.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeA5 = new Symbol();
+    static {
+        NoticeA5.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA5.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); p.moveTo(-5.3, 14.6); p.lineTo(-5.3, 4.0); p.lineTo(0.0, 4.0); p.curveTo(4.2, 4.0, 7.4, 3.5, 9.4, 0.0);
+        p.curveTo(11.4, -2.8, 11.4, -7.2, 9.4, -10.5); p.curveTo(7.4, -13.6, 4.2, -14.0, 0.0, -14.0); p.lineTo(-11.0, -14.0); p.lineTo(-11.0, 14.6); p.closePath();
+        p.moveTo(-5.3, -1.0); p.lineTo(0.0, -1.0); p.curveTo(6.5, -1.0, 6.5, -9.0, 0.0, -9.0); p.lineTo(-5.3, -9.0); p.closePath();
+        NoticeA5.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeA5_1 = new Symbol();
+    static {
+        NoticeA5_1.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA5_1.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticeA6 = new Symbol();
+    static {
+        NoticeA6.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA6.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA6.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.4, 0, 0, new Scheme(Color.black), new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(180.0))))));
+    }
+
+    public static final Symbol NoticeA7 = new Symbol();
+    static {
+        NoticeA7.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA7.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA7.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Bollard, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA8 = new Symbol();
+    static {
+        NoticeA8.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA8.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA8.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Turn, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA9 = new Symbol();
+    static {
+        NoticeA9.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA9.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA9.add(new Instr(Form.STRK, new BasicStroke(7, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeA9.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-23, 10); p.curveTo(-11, 10, -12, 4, 0, 4); p.curveTo(12, 4, 11, 10, 23, 10);
+        p.moveTo(-23, -3); p.curveTo(-11, -3, -12, -9, 0, -9); p.curveTo(12, -9, 11, -3, 23, -3);
+        NoticeA9.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol NoticeA10a = new Symbol();
+    static {
+        NoticeA10a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA10a.add(new Instr(Form.FILL, Color.white));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(30, 0); p.lineTo(0, 30); p.closePath();
+        NoticeA10a.add(new Instr(Form.PGON, p));
+        NoticeA10a.add(new Instr(Form.FILL, new Color(0xe80000)));
+        p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 0); p.lineTo(0, 30); p.closePath();
+        NoticeA10a.add(new Instr(Form.PGON, p));
+        NoticeA10a.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeA10a.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 0); p.lineTo(0, 30); p.lineTo(30, 0); p.closePath();
+        NoticeA10a.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol NoticeA10b = new Symbol();
+    static {
+        NoticeA10b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA10b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA10a, 1.0, 0, 0, null, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(180.0))))));
+    }
+
+    public static final Symbol NoticeA12 = new Symbol();
+    static {
+        NoticeA12.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA12.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA12.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Motor, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA13 = new Symbol();
+    static {
+        NoticeA13.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA13.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA13.add(new Instr(Form.TEXT, new Caption("SPORT", new Font("Arial", Font.BOLD, 15), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 5)))));
+    }
+
+    public static final Symbol NoticeA14 = new Symbol();
+    static {
+        NoticeA14.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA14.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA14.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Waterski, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA15 = new Symbol();
+    static {
+        NoticeA15.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA15.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA15.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Sailboat, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA16 = new Symbol();
+    static {
+        NoticeA16.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA16.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA16.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Rowboat, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA17 = new Symbol();
+    static {
+        NoticeA17.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA17.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA17.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Sailboard, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA18 = new Symbol();
+    static {
+        NoticeA18.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA18.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA18.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Speedboat, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA19 = new Symbol();
+    static {
+        NoticeA19.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA19.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA19.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Slipway, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeA20 = new Symbol();
+    static {
+        NoticeA20.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeA20.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
+        NoticeA20.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Waterbike, 1.0, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeB1a = new Symbol();
+    static {
+        NoticeB1a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB1a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(21, 8); p.lineTo(-8, 8); p.lineTo(-8, 18); p.lineTo(-21, 0);
+        p.lineTo(-8, -18); p.lineTo(-8, -8); p.lineTo(21, -8); p.closePath();
+        NoticeB1a.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeB1b = new Symbol();
+    static {
+        NoticeB1b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB1b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-21, 8); p.lineTo(8, 8); p.lineTo(8, 18); p.lineTo(21, 0);
+        p.lineTo(8, -18); p.lineTo(8, -8); p.lineTo(-21, -8); p.closePath();
+        NoticeB1b.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeB2a = new Symbol();
+    static {
+        NoticeB2a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB2a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB2a.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(18, 21); p.lineTo(18, 10); p.lineTo(-15, -10); p.lineTo(-15, -15);
+        NoticeB2a.add(new Instr(Form.PLIN, p));
+        p = new Path2D.Double(); p.moveTo(-15, -21); p.lineTo(-21, -15); p.lineTo(-9, -15); p.closePath();
+        NoticeB2a.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeB2b = new Symbol();
+    static {
+        NoticeB2b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB2b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB2b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB2b.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-18, 21); p.lineTo(-18, 10); p.lineTo(15, -10); p.lineTo(15, -15);
+        NoticeB2b.add(new Instr(Form.PLIN, p));
+        p = new Path2D.Double(); p.moveTo(15, -21); p.lineTo(21, -15); p.lineTo(9, -15); p.closePath();
+        NoticeB2b.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeB3a = new Symbol();
+    static {
+        NoticeB3a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB3a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB3a.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeB3a.add(new Instr(Form.LINE, new Line2D.Double(-15, 21, -15, -15)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15, -21); p.lineTo(-21, -15); p.lineTo(-9, -15); p.closePath();
+        NoticeB3a.add(new Instr(Form.PGON, p));
+        NoticeB3a.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, new float[] {5.5f, 2.4f}, 0.0f)));
+        NoticeB3a.add(new Instr(Form.LINE, new Line2D.Double(15, -21, 15, 15)));
+        p = new Path2D.Double(); p.moveTo(15, 21); p.lineTo(21, 15); p.lineTo(9, 15); p.closePath();
+        NoticeB3a.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeB3b = new Symbol();
+    static {
+        NoticeB3b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB3b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB3b.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeB3b.add(new Instr(Form.LINE, new Line2D.Double(15, 21, 15, -15)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(15, -21); p.lineTo(21, -15); p.lineTo(9, -15); p.closePath();
+        NoticeB3b.add(new Instr(Form.PGON, p));
+        NoticeB3b.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, new float[] {5.5f, 2.4f}, 0.0f)));
+        NoticeB3b.add(new Instr(Form.LINE, new Line2D.Double(-15, -21, -15, 15)));
+        p = new Path2D.Double(); p.moveTo(-15, 21); p.lineTo(-21, 15); p.lineTo(-9, 15); p.closePath();
+        NoticeB3b.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeB4a = new Symbol();
+    static {
+        NoticeB4a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB4a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB2a, 1.0, 0, 0, null, null)));
+        NoticeB4a.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, new float[] {5.5f, 2.4f}, 0.0f)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(18, -21); p.lineTo(18, -10); p.lineTo(-15, 10); p.lineTo(-15, 15);
+        NoticeB4a.add(new Instr(Form.PLIN, p));
+        p = new Path2D.Double(); p.moveTo(-15, 21); p.lineTo(-21, 15); p.lineTo(-9, 15); p.closePath();
+        NoticeB4a.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeB4b = new Symbol();
+    static {
+        NoticeB4b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB4b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB2b, 1.0, 0, 0, null, null)));
+        NoticeB4b.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, new float[] {5.5f, 2.4f}, 0.0f)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-18, -21); p.lineTo(-18, -10); p.lineTo(15, 10); p.lineTo(15, 15);
+        NoticeB4b.add(new Instr(Form.PLIN, p));
+        p = new Path2D.Double(); p.moveTo(15, 21); p.lineTo(21, 15); p.lineTo(9, 15); p.closePath();
+        NoticeB4b.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeB5 = new Symbol();
+    static {
+        NoticeB5.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB5.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB5.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        NoticeB5.add(new Instr(Form.LINE, new Line2D.Double(15, 0, -15, 0)));
+    }
+
+    public static final Symbol NoticeB6 = new Symbol();
+    static {
+        NoticeB6.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB6.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticeB7 = new Symbol();
+    static {
+        NoticeB7.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB7.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB7.add(new Instr(Form.RSHP, new Ellipse2D.Double(-10, -10, 20, 20)));
+    }
+
+    public static final Symbol NoticeB8 = new Symbol();
+    static {
+        NoticeB8.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB8.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB8.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        NoticeB8.add(new Instr(Form.LINE, new Line2D.Double(0, 15, 0, -15)));
+    }
+
+    public static final Symbol NoticeB9a = new Symbol();
+    static {
+        NoticeB9a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB9a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB9a.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeB9a.add(new Instr(Form.LINE, new Line2D.Double(-21, 0, 21, 0)));
+        NoticeB9a.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeB9a.add(new Instr(Form.LINE, new Line2D.Double(0, 21, 0, 0)));
+    }
+
+    public static final Symbol NoticeB9b = new Symbol();
+    static {
+        NoticeB9b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB9b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB9b.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeB9b.add(new Instr(Form.LINE, new Line2D.Double(-21, 0, 21, 0)));
+        NoticeB9b.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeB9b.add(new Instr(Form.LINE, new Line2D.Double(0, 21, 0, -21)));
+    }
+
+    public static final Symbol NoticeB11 = new Symbol();
+    static {
+        NoticeB11.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeB11.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        NoticeB11.add(new Instr(Form.TEXT, new Caption("VHF", new Font("Arial", Font.BOLD, 20), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)))));
+    }
+
+    public static final Symbol NoticeC1 = new Symbol();
+    static {
+        NoticeC1.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeC1.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15, 21); p.lineTo(0, 12); p.lineTo(15, 21); p.closePath();
+        NoticeC1.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeC2 = new Symbol();
+    static {
+        NoticeC2.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeC2.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15, -21); p.lineTo(0, -12); p.lineTo(15, -21); p.closePath();
+        NoticeC2.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeC3 = new Symbol();
+    static {
+        NoticeC3.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeC3.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(21, -15); p.lineTo(12, 0); p.lineTo(21, 15); p.closePath();
+        p.moveTo(-21, -15); p.lineTo(-12, 0); p.lineTo(-21, 15); p.closePath();
+        NoticeC3.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeC4 = new Symbol();
+    static {
+        NoticeC4.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeC4.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticeC5a = new Symbol();
+    static {
+        NoticeC5a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeC5a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-21, -21); p.lineTo(10, -21); p.lineTo(21, 0); p.lineTo(10, 21); p.lineTo(-21, 21); p.closePath();
+        NoticeC5a.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeC5b = new Symbol();
+    static {
+        NoticeC5b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeC5b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(21, -21); p.lineTo(-10, -21); p.lineTo(-21, 0); p.lineTo(-10, 21); p.lineTo(21, 21); p.closePath();
+        NoticeC5b.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeD1a = new Symbol();
+    static {
+        NoticeD1a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeD1a.add(new Instr(Form.FILL, Color.yellow));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 0); p.lineTo(0, 30); p.lineTo(30, 0); p.closePath();
+        NoticeD1a.add(new Instr(Form.PGON, p));
+        NoticeD1a.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeD1a.add(new Instr(Form.FILL, Color.black));
+        NoticeD1a.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol NoticeD1b = new Symbol();
+    static {
+        NoticeD1b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeD1b.add(new Instr(Form.FILL, Color.yellow));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-30, 0); p.lineTo(-15, 25); p.lineTo(15, -25); p.lineTo(30, 0); p.lineTo(15, 25); p.lineTo(-15, -25); p.closePath();
+        NoticeD1b.add(new Instr(Form.PGON, p));
+        NoticeD1b.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeD1b.add(new Instr(Form.FILL, Color.black));
+        NoticeD1b.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol NoticeD2a = new Symbol();
+    static {
+        NoticeD2a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeD2a.add(new Instr(Form.FILL, Color.white));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 0); p.lineTo(0, 30); p.closePath();
+        NoticeD2a.add(new Instr(Form.PGON, p));
+        NoticeD2a.add(new Instr(Form.FILL, new Color(0x00e800)));
+        p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(30, 0); p.lineTo(0, 30); p.closePath();
+        NoticeD2a.add(new Instr(Form.PGON, p));
+        NoticeD2a.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeD2a.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 0); p.lineTo(0, 30); p.lineTo(30, 0); p.closePath();
+        NoticeD2a.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol NoticeD2b = new Symbol();
+    static {
+        NoticeD2b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeD2b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeD2a, 1.0, 0, 0, null, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(180.0))))));
+    }
+
+    public static final Symbol NoticeD3a = new Symbol();
+    static {
+        NoticeD3a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeD3a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(28, 10); p.lineTo(-10, 10); p.lineTo(-10, 20); p.lineTo(-28, 0);
+        p.lineTo(-10, -20); p.lineTo(-10, -10); p.lineTo(28, -10); p.closePath();
+        NoticeD3a.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeD3b = new Symbol();
+    static {
+        NoticeD3b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeD3b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-28, 10); p.lineTo(10, 10); p.lineTo(10, 20); p.lineTo(28, 0);
+        p.lineTo(10, -20); p.lineTo(10, -10); p.lineTo(-28, -10); p.closePath();
+        NoticeD3b.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE1 = new Symbol();
+    static {
+        NoticeE1.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE1.add(new Instr(Form.FILL, new Color(0x00e800)));
+        NoticeE1.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeE1.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE1.add(new Instr(Form.FILL, Color.white));
+        NoticeE1.add(new Instr(Form.RSHP, new Rectangle2D.Double(-10, -30, 20, 60)));
+        NoticeE1.add(new Instr(Form.FILL, Color.black));
+        NoticeE1.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+    }
+
+    public static final Symbol NoticeE2 = new Symbol();
+    static {
+        NoticeE2.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE2.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(5, -25); p.lineTo(-10, -1); p.lineTo(10, -1); p.lineTo(-10, 20);
+        p.lineTo(-7, 20); p.lineTo(-12, 25); p.lineTo(-16, 20); p.lineTo(-13, 20); p.lineTo(4, 1); p.lineTo(-14, 1);
+        p.lineTo(2, -25); p.closePath();
+        NoticeE2.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE3 = new Symbol();
+    static {
+        NoticeE3.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE3.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE3.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE3.add(new Instr(Form.LINE, new Line2D.Double(25, -20, 25, 20)));
+        NoticeE3.add(new Instr(Form.LINE, new Line2D.Double(-25, -20, -25, 20)));
+        NoticeE3.add(new Instr(Form.LINE, new Line2D.Double(-15, -15, -15, 20)));
+        NoticeE3.add(new Instr(Form.LINE, new Line2D.Double(-5, -15, -5, 20)));
+        NoticeE3.add(new Instr(Form.LINE, new Line2D.Double(5, -15, 5, 20)));
+        NoticeE3.add(new Instr(Form.LINE, new Line2D.Double(15, -15, 15, 20)));
+        NoticeE3.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE3.add(new Instr(Form.LINE, new Line2D.Double(-26, 18.5, 26, 18.5)));
+        NoticeE3.add(new Instr(Form.LINE, new Line2D.Double(-26, -15, 26, -15)));
+    }
+
+    public static final Symbol NoticeE4a = new Symbol();
+    static {
+        NoticeE4a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE4a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-20, -10); p.lineTo(-5, -10); p.lineTo(-5, -20); p.lineTo(5, -20); p.lineTo(5, -10);
+        p.lineTo(20, -10); p.lineTo(15, 0); p.lineTo(-15, 0); p.closePath();
+        p.moveTo(-25, 5); p.lineTo(25, 5); p.lineTo(25, 10); p.lineTo(-25, 10); p.closePath();
+        NoticeE4a.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE4b = new Symbol();
+    static {
+        NoticeE4b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE4b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-20, 0); p.lineTo(-5, 0); p.lineTo(-5, -10); p.lineTo(5, -10); p.lineTo(5, 0);
+        p.lineTo(20, 0); p.lineTo(15, 10); p.lineTo(-15, 10); p.closePath();
+        NoticeE4b.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5 = new Symbol();
+    static {
+        NoticeE5.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); p.moveTo(-5.3, 14.6); p.lineTo(-5.3, 4.0); p.lineTo(0.0, 4.0); p.curveTo(4.2, 4.0, 7.4, 3.5, 9.4, 0.0);
+        p.curveTo(11.4, -2.8, 11.4, -7.2, 9.4, -10.5); p.curveTo(7.4, -13.6, 4.2, -14.0, 0.0, -14.0); p.lineTo(-11.0, -14.0); p.lineTo(-11.0, 14.6); p.closePath();
+        p.moveTo(-5.3, -1.0); p.lineTo(0.0, -1.0); p.curveTo(6.5, -1.0, 6.5, -9.0, 0.0, -9.0); p.lineTo(-5.3, -9.0); p.closePath();
+        NoticeE5.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_1 = new Symbol();
+    static {
+        NoticeE5_1.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_1.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticeE5_2 = new Symbol();
+    static {
+        NoticeE5_2.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_2.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticeE5_3 = new Symbol();
+    static {
+        NoticeE5_3.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_3.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticeE5_4 = new Symbol();
+    static {
+        NoticeE5_4.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_4.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, 25); p.lineTo(0, -28); p.lineTo(28, 25); p.closePath();
+        NoticeE5_4.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_5 = new Symbol();
+    static {
+        NoticeE5_5.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_5.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, 25); p.lineTo(0, -28); p.lineTo(28, 25); p.closePath();
+        p.moveTo(0, 24); p.lineTo(-15, 2); p.lineTo(15, 2); p.closePath();
+        NoticeE5_5.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_6 = new Symbol();
+    static {
+        NoticeE5_6.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_6.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, 25); p.lineTo(0, -28); p.lineTo(28, 25); p.closePath();
+        p.moveTo(0, 7); p.lineTo(-10, -8); p.lineTo(10, -8); p.closePath();
+        p.moveTo(0, 24); p.lineTo(-10, 9); p.lineTo(10, 9); p.closePath();
+        NoticeE5_6.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_7 = new Symbol();
+    static {
+        NoticeE5_7.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_7.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, 25); p.lineTo(0, -28); p.lineTo(28, 25); p.closePath();
+        p.moveTo(0, -1); p.lineTo(-8, -11); p.lineTo(8, -11); p.closePath();
+        p.moveTo(0, 11); p.lineTo(-8, 1); p.lineTo(8, 1); p.closePath();
+        p.moveTo(0, 23); p.lineTo(-8, 13); p.lineTo(8, 13); p.closePath();
+        NoticeE5_7.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_8 = new Symbol();
+    static {
+        NoticeE5_8.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_8.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, -25); p.lineTo(0, 28); p.lineTo(28, -25); p.closePath();
+        NoticeE5_8.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_9 = new Symbol();
+    static {
+        NoticeE5_9.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_9.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, -25); p.lineTo(0, 28); p.lineTo(28, -25); p.closePath();
+        p.moveTo(0, 8); p.lineTo(-15, -14); p.lineTo(15, -14); p.closePath();
+        NoticeE5_9.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_10 = new Symbol();
+    static {
+        NoticeE5_10.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_10.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, -25); p.lineTo(0, 28); p.lineTo(28, -25); p.closePath();
+        p.moveTo(0, -5); p.lineTo(-10, -20); p.lineTo(10, -20); p.closePath();
+        p.moveTo(0, 15); p.lineTo(-10, 0); p.lineTo(10, 0); p.closePath();
+        NoticeE5_10.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_11 = new Symbol();
+    static {
+        NoticeE5_11.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_11.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, -25); p.lineTo(0, 28); p.lineTo(28, -25); p.closePath();
+        p.moveTo(0, -12); p.lineTo(-8, -22); p.lineTo(8, -22); p.closePath();
+        p.moveTo(0, 3); p.lineTo(-8, -7); p.lineTo(8, -7); p.closePath();
+        p.moveTo(0, 18); p.lineTo(-8, 8); p.lineTo(8, 8); p.closePath();
+        NoticeE5_11.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_12 = new Symbol();
+    static {
+        NoticeE5_12.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_12.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, 0); p.lineTo(0, 28); p.lineTo(28, 0); p.lineTo(0, -28); p.closePath();
+        NoticeE5_12.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_13 = new Symbol();
+    static {
+        NoticeE5_13.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_13.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, 0); p.lineTo(0, 28); p.lineTo(28, 0); p.lineTo(0, -28); p.closePath();
+        p.moveTo(0, 15); p.lineTo(-15, -7); p.lineTo(15, -7); p.closePath();
+        NoticeE5_13.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_14 = new Symbol();
+    static {
+        NoticeE5_14.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_14.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, 0); p.lineTo(0, 28); p.lineTo(28, 0); p.lineTo(0, -28); p.closePath();
+        p.moveTo(0, 0); p.lineTo(-10, -15); p.lineTo(10, -15); p.closePath();
+        p.moveTo(0, 20); p.lineTo(-10, 5); p.lineTo(10, 5); p.closePath();
+        NoticeE5_14.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE5_15 = new Symbol();
+    static {
+        NoticeE5_15.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE5_15.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-28, 0); p.lineTo(0, 28); p.lineTo(28, 0); p.lineTo(0, -28); p.closePath();
+        p.moveTo(0, -7); p.lineTo(-8, -17); p.lineTo(8, -17); p.closePath();
+        p.moveTo(0, 8); p.lineTo(-8, -2); p.lineTo(8, -2); p.closePath();
+        p.moveTo(0, 23); p.lineTo(-8, 13); p.lineTo(8, 13); p.closePath();
+        NoticeE5_15.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE6 = new Symbol();
+    static {
+        NoticeE6.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE6.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE6.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.4, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE7 = new Symbol();
+    static {
+        NoticeE7.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE7.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE7.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Bollard, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE7_1 = new Symbol();
+    static {
+        NoticeE7_1.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE7_1.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE7_1.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE7_1.add(new Instr(Form.LINE, new Line2D.Double(20, 25, 20, -10)));
+        NoticeE7_1.add(new Instr(Form.LINE, new Line2D.Double(22, -8, -15, -20)));
+        NoticeE7_1.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE7_1.add(new Instr(Form.LINE, new Line2D.Double(20, 8, 0, -15)));
+        Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-17, 2); p.quadTo(-5, 0, 7, 2); p.lineTo(9, 12); p.lineTo(7, 20); p.lineTo(6, 20); p.lineTo(6, 23); p.lineTo(3, 23); p.lineTo(3, 20);
+        p.quadTo(-5, 22, -13, 20); p.lineTo(-13, 23); p.lineTo(-16, 23); p.lineTo(-16, 20); p.lineTo(-17, 20); p.lineTo(-19, 12); p.closePath();
+        p.moveTo(-15, 4); p.quadTo(-3, 2, 5, 4); p.lineTo(6, 11); p.quadTo(-5, 9, -16, 11); p.closePath();
+        NoticeE7_1.add(new Instr(Form.PGON, p));
+        NoticeE7_1.add(new Instr(Form.FILL, new Color(0x0000a0)));
+        NoticeE7_1.add(new Instr(Form.RSHP, new Ellipse2D.Double(-16, 13, 4, 4)));
+        NoticeE7_1.add(new Instr(Form.RSHP, new Ellipse2D.Double(2, 13, 4, 4)));
+    }
+
+    public static final Symbol NoticeE8 = new Symbol();
+    static {
+        NoticeE8.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE8.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE8.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Turn, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE9a = new Symbol();
+    static {
+        NoticeE9a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9a.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9a.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -29)));
+        NoticeE9a.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9a.add(new Instr(Form.LINE, new Line2D.Double(-29, 0, 29, 0)));
+    }
+
+    public static final Symbol NoticeE9b = new Symbol();
+    static {
+        NoticeE9b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9b.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9b.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -29)));
+        NoticeE9b.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9b.add(new Instr(Form.LINE, new Line2D.Double(-2, 0, 29, 0)));
+    }
+
+    public static final Symbol NoticeE9c = new Symbol();
+    static {
+        NoticeE9c.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9c.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9c.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9c.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -29)));
+        NoticeE9c.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9c.add(new Instr(Form.LINE, new Line2D.Double(2, 0, -29, 0)));
+    }
+
+    public static final Symbol NoticeE9d = new Symbol();
+    static {
+        NoticeE9d.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9d.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9d.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9d.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -4)));
+        NoticeE9d.add(new Instr(Form.LINE, new Line2D.Double(-4, 0, 29, 0)));
+        NoticeE9d.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9d.add(new Instr(Form.LINE, new Line2D.Double(0, -29, 0, 2)));
+    }
+
+    public static final Symbol NoticeE9e = new Symbol();
+    static {
+        NoticeE9e.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9e.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9e.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9e.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -4)));
+        NoticeE9e.add(new Instr(Form.LINE, new Line2D.Double(4, 0, -29, 0)));
+        NoticeE9e.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9e.add(new Instr(Form.LINE, new Line2D.Double(0, -29, 0, 2)));
+    }
+
+    public static final Symbol NoticeE9f = new Symbol();
+    static {
+        NoticeE9f.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9f.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9f.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9f.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -4)));
+        NoticeE9f.add(new Instr(Form.LINE, new Line2D.Double(-4, 0, 29, 0)));
+        NoticeE9f.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9f.add(new Instr(Form.LINE, new Line2D.Double(2, 0, -29, 0)));
+    }
+
+    public static final Symbol NoticeE9g = new Symbol();
+    static {
+        NoticeE9g.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9g.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9g.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9g.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -4)));
+        NoticeE9g.add(new Instr(Form.LINE, new Line2D.Double(4, 0, -29, 0)));
+        NoticeE9g.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9g.add(new Instr(Form.LINE, new Line2D.Double(-2, 0, 29, 0)));
+    }
+
+    public static final Symbol NoticeE9h = new Symbol();
+    static {
+        NoticeE9h.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9h.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9h.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9h.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -4)));
+        NoticeE9h.add(new Instr(Form.LINE, new Line2D.Double(-4, 0, 29, 0)));
+        NoticeE9h.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9h.add(new Instr(Form.LINE, new Line2D.Double(0, -29, 0, 2)));
+        NoticeE9h.add(new Instr(Form.LINE, new Line2D.Double(2, 0, -29, 0)));
+    }
+
+    public static final Symbol NoticeE9i = new Symbol();
+    static {
+        NoticeE9i.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE9i.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE9i.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9i.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -4)));
+        NoticeE9i.add(new Instr(Form.LINE, new Line2D.Double(4, 0, -29, 0)));
+        NoticeE9i.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE9i.add(new Instr(Form.LINE, new Line2D.Double(0, -29, 0, 2)));
+        NoticeE9i.add(new Instr(Form.LINE, new Line2D.Double(-2, 0, 29, 0)));
+    }
+
+    public static final Symbol NoticeE10a = new Symbol();
+    static {
+        NoticeE10a.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE10a.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE10a.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10a.add(new Instr(Form.LINE, new Line2D.Double(-29, 0, 29, 0)));
+        NoticeE10a.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10a.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -29)));
+    }
+
+    public static final Symbol NoticeE10b = new Symbol();
+    static {
+        NoticeE10b.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE10b.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE10b.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10b.add(new Instr(Form.LINE, new Line2D.Double(-29, 0, 29, 0)));
+        NoticeE10b.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10b.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -2)));
+    }
+
+    public static final Symbol NoticeE10c = new Symbol();
+    static {
+        NoticeE10c.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE10c.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE10c.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10c.add(new Instr(Form.LINE, new Line2D.Double(0, -29, 0, 4)));
+        NoticeE10c.add(new Instr(Form.LINE, new Line2D.Double(-4, 0, 29, 0)));
+        NoticeE10c.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10c.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -2)));
+    }
+
+    public static final Symbol NoticeE10d = new Symbol();
+    static {
+        NoticeE10d.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE10d.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE10d.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10d.add(new Instr(Form.LINE, new Line2D.Double(0, -29, 0, 4)));
+        NoticeE10d.add(new Instr(Form.LINE, new Line2D.Double(4, 0, -29, 0)));
+        NoticeE10d.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10d.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -2)));
+    }
+
+    public static final Symbol NoticeE10e = new Symbol();
+    static {
+        NoticeE10e.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE10e.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE10e.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10e.add(new Instr(Form.LINE, new Line2D.Double(0, -29, 0, 4)));
+        NoticeE10e.add(new Instr(Form.LINE, new Line2D.Double(-4, 0, 29, 0)));
+        NoticeE10e.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10e.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -2)));
+        NoticeE10e.add(new Instr(Form.LINE, new Line2D.Double(2, 0, -29, 0)));
+    }
+
+    public static final Symbol NoticeE10f = new Symbol();
+    static {
+        NoticeE10f.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE10f.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE10f.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10f.add(new Instr(Form.LINE, new Line2D.Double(0, -29, 0, 4)));
+        NoticeE10f.add(new Instr(Form.LINE, new Line2D.Double(4, 0, -29, 0)));
+        NoticeE10f.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeE10f.add(new Instr(Form.LINE, new Line2D.Double(0, 29, 0, -2)));
+        NoticeE10f.add(new Instr(Form.LINE, new Line2D.Double(-2, 0, 29, 0)));
+    }
+
+    public static final Symbol NoticeE11 = new Symbol();
+    static {
+        NoticeE11.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE11.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE11.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+        NoticeE11.add(new Instr(Form.LINE, new Line2D.Double(-27, -27, 27, 27)));
+    }
+
+    public static final Symbol NoticeE13 = new Symbol();
+    static {
+        NoticeE13.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE13.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-4, -16); p.lineTo(9, -16); p.lineTo(9, -14); p.lineTo(3.5, -14); p.lineTo(3.5, -7); p.lineTo(5, -7);
+        p.lineTo(5, 1); p.lineTo(6.5, 1); p.lineTo(6.5, 5); p.lineTo(17.5, 5); p.lineTo(17.5, 1); p.lineTo(19, 1); p.lineTo(19, 15); p.lineTo(17.5, 15);
+        p.lineTo(17.5, 10); p.lineTo(17.5, 10); p.lineTo(6.5, 10); p.lineTo(6.5, 13); p.lineTo(-2, 13); p.lineTo(-2, 10); p.lineTo(-9, 10);
+        p.quadTo(-13.5, 10, -13.5, 16); p.lineTo(-19, 16); p.quadTo(-19, 5, -9, 5); p.lineTo(-2, 5); p.lineTo(-2, 1); p.lineTo(0, 1); p.lineTo(0, -7);
+        p.lineTo(1.5, -7); p.lineTo(1.5, -14); p.lineTo(-4, -14); p.closePath();
+        NoticeE13.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE14 = new Symbol();
+    static {
+        NoticeE14.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE14.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-18, -18); p.lineTo(-11, -7); p.lineTo(-9, -10); p.lineTo(-14, -18); p.closePath();
+        p.moveTo(9.5, 7); p.lineTo(22.5, 9); p.lineTo(21.5, 5.5); p.lineTo(12, 4); p.closePath();
+        p.moveTo(-19, -16.5); p.lineTo(-13, -6.5); p.quadTo(-15.5, -2, -12.5, 0); p.lineTo(4, 11); p.quadTo(7, 13, 10, 9); p.lineTo(21.5, 11);
+        p.curveTo(15.5, 23, 1, 18.5, -9, 12); p.curveTo(-18, 6, -28.5, -7, -19, -16.5); p.closePath();
+        NoticeE14.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeE15 = new Symbol();
+    static {
+        NoticeE15.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE15.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE15.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Motor, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE16 = new Symbol();
+    static {
+        NoticeE16.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE16.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE16.add(new Instr(Form.TEXT, new Caption("SPORT", new Font("Arial", Font.BOLD, 15), Color.white, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 5)))));
+    }
+
+    public static final Symbol NoticeE17 = new Symbol();
+    static {
+        NoticeE17.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE17.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE17.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Waterski, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE18 = new Symbol();
+    static {
+        NoticeE18.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE18.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE18.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Sailboat, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE19 = new Symbol();
+    static {
+        NoticeE19.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE19.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE19.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Rowboat, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE20 = new Symbol();
+    static {
+        NoticeE20.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE20.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE20.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Sailboard, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE21 = new Symbol();
+    static {
+        NoticeE21.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE21.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE21.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Speedboat, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE22 = new Symbol();
+    static {
+        NoticeE22.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE22.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE22.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Slipway, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeE23 = new Symbol();
+    static {
+        NoticeE23.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE23.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE23.add(new Instr(Form.TEXT, new Caption("VHF", new Font("Arial", Font.BOLD, 20), Color.white, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)))));
+    }
+
+    public static final Symbol NoticeE24 = new Symbol();
+    static {
+        NoticeE24.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeE24.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.NoticeE, 1.0, 0, 0, null, null)));
+        NoticeE24.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Notices.Waterbike, 1.0, 0, 0, new Scheme(Color.white), null)));
+    }
+
+    public static final Symbol NoticeBoard = new Symbol();
+    static {
+        NoticeBoard.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 30)));
+        NoticeBoard.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-20, 0); p.lineTo(20, 0); p.lineTo(20, -15); p.lineTo(-20, -15); p.closePath();
+        NoticeBoard.add(new Instr(Form.FILL, Color.white));
+        NoticeBoard.add(new Instr(Form.PGON, p));
+        NoticeBoard.add(new Instr(Form.FILL, Color.black));
+        NoticeBoard.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol NoticeTriangle = new Symbol();
+    static {
+        NoticeTriangle.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 30)));
+        NoticeTriangle.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-20, 0); p.lineTo(20, 0); p.lineTo(0, -15); p.closePath();
+        NoticeTriangle.add(new Instr(Form.FILL, Color.white));
+        NoticeTriangle.add(new Instr(Form.PGON, p));
+        NoticeTriangle.add(new Instr(Form.FILL, Color.black));
+        NoticeTriangle.add(new Instr(Form.PLIN, p));
+    }
+
+    // CHECKSTYLE.OFF: SingleSpaceSeparator
+    public static final EnumMap<CatNMK, Symbol> NmkCevni = new EnumMap<>(CatNMK.class);
+    static {
+        NmkCevni.put(CatNMK.NMK_UNKN, Notice);      NmkCevni.put(CatNMK.NMK_NENT, NoticeA1);    NmkCevni.put(CatNMK.NMK_CLSA, NoticeA1a);   NmkCevni.put(CatNMK.NMK_NOVK, NoticeA2);
+        NmkCevni.put(CatNMK.NMK_NCOV, NoticeA3);    NmkCevni.put(CatNMK.NMK_NPAS, NoticeA4);    NmkCevni.put(CatNMK.NMK_NCPS, NoticeA4_1);  NmkCevni.put(CatNMK.NMK_NBRT, NoticeA5);
+        NmkCevni.put(CatNMK.NMK_NBLL, NoticeA5_1);  NmkCevni.put(CatNMK.NMK_NANK, NoticeA6);    NmkCevni.put(CatNMK.NMK_NMOR, NoticeA7);    NmkCevni.put(CatNMK.NMK_NTRN, NoticeA8);
+        NmkCevni.put(CatNMK.NMK_NWSH, NoticeA9);    NmkCevni.put(CatNMK.NMK_NPSL, NoticeA10a);  NmkCevni.put(CatNMK.NMK_NPSR, NoticeA10b);  NmkCevni.put(CatNMK.NMK_NMTC, NoticeA12);
+        NmkCevni.put(CatNMK.NMK_NSPC, NoticeA13);   NmkCevni.put(CatNMK.NMK_NWSK, NoticeA14);   NmkCevni.put(CatNMK.NMK_NSLC, NoticeA15);   NmkCevni.put(CatNMK.NMK_NUPC, NoticeA16);
+        NmkCevni.put(CatNMK.NMK_NSLB, NoticeA17);   NmkCevni.put(CatNMK.NMK_NWBK, NoticeA20);   NmkCevni.put(CatNMK.NMK_NHSC, NoticeA18);   NmkCevni.put(CatNMK.NMK_NLBG, NoticeA19);
+        NmkCevni.put(CatNMK.NMK_MVTL, NoticeB1a);   NmkCevni.put(CatNMK.NMK_MVTR, NoticeB1b);   NmkCevni.put(CatNMK.NMK_MVTP, NoticeB2a);   NmkCevni.put(CatNMK.NMK_MVTS, NoticeB2b);
+        NmkCevni.put(CatNMK.NMK_KPTP, NoticeB3a);   NmkCevni.put(CatNMK.NMK_KPTS, NoticeB3b);   NmkCevni.put(CatNMK.NMK_CSTP, NoticeB4a);   NmkCevni.put(CatNMK.NMK_CSTS, NoticeB4b);
+        NmkCevni.put(CatNMK.NMK_STOP, NoticeB5);    NmkCevni.put(CatNMK.NMK_SPDL, NoticeB6);    NmkCevni.put(CatNMK.NMK_SHRN, NoticeB7);    NmkCevni.put(CatNMK.NMK_KPLO, NoticeB8);
+        NmkCevni.put(CatNMK.NMK_GWJN, NoticeB9a);   NmkCevni.put(CatNMK.NMK_GWCS, NoticeB9b);   NmkCevni.put(CatNMK.NMK_MKRC, NoticeB11);
+        NmkCevni.put(CatNMK.NMK_LMDP, NoticeC1);    NmkCevni.put(CatNMK.NMK_LMHR, NoticeC2);    NmkCevni.put(CatNMK.NMK_LMWD, NoticeC3);    NmkCevni.put(CatNMK.NMK_NAVR, NoticeC4);
+        NmkCevni.put(CatNMK.NMK_CHDL, NoticeC5a);   NmkCevni.put(CatNMK.NMK_CHDR, NoticeC5b);
+        NmkCevni.put(CatNMK.NMK_CHTW, NoticeD1a);   NmkCevni.put(CatNMK.NMK_CHOW, NoticeD1b);   NmkCevni.put(CatNMK.NMK_OPTR, NoticeD2a);   NmkCevni.put(CatNMK.NMK_OPTL, NoticeD2b);
+        NmkCevni.put(CatNMK.NMK_PRTL, NoticeD3a);   NmkCevni.put(CatNMK.NMK_PRTR, NoticeD3b);
+        NmkCevni.put(CatNMK.NMK_ENTP, NoticeE1);    NmkCevni.put(CatNMK.NMK_OVHC, NoticeE2);    NmkCevni.put(CatNMK.NMK_WEIR, NoticeE3);    NmkCevni.put(CatNMK.NMK_FERN, NoticeE4a);
+        NmkCevni.put(CatNMK.NMK_FERI, NoticeE4b);   NmkCevni.put(CatNMK.NMK_BRTP, NoticeE5);    NmkCevni.put(CatNMK.NMK_BTLL, NoticeE5_1);  NmkCevni.put(CatNMK.NMK_BTLS, NoticeE5_2);
+        NmkCevni.put(CatNMK.NMK_BTRL, NoticeE5_3);  NmkCevni.put(CatNMK.NMK_BTUP, NoticeE5_4);  NmkCevni.put(CatNMK.NMK_BTP1, NoticeE5_5);  NmkCevni.put(CatNMK.NMK_BTP2, NoticeE5_6);
+        NmkCevni.put(CatNMK.NMK_BTP3, NoticeE5_7);  NmkCevni.put(CatNMK.NMK_BTUN, NoticeE5_8);  NmkCevni.put(CatNMK.NMK_BTN1, NoticeE5_9);  NmkCevni.put(CatNMK.NMK_BTN2, NoticeE5_10);
+        NmkCevni.put(CatNMK.NMK_BTN3, NoticeE5_11); NmkCevni.put(CatNMK.NMK_BTUM, NoticeE5_12); NmkCevni.put(CatNMK.NMK_BTU1, NoticeE5_13); NmkCevni.put(CatNMK.NMK_BTU2, NoticeE5_14);
+        NmkCevni.put(CatNMK.NMK_BTU3, NoticeE5_15); NmkCevni.put(CatNMK.NMK_ANKP, NoticeE6);    NmkCevni.put(CatNMK.NMK_MORP, NoticeE7);    NmkCevni.put(CatNMK.NMK_VLBT, NoticeE7_1);
+        NmkCevni.put(CatNMK.NMK_TRNA, NoticeE8);    NmkCevni.put(CatNMK.NMK_SWWC, NoticeE9a);   NmkCevni.put(CatNMK.NMK_SWWR, NoticeE9b);   NmkCevni.put(CatNMK.NMK_SWWL, NoticeE9c);
+        NmkCevni.put(CatNMK.NMK_WRSA, NoticeE9d);   NmkCevni.put(CatNMK.NMK_WLSA, NoticeE9e);   NmkCevni.put(CatNMK.NMK_WRSL, NoticeE9f);   NmkCevni.put(CatNMK.NMK_WLSR, NoticeE9g);
+        NmkCevni.put(CatNMK.NMK_WRAL, NoticeE9h);   NmkCevni.put(CatNMK.NMK_WLAR, NoticeE9i);   NmkCevni.put(CatNMK.NMK_MWWC, NoticeE10a);  NmkCevni.put(CatNMK.NMK_MWWJ, NoticeE10b);
+        NmkCevni.put(CatNMK.NMK_MWAR, NoticeE10c);  NmkCevni.put(CatNMK.NMK_MWAL, NoticeE10d);  NmkCevni.put(CatNMK.NMK_WARL, NoticeE10e);  NmkCevni.put(CatNMK.NMK_WALR, NoticeE10f);
+        NmkCevni.put(CatNMK.NMK_PEND, NoticeE11);   NmkCevni.put(CatNMK.NMK_DWTR, NoticeE13);   NmkCevni.put(CatNMK.NMK_TELE, NoticeE14);   NmkCevni.put(CatNMK.NMK_MTCP, NoticeE15);
+        NmkCevni.put(CatNMK.NMK_SPCP, NoticeE16);   NmkCevni.put(CatNMK.NMK_WSKP, NoticeE17);   NmkCevni.put(CatNMK.NMK_SLCP, NoticeE18);   NmkCevni.put(CatNMK.NMK_UPCP, NoticeE19);
+        NmkCevni.put(CatNMK.NMK_SLBP, NoticeE20);   NmkCevni.put(CatNMK.NMK_RADI, NoticeE23);   NmkCevni.put(CatNMK.NMK_WTBP, NoticeE24);   NmkCevni.put(CatNMK.NMK_HSCP, NoticeE21);
+        NmkCevni.put(CatNMK.NMK_LBGP, NoticeE22);
+    }
+    // CHECKSTYLE.ON: SingleSpaceSeparator
+
+    private static final Symbol NoticeBB = new Symbol();
+    static {
+        NoticeBB.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeBB.add(new Instr(Form.LINE, new Line2D.Double(-29, -29, -29, 29)));
+        NoticeBB.add(new Instr(Form.LINE, new Line2D.Double(29, -29, 29, 29)));
+        NoticeBB.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeBB.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+    }
+
+    private static final Symbol NoticeBP = new Symbol();
+    static {
+        NoticeBP.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeBP.add(new Instr(Form.FILL, Color.white));
+        NoticeBP.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeBP.add(new Instr(Form.FILL, Color.black));
+        NoticeBP.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+    }
+
+    private static final Symbol NoticeCR = new Symbol();
+    static {
+        NoticeCR.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeCR.add(new Instr(Form.FILL, Color.white));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 0); p.lineTo(0, 30); p.lineTo(30, 0); p.closePath();
+        NoticeCR.add(new Instr(Form.PGON, p));
+        NoticeCR.add(new Instr(Form.FILL, Color.black));
+        NoticeCR.add(new Instr(Form.PLIN, p));
+    }
+
+    private static final Symbol NoticeKT = new Symbol();
+    static {
+        NoticeKT.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeKT.add(new Instr(Form.FILL, Color.white));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 30); p.lineTo(30, 30); p.closePath();
+        NoticeKT.add(new Instr(Form.PGON, p));
+        NoticeKT.add(new Instr(Form.FILL, Color.black));
+        NoticeKT.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol NoticeBnank = new Symbol();
+    static {
+        NoticeBnank.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.4, 0, 0, null, null)));
+        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        ss.add(new Instr(Form.LINE, new Line2D.Double(-27, -27, 27, 27)));
+        ss.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ss.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBnank.add(new Instr(Form.COLR, colours));
+    }
+
+    public static final Symbol NoticeBlmhr = new Symbol();
+    static {
+        NoticeBlmhr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        ss.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-29, -29); p.lineTo(29, -29); p.lineTo(0, 0); p.closePath();
+        ss.add(new Instr(Form.PGON, p));
+        ss.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ss.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBlmhr.add(new Instr(Form.COLR, colours));
+    }
+
+    public static final Symbol NoticeBktpm = new Symbol();
+    static {
+        NoticeBktpm.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-14, -26); p.lineTo(-20, -12); p.lineTo(-8, -12); p.closePath();
+        ss.add(new Instr(Form.PGON, p));
+        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ss.add(new Instr(Form.LINE, new Line2D.Double(-14, -16, -14, 25)));
+        ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBktpm.add(new Instr(Form.COLR, colours));
+    }
+
+    public static final Symbol NoticeBktsm = new Symbol();
+    static {
+        NoticeBktsm.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(14, -26); p.lineTo(20, -12); p.lineTo(8, -12); p.closePath();
+        ss.add(new Instr(Form.PGON, p));
+        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ss.add(new Instr(Form.LINE, new Line2D.Double(14, -16, 14, 25)));
+        ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBktsm.add(new Instr(Form.COLR, colours));
+    }
+
+    public static final Symbol NoticeBktmr = new Symbol();
+    static {
+        NoticeBktmr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -26); p.lineTo(-6, -12); p.lineTo(6, -12); p.closePath();
+        ss.add(new Instr(Form.PGON, p));
+        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ss.add(new Instr(Form.LINE, new Line2D.Double(0, -16, 0, 25)));
+        ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBktmr.add(new Instr(Form.COLR, colours));
+    }
+
+    public static final Symbol NoticeBcrtp = new Symbol();
+    static {
+        NoticeBcrtp.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-14, -26); p.lineTo(-20, -12); p.lineTo(-8, -12); p.closePath();
+        ss.add(new Instr(Form.PGON, p));
+        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        p = new Path2D.Double(); p.moveTo(-14, -16); p.lineTo(-14, 0); p.lineTo(14, 10); p.lineTo(14, 25);
+        ss.add(new Instr(Form.PLIN, p));
+        ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBcrtp.add(new Instr(Form.COLR, colours));
+    }
+
+    public static final Symbol NoticeBcrts = new Symbol();
+    static {
+        NoticeBcrts.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(14, -26); p.lineTo(20, -12); p.lineTo(8, -12); p.closePath();
+        ss.add(new Instr(Form.PGON, p));
+        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        p = new Path2D.Double(); p.moveTo(14, -16); p.lineTo(14, 0); p.lineTo(-14, 10); p.lineTo(-14, 25);
+        ss.add(new Instr(Form.PLIN, p));
+        ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBcrts.add(new Instr(Form.COLR, colours));
+    }
+
+    public static final Symbol NoticeBtrbm = new Symbol();
+    static {
+        NoticeBtrbm.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        ss.add(new Instr(Form.STRK, new BasicStroke(15, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ss.add(new Instr(Form.LINE, new Line2D.Double(0, -25, 0, 25)));
+        ss.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        ss.add(new Instr(Form.LINE, new Line2D.Double(-20, 0, 20, 0)));
+        ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBtrbm.add(new Instr(Form.COLR, colours));
+    }
+
+    public static final Symbol NoticeBrspd = new Symbol();
+    static {
+        NoticeBrspd.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        Symbol colours = new Symbol();
+        Symbol ss = new Symbol();
+        ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        colours.add(new Instr(Form.N1, ss));
+        ss = new Symbol();
+        ss.add(new Instr(Form.TEXT, new Caption("R", new Font("Arial", Font.BOLD, 60), null, new Delta(Handle.CC, null))));
+        ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
+        colours.add(new Instr(Form.N2, ss));
+        NoticeBrspd.add(new Instr(Form.COLR, colours));
+    }
+
+    static final Symbol NoticePBwral = new Symbol();
+    static {
+        NoticePBwral.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePBwral.add(new Instr(Form.FILL, new Color(0xffff00)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-20, -25); p.lineTo(-8, -5); p.lineTo(-8, 25); p.lineTo(8, 25); p.lineTo(8, -5);
+        p.lineTo(20, -25); p.lineTo(5, -25); p.lineTo(-5, -10); p.lineTo(-15, -25); p.closePath();
+        NoticePBwral.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeBwral = new Symbol();
+    static {
+        NoticeBwral.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeBwral.add(new Instr(Form.FILL, Color.black));
+        NoticeBwral.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeBwral.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticePBwral, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticeBwlar = new Symbol();
+    static {
+        NoticeBwlar.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeBwlar.add(new Instr(Form.FILL, Color.black));
+        NoticeBwlar.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30, -30, 60, 60, 4, 4)));
+        NoticeBwlar.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticePBwral, 1.0, 0, 0, null, new Delta(Handle.CC, AffineTransform.getScaleInstance(-1, 1)))));
+    }
+
+    public static final Symbol NoticeBoptr = new Symbol();
+    static {
+        NoticeBoptr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeBoptr.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBP, 1.0, 0, 0, null, null)));
+        NoticeBoptr.add(new Instr(Form.FILL, new Color(0x00a000)));
+        NoticeBoptr.add(new Instr(Form.RSHP, new Rectangle2D.Double(-20, -20, 40, 40)));
+    }
+
+    public static final Symbol NoticeBoptl = new Symbol();
+    static {
+        NoticeBoptl.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeBoptl.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBP, 1.0, 0, 0, null, null)));
+        NoticeBoptl.add(new Instr(Form.FILL, new Color(0xf00000)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -20); p.lineTo(-20, 20); p.lineTo(20, 20); p.closePath();
+        NoticeBoptl.add(new Instr(Form.PGON, p));
+    }
+
+    public static final EnumMap<CatNMK, Symbol> NmkBniwr = new EnumMap<>(CatNMK.class);
+    static {
+        NmkBniwr.put(CatNMK.NMK_NANK, NoticeBnank); NmkBniwr.put(CatNMK.NMK_LMHR, NoticeBlmhr); NmkBniwr.put(CatNMK.NMK_OPTR, NoticeBoptr); NmkBniwr.put(CatNMK.NMK_OPTL, NoticeBoptl);
+        NmkBniwr.put(CatNMK.NMK_WRAL, NoticeBwral); NmkBniwr.put(CatNMK.NMK_WLAR, NoticeBwlar); NmkBniwr.put(CatNMK.NMK_KTPM, NoticeBktpm); NmkBniwr.put(CatNMK.NMK_KTSM, NoticeBktsm);
+        NmkBniwr.put(CatNMK.NMK_KTMR, NoticeBktmr); NmkBniwr.put(CatNMK.NMK_CRTP, NoticeBcrtp); NmkBniwr.put(CatNMK.NMK_CRTS, NoticeBcrts); NmkBniwr.put(CatNMK.NMK_TRBM, NoticeBtrbm);
+        NmkBniwr.put(CatNMK.NMK_RSPD, NoticeBrspd);
+    }
+
+    public static final Symbol NoticePwralL = new Symbol();
+    static {
+        NoticePwralL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePwralL.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 30); p.lineTo(30, 30); p.closePath();
+        NoticePwralL.add(new Instr(Form.PGON, p));
+        NoticePwralL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticePBwral, 1.0, 0, 0, null, new Delta(Handle.TC, AffineTransform.getScaleInstance(0.5, 0.5)))));
+    }
+
+    public static final Symbol NoticePwralR = new Symbol();
+    static {
+        NoticePwralR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePwralR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBwral, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticePwlarL = new Symbol();
+    static {
+        NoticePwlarL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePwlarL.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 30); p.lineTo(30, 30); p.closePath();
+        NoticePwlarL.add(new Instr(Form.PGON, p));
+        NoticePwlarL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticePBwral, 1.0, 0, 0, null, new Delta(Handle.TC, AffineTransform.getScaleInstance(-0.5, 0.5)))));
+    }
+
+    public static final Symbol NoticePwlarR = new Symbol();
+    static {
+        NoticePwlarR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePwlarR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBwlar, 1.0, 0, 0, null, null)));
+    }
+
+    public static final Symbol NoticePktmR = new Symbol();
+    static {
+        NoticePktmR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePktmR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBP, 1.0, 0, 0, null, null)));
+        NoticePktmR.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticePktmR.add(new Instr(Form.FILL, new Color(0x00d400)));
+        NoticePktmR.add(new Instr(Form.RECT, new Rectangle2D.Double(-20, -20, 40, 40)));
+    }
+
+    public static final Symbol NoticePktmL = new Symbol();
+    static {
+        NoticePktmL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePktmL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeKT, 1.0, 0, 0, null, null)));
+        NoticePktmL.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticePktmL.add(new Instr(Form.FILL, new Color(0xd40000)));
+        NoticePktmL.add(new Instr(Form.RECT, new Rectangle2D.Double(-12, 2, 24, 24)));
+    }
+
+    public static final Symbol NoticePktmrL = new Symbol();
+    static {
+        NoticePktmrL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePktmrL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeKT, 1.0, 0, 0, null, null)));
+        NoticePktmrL.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticePktmrL.add(new Instr(Form.FILL, new Color(0xd40000)));
+        NoticePktmrL.add(new Instr(Form.LINE, new Line2D.Double(-12, 2, -12, 28)));
+        NoticePktmrL.add(new Instr(Form.LINE, new Line2D.Double(12, 2, 12, 28)));
+        NoticePktmrL.add(new Instr(Form.LINE, new Line2D.Double(-12, 15, 12, 15)));
+    }
+
+    public static final Symbol NoticePktmrR = new Symbol();
+    static {
+        NoticePktmrR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePktmrR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBP, 1.0, 0, 0, null, null)));
+        NoticePktmrR.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticePktmrR.add(new Instr(Form.FILL, new Color(0x00d400)));
+        NoticePktmrR.add(new Instr(Form.LINE, new Line2D.Double(-15, -20, -15, 20)));
+        NoticePktmrR.add(new Instr(Form.LINE, new Line2D.Double(15, -20, 15, 20)));
+        NoticePktmrR.add(new Instr(Form.LINE, new Line2D.Double(-15, 0, 15, 0)));
+    }
+
+    public static final Symbol NoticePcrL = new Symbol();
+    static {
+        NoticePcrL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePcrL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePcrL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeCR, 1.0, 0, 0, null, null)));
+        NoticePcrL.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticePcrL.add(new Instr(Form.FILL, new Color(0xd40000)));
+        NoticePcrL.add(new Instr(Form.LINE, new Line2D.Double(-12, -12, 12, 12)));
+        NoticePcrL.add(new Instr(Form.LINE, new Line2D.Double(-12, 12, 12, -12)));
+    }
+
+    public static final Symbol NoticePcrR = new Symbol();
+    static {
+        NoticePcrR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticePcrR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeCR, 1.0, 0, 0, null, null)));
+        NoticePcrR.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticePcrR.add(new Instr(Form.FILL, new Color(0x00d400)));
+        NoticePcrR.add(new Instr(Form.LINE, new Line2D.Double(-12, -12, 12, 12)));
+        NoticePcrR.add(new Instr(Form.LINE, new Line2D.Double(-12, 12, 12, -12)));
+    }
+
+    static final Symbol NoticeRphib = new Symbol();
+    static {
+        NoticeRphib.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeRphib.add(new Instr(Form.FILL, new Color(0xd40000)));
+        NoticeRphib.add(new Instr(Form.ELPS, new Ellipse2D.Double(-30, -30, 60, 60)));
+        NoticeRphib.add(new Instr(Form.LINE, new Line2D.Double(-20, -20, 20, 20)));
+    }
+
+    static final Symbol NoticeRinfo = new Symbol();
+    static {
+        NoticeRinfo.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeRinfo.add(new Instr(Form.FILL, new Color(0xd40000)));
+        NoticeRinfo.add(new Instr(Form.RECT, new Rectangle2D.Double(-30, -30, 60, 60)));
+    }
+
+    public static final Symbol NoticeRnpas = new Symbol();
+    static {
+        NoticeRnpas.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRnpas.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
+        NoticeRnpas.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-10, -15); p.lineTo(-10, 8); p.lineTo(-6, 8); p.lineTo(-12.5, 16); p.lineTo(-19, 8); p.lineTo(-15, 8); p.lineTo(-15, -15);
+        p.closePath(); p.moveTo(10, 15); p.lineTo(10, -8); p.lineTo(6, -8); p.lineTo(12.5, -16); p.lineTo(19, -8); p.lineTo(15, -8); p.lineTo(15, 15); p.closePath();
+        NoticeRnpas.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeRnank = new Symbol();
+    static {
+        NoticeRnank.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRnank.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
+        NoticeRnank.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.4, 0, 0, new Scheme(Color.black), null)));
+    }
+
+    public static final Symbol NoticeRnwsh = new Symbol();
+    static {
+        NoticeRnwsh.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRnwsh.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
+        NoticeRnwsh.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-23, 10); p.curveTo(-11, 10, -12, 4, 0, 4); p.curveTo(12, 4, 11, 10, 23, 10);
+        p.moveTo(-23, -3); p.curveTo(-11, -3, -12, -9, 0, -9); p.curveTo(12, -9, 11, -3, 23, -3);
+        NoticeRnwsh.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol NoticeRlmhr = new Symbol();
+    static {
+        NoticeRlmhr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRlmhr.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRinfo, 1.0, 0, 0, null, null)));
+        NoticeRlmhr.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -10); p.lineTo(27, -27); p.lineTo(-27, -27); p.closePath();
+        NoticeRlmhr.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeRtrna = new Symbol();
+    static {
+        NoticeRtrna.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRtrna.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeCR, 1.0, 0, 0, null, null)));
+        NoticeRtrna.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeRtrna.add(new Instr(Form.EARC, new Arc2D.Double(-15.0, -15.0, 30.0, 30.0, 315.0, -280.0, Arc2D.OPEN)));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(18.8, -2.0); p.lineTo(15.8, -13.2); p.lineTo(7.5, -5.0); p.closePath();
+        NoticeRtrna.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeRncps = new Symbol();
+    static {
+        NoticeRncps.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRncps.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
+        NoticeRncps.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-10, 0); p.lineTo(-10, 8); p.lineTo(-6, 8); p.lineTo(-12.5, 16); p.lineTo(-19, 8); p.lineTo(-15, 8); p.lineTo(-15, 0);
+        p.closePath(); p.moveTo(10, 0); p.lineTo(10, -8); p.lineTo(6, -8); p.lineTo(12.5, -16); p.lineTo(19, -8); p.lineTo(15, -8); p.lineTo(15, 0); p.closePath();
+        NoticeRncps.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeRnsmc = new Symbol();
+    static {
+        NoticeRnsmc.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRnsmc.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
+        NoticeRnsmc.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15, 5); p.lineTo(15, 5); p.lineTo(25, -10); p.lineTo(12, -5); p.lineTo(-18, -1); p.closePath();
+        p.moveTo(-23, 2); p.lineTo(-21, 10); p.lineTo(-18, 8); p.lineTo(-20, 0); p.closePath();
+        NoticeRnsmc.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeRattn = new Symbol();
+    static {
+        NoticeRattn.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRattn.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRinfo, 1.0, 0, 0, null, null)));
+        NoticeRattn.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        NoticeRattn.add(new Instr(Form.FILL, Color.black));
+        NoticeRattn.add(new Instr(Form.LINE, new Line2D.Double(0, -20, 0, 10)));
+        NoticeRattn.add(new Instr(Form.LINE, new Line2D.Double(0, 15, 0, 20)));
+    }
+
+    public static final Symbol NoticeRfwcr = new Symbol();
+    static {
+        NoticeRfwcr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRfwcr.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRinfo, 1.0, 0, 0, null, null)));
+        NoticeRfwcr.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -25); p.lineTo(-8, -15); p.lineTo(-8, 5); p.lineTo(-20, 5); p.lineTo(-20, 15); p.lineTo(-8, 15); p.lineTo(-8, 25);
+        p.lineTo(8, 25); p.lineTo(8, 15); p.lineTo(20, 15); p.lineTo(20, 5); p.lineTo(8, 5); p.lineTo(8, -15); p.closePath();
+        NoticeRfwcr.add(new Instr(Form.PGON, p));
+    }
+
+    public static final Symbol NoticeRship = new Symbol();
+    static {
+        NoticeRship.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -30, 60, 60)));
+        NoticeRship.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeCR, 1.0, 0, 0, null, null)));
+        NoticeRship.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+        NoticeRship.add(new Instr(Form.FILL, Color.black));
+        NoticeRship.add(new Instr(Form.LINE, new Line2D.Double(-12, -12, 10, 10)));
+        NoticeRship.add(new Instr(Form.LINE, new Line2D.Double(-12, -8, -8, -12)));
+        NoticeRship.add(new Instr(Form.LINE, new Line2D.Double(12, -12, -10, 10)));
+        NoticeRship.add(new Instr(Form.LINE, new Line2D.Double(12, -8, 8, -12)));
+        NoticeRship.add(new Instr(Form.EARC, new Arc2D.Double(-17, -13, 30, 30, 185, 80, Arc2D.OPEN)));
+        NoticeRship.add(new Instr(Form.EARC, new Arc2D.Double(-13, -13, 30, 30, 275, 80, Arc2D.OPEN)));
+    }
+
+    public static final EnumMap<CatNMK, Symbol> NmkPpwbcl = new EnumMap<>(CatNMK.class);
+    static {
+        NmkPpwbcl.put(CatNMK.NMK_WRAL, NoticePwralL); NmkPpwbcl.put(CatNMK.NMK_WLAR, NoticePwlarL); NmkPpwbcl.put(CatNMK.NMK_KTPM, NoticePktmL); NmkPpwbcl.put(CatNMK.NMK_KTSM, NoticePktmL);
+        NmkPpwbcl.put(CatNMK.NMK_KTMR, NoticePktmrL); NmkPpwbcl.put(CatNMK.NMK_CRTP, NoticePcrL); NmkPpwbcl.put(CatNMK.NMK_CRTS, NoticePcrL);
+    }
+
+    public static final EnumMap<CatNMK, Symbol> NmkPpwbcr = new EnumMap<>(CatNMK.class);
+    static {
+        NmkPpwbcr.put(CatNMK.NMK_WRAL, NoticePwralR); NmkPpwbcr.put(CatNMK.NMK_WLAR, NoticePwlarR); NmkPpwbcr.put(CatNMK.NMK_KTPM, NoticePktmR); NmkPpwbcr.put(CatNMK.NMK_KTSM, NoticePktmR);
+        NmkPpwbcr.put(CatNMK.NMK_KTMR, NoticePktmrR); NmkPpwbcr.put(CatNMK.NMK_CRTP, NoticePcrR); NmkPpwbcr.put(CatNMK.NMK_CRTS, NoticePcrR);
+    }
+
+    public static final EnumMap<CatNMK, Symbol> NmkRiwr = new EnumMap<>(CatNMK.class);
+    static {
+        NmkRiwr.put(CatNMK.NMK_NPAS, NoticeRnpas); NmkRiwr.put(CatNMK.NMK_NANK, NoticeRnank); NmkRiwr.put(CatNMK.NMK_NWSH, NoticeRnwsh); NmkRiwr.put(CatNMK.NMK_LMHR, NoticeRlmhr); NmkRiwr.put(CatNMK.NMK_TRNA, NoticeRtrna);
+        NmkRiwr.put(CatNMK.NMK_NCPS, NoticeRncps); NmkRiwr.put(CatNMK.NMK_NSMC, NoticeRnsmc); NmkRiwr.put(CatNMK.NMK_ATTN, NoticeRattn); NmkRiwr.put(CatNMK.NMK_FWCR, NoticeRfwcr); NmkRiwr.put(CatNMK.NMK_SHIP, NoticeRship);
+    }
+
+    public static Scheme getScheme(MarSYS sys, BnkWTW bank) {
+        ArrayList<Color> colours = new ArrayList<>();
+        Scheme scheme = new Scheme(colours);
+        switch (sys) {
+        case SYS_BNWR:
+        case SYS_BWR2:
+            switch (bank) {
+            case BWW_LEFT:
+                colours.add(Color.white);
+                colours.add(new Color(0xf00000));
+                break;
+            case BWW_RGHT:
+                colours.add(Color.white);
+                colours.add(new Color(0x00a000));
+                break;
+            default:
+                colours.add(new Color(0xff8040));
+                colours.add(Color.black);
+                break;
+            }
+            break;
+        default:
+            break;
+        }
+        return scheme;
+    }
+
+    public static Symbol getNotice(CatNMK cat, MarSYS sys, BnkWTW bank) {
+        Symbol symbol = null;
+        switch (sys) {
+        case SYS_CEVN:
+            symbol = NmkCevni.get(cat);
+            break;
+        case SYS_BNWR:
+        case SYS_BWR2:
+            symbol = NmkBniwr.get(cat);
+            break;
+        case SYS_PPWB:
+            switch (bank) {
+            case BWW_LEFT:
+                symbol = NmkPpwbcl.get(cat);
+                break;
+            case BWW_RGHT:
+                symbol = NmkPpwbcr.get(cat);
+                break;
+            default:
+                break;
+            }
+            break;
+        case SYS_RIWR:
+            symbol = NmkRiwr.get(cat);
+            break;
+        default:
+            break;
+        }
+        return symbol;
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Symbols.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Symbols.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Symbols.java	(revision 36424)
@@ -0,0 +1,439 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.font.TextLayout;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+import java.util.ArrayList;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Symbols {
+    private Symbols() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    public static final Color Yland = new Color(0xedbc0c);
+    //    public static final Color Bwater = new Color(0x78acd2);
+    public static final Color Bwater = new Color(0x9bc5e3);
+    public static final Color Gdries = new Color(0x689868);
+    public static final Color Mline = new Color(0x9a6078);
+    public static final Color Msymb = new Color(0xa30075);
+    public static final Color Mtss = new Color(0xc0c480ff, true);
+
+    public enum Form {
+        BBOX, STRK, COLR, FILL, LINE, RECT, RRCT, ELPS, EARC, PLIN, PGON, RSHP, TEXT, SYMB, N1, N2, P1, P2, H2, H3, H4, H5, V2, V3, D2, D3, D4, B1, S2, S3, S4, C2, X2
+    }
+
+    public enum Patt {
+        Z, H, V, D, B, S, C, X
+    }
+
+    public enum Handle {
+        CC, TL, TR, TC, LC, RC, BL, BR, BC
+    }
+
+    public static class Instr {
+        public Form type;
+        public Object params;
+
+        public Instr(Form itype, Object iparams) {
+            type = itype;
+            params = iparams;
+        }
+    }
+
+    public static class Delta {
+        public Handle h;
+        public AffineTransform t;
+
+        public Delta(Handle ih, AffineTransform it) {
+            h = ih;
+            t = it;
+        }
+
+        public Delta(Handle ih) {
+            h = ih;
+            t = new AffineTransform();
+        }
+    }
+
+    public static class Scheme {
+        public ArrayList<Patt> pat;
+        public ArrayList<Color> col;
+
+        public Scheme(ArrayList<Color> icol) {
+            pat = new ArrayList<>();
+            col = icol;
+        }
+
+        public Scheme(ArrayList<Patt> ipat, ArrayList<Color> icol) {
+            pat = ipat;
+            col = icol;
+        }
+
+        public Scheme(Color icol) {
+            pat = new ArrayList<>();
+            col = new ArrayList<>();
+            col.add(icol);
+        }
+
+        public Scheme() {
+            pat = new ArrayList<>();
+            col = new ArrayList<>();
+        }
+    }
+
+    public static class Caption {
+        public String string;
+        public Font font;
+        public Color colour;
+        public Delta dd;
+
+        public Caption(String istr, Font ifont, Color icolour, Delta idd) {
+            string = istr;
+            font = ifont;
+            colour = icolour;
+            dd = idd;
+        }
+    }
+
+    public static class LineStyle {
+        public Color line;
+        public float width;
+        public float[] dash;
+        public Color fill;
+
+        public LineStyle(Color ifill) {
+            line = null;
+            width = 0;
+            dash = null;
+            fill = ifill;
+        }
+
+        public LineStyle(Color iline, float iwidth) {
+            line = iline;
+            width = iwidth;
+            dash = null;
+            fill = null;
+        }
+
+        public LineStyle(Color iline, float iwidth, float[] idash) {
+            line = iline;
+            width = iwidth;
+            dash = idash;
+            fill = null;
+        }
+
+        public LineStyle(Color iline, float iwidth, Color ifill) {
+            line = iline;
+            width = iwidth;
+            dash = null;
+            fill = ifill;
+        }
+
+        public LineStyle(Color iline, float iwidth, float[] idash, Color ifill) {
+            line = iline;
+            width = iwidth;
+            dash = idash;
+            fill = ifill;
+        }
+    }
+
+    @SuppressWarnings("serial")
+	public static class Symbol extends ArrayList<Instr> {
+        public Symbol() {
+            super();
+        }
+    }
+
+    public static class SubSymbol {
+        public Symbol instr;
+        public double scale;
+        public double x;
+        public double y;
+        public Delta delta;
+        public Scheme scheme;
+
+        public SubSymbol(Symbol iinstr, double iscale, double ix, double iy, Scheme ischeme, Delta idelta) {
+            instr = iinstr;
+            scale = iscale;
+            x = ix;
+            y = iy;
+            delta = idelta;
+            scheme = ischeme;
+        }
+    }
+
+    public static void drawSymbol(Graphics2D g2, Symbol symbol, double scale, double x, double y, Scheme cs, Delta dd) {
+        int pn = 0;
+        int cn = 0;
+        Patt bpat = Patt.Z;
+        Color bcol = null;
+        g2.setPaint(Color.black);
+        if (cs != null) {
+            if ((cs.pat.size() > 0) && (cs.col.size() > 0) && (cs.pat.get(0) == Patt.B)) {
+                bpat = cs.pat.remove(0);
+                bcol = cs.col.remove(0);
+            }
+            pn = cs.pat.size();
+            cn = cs.col.size() - ((pn != 0) ? pn - 1 : 0);
+            if ((pn == 0) && (cs.col.size() == 1)) {
+                g2.setPaint(cs.col.get(0));
+            }
+        }
+        AffineTransform savetr = g2.getTransform();
+        g2.translate(x, y);
+        g2.scale(scale, scale);
+        if (symbol != null) {
+            for (Instr item : symbol) {
+                switch (item.type) {
+                case BBOX:
+                    Rectangle2D.Double bbox = (Rectangle2D.Double) item.params;
+                    double dx = 0.0;
+                    double dy = 0.0;
+                    if (dd != null) {
+                        g2.transform(dd.t);
+                        switch (dd.h) {
+                        case CC:
+                            dx -= bbox.x + (bbox.width / 2.0);
+                            dy -= bbox.y + (bbox.height / 2.0);
+                            break;
+                        case TL:
+                            dx -= bbox.x;
+                            dy -= bbox.y;
+                            break;
+                        case TR:
+                            dx -= bbox.x + bbox.width;
+                            dy -= bbox.y;
+                            break;
+                        case TC:
+                            dx -= bbox.x + (bbox.width / 2.0);
+                            dy -= bbox.y;
+                            break;
+                        case LC:
+                            dx -= bbox.x;
+                            dy -= bbox.y + (bbox.height / 2.0);
+                            break;
+                        case RC:
+                            dx -= bbox.x + bbox.width;
+                            dy -= bbox.y + (bbox.height / 2.0);
+                            break;
+                        case BL:
+                            dx -= bbox.x;
+                            dy -= bbox.y + bbox.height;
+                            break;
+                        case BR:
+                            dx -= bbox.x + bbox.width;
+                            dy -= bbox.y + bbox.height;
+                            break;
+                        case BC:
+                            dx -= bbox.x + (bbox.width / 2.0);
+                            dy -= bbox.y + bbox.height;
+                            break;
+                        }
+                        g2.translate(dx, dy);
+                    }
+                    break;
+                case COLR:
+                    if ((cs != null) && (cs.col != null)) {
+                        for (Instr patch : (Symbol) item.params) {
+                            switch (patch.type) {
+                            case N1:
+                                if (cn > 0) {
+                                    Symbol s = (Symbol) patch.params;
+                                    drawSymbol(g2, s, 1.0, 0, 0, new Scheme(cs.col.get(0)), null);
+                                }
+                                break;
+                            case N2:
+                                if (cn > 0) {
+                                    Symbol s = (Symbol) patch.params;
+                                    drawSymbol(g2, s, 1.0, 0, 0, new Scheme((cn > 1) ? cs.col.get(1) : cs.col.get(0)), null);
+                                }
+                                break;
+                            case P1:
+                                if (cn > 0) {
+                                    g2.setPaint(cs.col.get(0));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case P2:
+                                if (cn > 0) {
+                                    if (cn > 1) {
+                                        g2.setPaint(cs.col.get(1));
+                                    } else {
+                                        g2.setPaint(cs.col.get(0));
+                                    }
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case H2:
+                                if ((cn > 1) && (pn > 0) && (cs.pat.get(0) == Patt.H)) {
+                                    g2.setPaint(cs.col.get(cs.col.size() - pn));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case H3:
+                                if ((cn == 3) && (pn > 0) && (cs.pat.get(0) == Patt.H)) {
+                                    g2.setPaint(cs.col.get(1));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case H4:
+                                if ((cn == 4) && (pn > 0) && (cs.pat.get(0) == Patt.H)) {
+                                    g2.setPaint(cs.col.get(1));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case H5:
+                                if ((cn == 4) && (pn > 0) && (cs.pat.get(0) == Patt.H)) {
+                                    g2.setPaint(cs.col.get(2));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case V2:
+                                if ((cn > 1) && (pn > 0) && (cs.pat.get(0) == Patt.V)) {
+                                    g2.setPaint(cs.col.get(cs.col.size() - pn));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case V3:
+                                if ((cn == 3) && (pn > 0) && (cs.pat.get(0) == Patt.V)) {
+                                    g2.setPaint(cs.col.get(1));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case B1:
+                                if (bpat == Patt.B) {
+                                    g2.setPaint(bcol);
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case S2:
+                                if ((cn > 1) && (pn > 0) && (cs.pat.get(0) == Patt.S)) {
+                                    g2.setPaint(cs.col.get(1));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case S3:
+                                if ((cn > 2) && (pn > 0) && (cs.pat.get(0) == Patt.S)) {
+                                    g2.setPaint(cs.col.get(2));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            case S4:
+                                if ((cn == 4) && (pn > 0) && (cs.pat.get(0) == Patt.S)) {
+                                    g2.setPaint(cs.col.get(3));
+                                    g2.fill((Path2D.Double) patch.params);
+                                }
+                                break;
+                            default:
+                                break;
+                            }
+                        }
+                    }
+                    break;
+                case STRK:
+                    g2.setStroke((BasicStroke) item.params);
+                    break;
+                case FILL:
+                    g2.setPaint((Color) item.params);
+                    break;
+                case LINE:
+                    g2.draw((Line2D.Double) item.params);
+                    break;
+                case RECT:
+                    g2.draw((Rectangle2D.Double) item.params);
+                    break;
+                case RRCT:
+                    g2.draw((RoundRectangle2D.Double) item.params);
+                    break;
+                case ELPS:
+                    g2.draw((Ellipse2D.Double) item.params);
+                    break;
+                case EARC:
+                    g2.draw((Arc2D.Double) item.params);
+                    break;
+                case PLIN:
+                    g2.draw((Path2D.Double) item.params);
+                    break;
+                case PGON:
+                    g2.fill((Path2D.Double) item.params);
+                    break;
+                case RSHP:
+                    g2.fill((RectangularShape) item.params);
+                    break;
+                case SYMB:
+                    SubSymbol s = (SubSymbol) item.params;
+                    drawSymbol(g2, s.instr, s.scale, s.x, s.y, (s.scheme != null ? s.scheme : cs), s.delta);
+                    break;
+                case TEXT:
+                    Caption c = (Caption) item.params;
+                    g2.setPaint(c.colour);
+                    TextLayout layout = new TextLayout(c.string, c.font, g2.getFontRenderContext());
+                    Rectangle2D bb = layout.getBounds();
+                    dx = 0;
+                    dy = 0;
+                    if (c.dd != null) {
+                        if (c.dd.t != null) g2.transform(c.dd.t);
+                        switch (c.dd.h) {
+                        case CC:
+                            dx -= bb.getX() + (bb.getWidth() / 2.0);
+                            dy -= bb.getY() + (bb.getHeight() / 2.0);
+                            break;
+                        case TL:
+                            dx -= bb.getX();
+                            dy -= bb.getY();
+                            break;
+                        case TR:
+                            dx -= bb.getX() + bb.getWidth();
+                            dy -= bb.getY();
+                            break;
+                        case TC:
+                            dx -= bb.getX() + (bb.getWidth() / 2.0);
+                            dy -= bb.getY();
+                            break;
+                        case LC:
+                            dx -= bb.getX();
+                            dy -= bb.getY() + (bb.getHeight() / 2.0);
+                            break;
+                        case RC:
+                            dx -= bb.getX() + bb.getWidth();
+                            dy -= bb.getY() + (bb.getHeight() / 2.0);
+                            break;
+                        case BL:
+                            dx -= bb.getX();
+                            dy -= bb.getY() + bb.getHeight();
+                            break;
+                        case BR:
+                            dx -= bb.getX() + bb.getWidth();
+                            dy -= bb.getY() + bb.getHeight();
+                            break;
+                        case BC:
+                            dx -= bb.getX() + (bb.getWidth() / 2.0);
+                            dy -= bb.getY() + bb.getHeight();
+                            break;
+                        }
+                    }
+                    layout.draw(g2, (float) dx, (float) dy);
+                    break;
+                default:
+                    break;
+                }
+            }
+        }
+        g2.setTransform(savetr);
+    }
+}
Index: /applications/editors/josm/plugins/SeaChart/src/symbols/Topmarks.java
===================================================================
--- /applications/editors/josm/plugins/SeaChart/src/symbols/Topmarks.java	(revision 36424)
+++ /applications/editors/josm/plugins/SeaChart/src/symbols/Topmarks.java	(revision 36424)
@@ -0,0 +1,562 @@
+// License: GPL. For details, see LICENSE file.
+package symbols;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.util.EnumMap;
+
+import s57.S57val.BoySHP;
+import s57.S57val.TopSHP;
+import symbols.Symbols.Delta;
+import symbols.Symbols.Form;
+import symbols.Symbols.Handle;
+import symbols.Symbols.Instr;
+import symbols.Symbols.Symbol;
+
+/**
+ * @author Malcolm Herring
+ */
+public final class Topmarks {
+
+    private Topmarks() {
+        // Hide default constructor for utilities classes
+    }
+
+    // CHECKSTYLE.OFF: LineLength
+    public static final Symbol RadarReflector = new Symbol();
+    static {
+      RadarReflector.add(new Instr(Form.BBOX, new Rectangle2D.Double(-50, -40, 100, 40)));
+      RadarReflector.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+      RadarReflector.add(new Instr(Form.FILL, Color.black));
+      Path2D.Double p = new Path2D.Double(); p.moveTo(-30, -3); p.quadTo(0, -40, 30, -3); p.moveTo(0, -20); p.lineTo(0, -37);
+      p.moveTo(-30, -3); p.lineTo(-43, -14); p.moveTo(30, -3); p.lineTo(44, -14); p.moveTo(-15, -14); p.lineTo(-25, -30); p.moveTo(15, -14); p.lineTo(25, -30);
+      RadarReflector.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopArrow = new Symbol();
+    static {
+    	TopArrow.add(new Instr(Form.BBOX, new Rectangle2D.Double(-40, -80, 80, 80)));
+    	TopArrow.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+    	TopArrow.add(new Instr(Form.FILL, Color.black));
+      Path2D.Double p = new Path2D.Double(); p.moveTo(0, 0); p.lineTo(0, -30); p.lineTo(-20, -30); p.lineTo(-30, -20); p.lineTo(-20, -10); p.lineTo(0, -10);
+    	TopArrow.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopBesom = new Symbol();
+    static {
+        TopBesom.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        TopBesom.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopBesom.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, 0.0); p.lineTo(0.0, -30.0); p.lineTo(15.0, 0.0); p.moveTo(0.0, 0.0); p.lineTo(0.0, -28.0);
+        TopBesom.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopIBesom = new Symbol();
+    static {
+        TopIBesom.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        TopIBesom.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopIBesom.add(new Instr(Form.FILL, Color.black));
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -30.0); p.lineTo(0.0, 0.0); p.lineTo(15.0, -30.0);
+        TopIBesom.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopBoard = new Symbol();
+    static {
+        TopBoard.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -60, 60, 60)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-29, -1); p.lineTo(-29, -59); p.lineTo(29, -59); p.lineTo(29, -1); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(0, -1); p.lineTo(0, -59); p.lineTo(29, -59); p.lineTo(29, -1); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        p = new Path2D.Double(); p.moveTo(-10, -1); p.lineTo(-10, -59); p.lineTo(10, -59); p.lineTo(10, -1); p.closePath();
+        colours.add(new Instr(Form.V3, p));
+        p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-29, -1); p.lineTo(-29, -59); p.lineTo(29, -59); p.lineTo(29, -1); p.closePath();
+        p.moveTo(-19, -10); p.lineTo(-19, -49); p.lineTo(19, -49); p.lineTo(19, -10); p.closePath();
+        colours.add(new Instr(Form.B1, p));
+        p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-29, -1); p.lineTo(-29, -30); p.lineTo(29, -30); p.lineTo(29, -59); p.lineTo(0, -59); p.lineTo(0, -1); p.closePath();
+        colours.add(new Instr(Form.S2, p));
+        p = new Path2D.Double(); p.moveTo(-29, -1); p.lineTo(-29, -30); p.lineTo(0, -30); p.lineTo(0, -1); p.closePath();
+        colours.add(new Instr(Form.S3, p));
+        p = new Path2D.Double(); p.moveTo(0, -1); p.lineTo(0, -30); p.lineTo(29, -30); p.lineTo(29, -1); p.closePath();
+        colours.add(new Instr(Form.S4, p));
+        TopBoard.add(new Instr(Form.COLR, colours));
+        TopBoard.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopBoard.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(-29, -1); p.lineTo(-29, -59); p.lineTo(29, -59); p.lineTo(29.0, -1); p.closePath();
+        TopBoard.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopCan = new Symbol();
+    static {
+        TopCan.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-12.0, -15.0); p.lineTo(-12.0, -48.0); p.lineTo(12.0, -48.0); p.lineTo(12.0, -15.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopCan.add(new Instr(Form.COLR, colours));
+        TopCan.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopCan.add(new Instr(Form.FILL, Color.black));
+        TopCan.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15)));
+        p = new Path2D.Double(); p.moveTo(-12.0, -15.0); p.lineTo(-12.0, -48.0); p.lineTo(12.0, -48.0); p.lineTo(12.0, -15.0); p.closePath();
+        TopCan.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopCanSphere = new Symbol();
+    public static final Symbol TopCircle = new Symbol();
+    public static final Symbol TopCircleTriangle = new Symbol();
+    public static final Symbol TopCone = new Symbol();
+    static {
+        TopCone.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -15.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -15.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopCone.add(new Instr(Form.COLR, colours));
+        TopCone.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopCone.add(new Instr(Form.FILL, Color.black));
+        TopCone.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15)));
+        p = new Path2D.Double(); p.moveTo(-15.0, -15.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -15.0); p.closePath();
+        TopCone.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopConeSphere = new Symbol();
+    static {
+        TopConeSphere.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -47.0); p.lineTo(0.0, -77.0); p.lineTo(15.0, -47.0); p.closePath();
+        p.moveTo(-14.0, -28.0); p.curveTo(-14.0, -46.7, 14.0, -46.7, 14.0, -28.0); p.curveTo(14.0, -9.3, -14.0, -9.3, -14.0, -28.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopConeSphere.add(new Instr(Form.COLR, colours));
+        TopConeSphere.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopConeSphere.add(new Instr(Form.FILL, Color.black));
+        TopConeSphere.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15)));
+        TopConeSphere.add(new Instr(Form.LINE, new Line2D.Double(0, -42, 0, -47)));
+        p = new Path2D.Double(); p.moveTo(-15.0, -47.0); p.lineTo(0.0, -77.0); p.lineTo(15.0, -47.0); p.closePath();
+        TopConeSphere.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14, -42, 28, 28)));
+        TopConeSphere.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopCross = new Symbol();
+    static {
+        TopCross.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-5.0, -15.0); p.lineTo(-5.0, -32.5); p.lineTo(-22.5, -32.5); p.lineTo(-22.5, -42.5); p.lineTo(-5.0, -42.5);
+        p.lineTo(-5.0, -60.0); p.lineTo(5.0, -60.0); p.lineTo(5.0, -42.5); p.lineTo(22.5, -42.5); p.lineTo(22.5, -32.5); p.lineTo(5.0, -32.5); p.lineTo(5.0, -15.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopCross.add(new Instr(Form.COLR, colours));
+        TopCross.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopCross.add(new Instr(Form.FILL, Color.black));
+        TopCross.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15)));
+        TopCross.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        p = new Path2D.Double(); p.moveTo(-5.0, -15.0); p.lineTo(-5.0, -32.5); p.lineTo(-22.5, -32.5); p.lineTo(-22.5, -42.5); p.lineTo(-5.0, -42.5); p.lineTo(-5.0, -60.0);
+        p.lineTo(5.0, -60.0); p.lineTo(5.0, -42.5); p.lineTo(22.5, -42.5); p.lineTo(22.5, -32.5); p.lineTo(5.0, -32.5); p.lineTo(5.0, -15.0); p.closePath();
+        TopCross.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopCrosses = new Symbol();
+
+    public static final Symbol TopCrossCircle = new Symbol();
+
+    public static final Symbol TopCube = new Symbol();
+    static {
+        TopCube.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -48); p.lineTo(-15, -37); p.lineTo(-15, -20); p.lineTo(0, -9); p.lineTo(15, -20); p.lineTo(15, -37); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopCube.add(new Instr(Form.COLR, colours));
+        TopCube.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopCube.add(new Instr(Form.FILL, Color.black));
+        TopCube.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15)));
+        p = new Path2D.Double(); p.moveTo(0, -48); p.lineTo(-14, -37); p.lineTo(0, -26); p.lineTo(14, -37); p.closePath(); p.moveTo(0, -26); p.lineTo(0, 0);
+        p.moveTo(-15, -37); p.lineTo(-15, -20); p.lineTo(0, -9); p.lineTo(15, -20); p.lineTo(15, -37);
+        TopCube.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopEast = new Symbol();
+    static {
+        TopEast.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -80.0); p.lineTo(-15.0, -47.0); p.lineTo(15.0, -47.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(-15.0, -43.0); p.lineTo(15.0, -43.0); p.closePath();
+        colours.add(new Instr(Form.P2, p));
+        TopEast.add(new Instr(Form.COLR, colours));
+        TopEast.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopEast.add(new Instr(Form.FILL, Color.black));
+        TopEast.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -10)));
+        TopEast.add(new Instr(Form.LINE, new Line2D.Double(0, -43, 0, -47)));
+        TopEast.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(-15.0, -43.0); p.lineTo(15.0, -43.0); p.closePath();
+        p.moveTo(0.0, -80.0); p.lineTo(-15.0, -47.0); p.lineTo(15.0, -47.0); p.closePath();
+        TopEast.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopFlag = new Symbol();
+    static {
+        TopFlag.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0, -40); p.lineTo(0, -10); p.lineTo(39, -10); p.lineTo(39, -40); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(0, -25); p.lineTo(0, -10); p.lineTo(40, -10); p.lineTo(39, -25); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(0, -20); p.lineTo(40, -20); p.lineTo(39, -30); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(19.5, -40); p.lineTo(19.5, -10); p.lineTo(39, -10); p.lineTo(39, -40); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        p = new Path2D.Double(); p.moveTo(13, -40); p.lineTo(13, -10); p.lineTo(26, -10); p.lineTo(26, -40); p.closePath();
+        colours.add(new Instr(Form.V3, p));
+        p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(0, -40); p.lineTo(0, -10); p.lineTo(39, -10); p.lineTo(39, -40); p.closePath();
+        p.moveTo(8, -35); p.lineTo(8, -15); p.lineTo(33, -15); p.lineTo(33, -35); p.closePath();
+        colours.add(new Instr(Form.B1, p));
+        p = new Path2D.Double(); p.moveTo(0, -25); p.lineTo(0, -10); p.lineTo(20, -10); p.lineTo(20, -40); p.lineTo(39, -40); p.lineTo(39, -25); p.closePath();
+        colours.add(new Instr(Form.S2, p));
+        p = new Path2D.Double(); p.moveTo(0, -25); p.lineTo(0, -10); p.lineTo(20, -10); p.lineTo(20, -25); p.closePath();
+        colours.add(new Instr(Form.S3, p));
+        p = new Path2D.Double(); p.moveTo(20, -25); p.lineTo(20, -10); p.lineTo(39, -10); p.lineTo(39, -25); p.closePath();
+        colours.add(new Instr(Form.S4, p));
+        TopFlag.add(new Instr(Form.COLR, colours));
+        TopFlag.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopFlag.add(new Instr(Form.FILL, Color.black));
+        TopFlag.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -45)));
+        TopFlag.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopFlag.add(new Instr(Form.RECT, new Rectangle2D.Double(0, -40, 39, 30)));
+    }
+
+    public static final Symbol TopIcone = new Symbol();
+    static {
+        TopIcone.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -45.0); p.lineTo(0.0, -15.0); p.lineTo(15.0, -45.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopIcone.add(new Instr(Form.COLR, colours));
+        TopIcone.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopIcone.add(new Instr(Form.FILL, Color.black));
+        TopIcone.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15)));
+        p = new Path2D.Double(); p.moveTo(-15.0, -45.0); p.lineTo(0.0, -15.0); p.lineTo(15.0, -45.0); p.closePath();
+        TopIcone.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopIsol = new Symbol();
+    static {
+        TopIsol.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0, -55.0); p.curveTo(-13.0, -72.3, 13.0, -72.3, 13.0, -55.0); p.curveTo(13.0, -37.7, -13.0, -37.7, -13.0, -55.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-13.0, -28.0); p.curveTo(-13.0, -45.3, 13.0, -45.3, 13.0, -28.0); p.curveTo(13.0, -10.7, -13.0, -10.7, -13.0, -28.0); p.closePath();
+        colours.add(new Instr(Form.P2, p));
+        TopIsol.add(new Instr(Form.COLR, colours));
+        TopIsol.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopIsol.add(new Instr(Form.FILL, Color.black));
+        TopIsol.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15)));
+        TopIsol.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopIsol.add(new Instr(Form.ELPS, new Ellipse2D.Double(-13, -41, 26, 26)));
+        TopIsol.add(new Instr(Form.ELPS, new Ellipse2D.Double(-13, -68, 26, 26)));
+    }
+
+    public static final Symbol TopMooring = new Symbol();
+    static {
+        TopMooring.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        TopMooring.add(new Instr(Form.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopMooring.add(new Instr(Form.FILL, Color.black));
+        TopMooring.add(new Instr(Form.ELPS, new Ellipse2D.Double(-1.5, -6, 3, 3)));
+        TopMooring.add(new Instr(Form.ELPS, new Ellipse2D.Double(-8.5, -25, 17, 17)));
+    }
+
+    public static final Symbol TopNorth = new Symbol();
+    static {
+        TopNorth.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -78.0); p.lineTo(-15.0, -45.0); p.lineTo(15.0, -45.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-15.0, -10.0); p.lineTo(0.0, -43.0); p.lineTo(15.0, -10.0); p.closePath();
+        colours.add(new Instr(Form.P2, p));
+        TopNorth.add(new Instr(Form.COLR, colours));
+        TopNorth.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopNorth.add(new Instr(Form.FILL, Color.black));
+        TopNorth.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -10)));
+        TopNorth.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        p = new Path2D.Double(); p.moveTo(-15.0, -10.0); p.lineTo(0.0, -43.0); p.lineTo(15.0, -10.0); p.closePath();
+        p.moveTo(0.0, -78.0); p.lineTo(-15.0, -45.0); p.lineTo(15.0, -45.0); p.closePath();
+        TopNorth.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopSouth = new Symbol();
+    static {
+        TopSouth.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -78.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -78.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(-15.0, -43.0); p.lineTo(15.0, -43.0); p.closePath();
+        colours.add(new Instr(Form.P2, p));
+        TopSouth.add(new Instr(Form.COLR, colours));
+        TopSouth.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopSouth.add(new Instr(Form.FILL, Color.black));
+        TopSouth.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -10)));
+        TopSouth.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        p = new Path2D.Double(); p.moveTo(0.0, -10.0); p.lineTo(-15.0, -43.0); p.lineTo(15.0, -43.0); p.closePath();
+        p.moveTo(-15.0, -78.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -78.0); p.closePath();
+        TopSouth.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopSphere = new Symbol();
+    static {
+        TopSphere.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0, -28.0); p.curveTo(-14.0, -46.7, 14.0, -46.7, 14.0, -28.0); p.curveTo(14.0, -9.3, -14.0, -9.3, -14.0, -28.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopSphere.add(new Instr(Form.COLR, colours));
+        TopSphere.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopSphere.add(new Instr(Form.FILL, Color.black));
+        TopSphere.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -15)));
+        TopSphere.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopSphere.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14, -42, 28, 28)));
+    }
+
+    public static final Symbol TopSquare = new Symbol();
+    static {
+        TopSquare.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(13.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-13.0, -15.0); p.lineTo(-13.0, -1.0); p.lineTo(13.0, -1.0); p.lineTo(13.0, -15.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-13.0, -19.3); p.lineTo(-13.0, -10.7); p.lineTo(13.0, -10.7); p.lineTo(13.0, -19.3); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -1.0); p.lineTo(0.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(13.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        p = new Path2D.Double(); p.moveTo(-4.3, -1.0); p.lineTo(-4.3, -27.0); p.lineTo(4.3, -27.0); p.lineTo(4.3, -1.0); p.closePath();
+        colours.add(new Instr(Form.V3, p));
+        p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-13.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(13.0, -1.0); p.closePath();
+        p.moveTo(-8.0, -6.0); p.lineTo(-8.0, -22.0); p.lineTo(8.0, -22.0); p.lineTo(8.0, -6.0); p.closePath();
+        colours.add(new Instr(Form.B1, p));
+        TopSquare.add(new Instr(Form.COLR, colours));
+        TopSquare.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopSquare.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(-10.0, -1.0); p.lineTo(-10.0, -21.0); p.lineTo(12.0, -21.0); p.lineTo(10.0, -1.0); p.closePath();
+        TopSquare.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopRectangleH = new Symbol();
+    static {
+        TopRectangleH.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0, -1.0); p.lineTo(-14.0, -23.0); p.lineTo(14.0, -23.0); p.lineTo(14.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-14.0, -1.0); p.lineTo(-14.0, -12.0); p.lineTo(14.0, -12.0); p.lineTo(14.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-14.0, -16.0); p.lineTo(-14.0, -8.0); p.lineTo(14.0, -8.0); p.lineTo(14.0, -16.0); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -1.0); p.lineTo(0.0, -23.0); p.lineTo(14.0, -23.0); p.lineTo(14.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        p = new Path2D.Double(); p.moveTo(-5.0, -1.0); p.lineTo(-5.0, -23.0); p.lineTo(5.0, -23.0); p.lineTo(5.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.V3, p));
+        TopRectangleH.add(new Instr(Form.COLR, colours));
+        TopRectangleH.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopRectangleH.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(-14.0, -1.0); p.lineTo(-14.0, -23.0); p.lineTo(14.0, -23.0); p.lineTo(14.0, -1.0); p.closePath();
+        TopRectangleH.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopRectangleV = new Symbol();
+    static {
+        TopRectangleV.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-11.0, -1.0); p.lineTo(-11.0, -29.0); p.lineTo(11.0, -29.0); p.lineTo(11.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-11.0, -1.0); p.lineTo(-11.0, -15.0); p.lineTo(11.0, -15.0); p.lineTo(11.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-11.0, -10.0); p.lineTo(-11.0, -20.0); p.lineTo(11.0, -20.0); p.lineTo(11.0, -10.0); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -1.0); p.lineTo(0.0, -29.0); p.lineTo(11.0, -29.0); p.lineTo(11.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        p = new Path2D.Double(); p.moveTo(-4.0, -1.0); p.lineTo(-4.0, -29.0); p.lineTo(4.0, -29.0); p.lineTo(4.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.V3, p));
+        TopRectangleV.add(new Instr(Form.COLR, colours));
+        TopRectangleV.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopRectangleV.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(-11.0, -1.0); p.lineTo(-11.0, -29.0); p.lineTo(11.0, -29.0); p.lineTo(11.0, -1.0); p.closePath();
+        TopRectangleV.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopRhombus = new Symbol();
+    static {
+        TopRhombus.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -29.0); p.lineTo(-15.0, -15.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-15.0, -15.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath();
+        colours.add(new Instr(Form.H2, p));
+        p = new Path2D.Double(); p.moveTo(-10.0, -19.7); p.lineTo(-15.0, -15.0); p.lineTo(-10.0, -10.3); p.lineTo(10.0, -10.3); p.lineTo(15.0, -15.0); p.lineTo(10.0, -19.7); p.closePath();
+        colours.add(new Instr(Form.H3, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -29.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath();
+        colours.add(new Instr(Form.V2, p));
+        p = new Path2D.Double(); p.moveTo(0.0, -29.0); p.lineTo(-5.0, -24.3); p.lineTo(-5.0, -5.7); p.lineTo(0.0, -1.0); p.lineTo(5.0, -5.7); p.lineTo(5.0, -24.3); p.closePath();
+        colours.add(new Instr(Form.V3, p));
+        p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(0.0, -29.0); p.lineTo(-15.0, -15.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath();
+        p.moveTo(0.0, -23.0); p.lineTo(-9.0, -15.0); p.lineTo(0.0, -7.0); p.lineTo(9.0, -15.0); p.closePath();
+        colours.add(new Instr(Form.B1, p));
+        TopRhombus.add(new Instr(Form.COLR, colours));
+        TopRhombus.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopRhombus.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(0.0, -29.0); p.lineTo(-15.0, -15.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -15.0); p.closePath();
+        TopRhombus.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopRhombusCircle = new Symbol();
+
+    public static final Symbol TopSphereRhombus = new Symbol();
+    static {
+        TopSphereRhombus.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        TopSphereRhombus.add(new Instr(Form.SYMB, new Symbols.SubSymbol(TopRhombus, 1.0, 0, 0, null, null)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0, -44.0); p.curveTo(-14.0, -62.7, 14.0, -62.7, 14.0, -44.0); p.curveTo(14.0, -25.3, -14.0, -25.3, -14.0, -44.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopSphereRhombus.add(new Instr(Form.COLR, colours));
+        TopSphereRhombus.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopSphereRhombus.add(new Instr(Form.FILL, Color.black));
+        TopSphereRhombus.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopSphereRhombus.add(new Instr(Form.ELPS, new Ellipse2D.Double(-14, -58, 28, 28)));
+    }
+
+    public static final Symbol TopT = new Symbol();
+
+    public static final Symbol TopTrapeziumU = new Symbol();
+    static {
+        TopTrapeziumU.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-20.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(20.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopTrapeziumU.add(new Instr(Form.COLR, colours));
+        TopTrapeziumU.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopTrapeziumU.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(-20.0, -1.0); p.lineTo(-13.0, -27.0); p.lineTo(13.0, -27.0); p.lineTo(20.0, -1.0); p.closePath();
+        TopTrapeziumU.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopTrapeziumD = new Symbol();
+    static {
+        TopTrapeziumD.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-20.0, -27.0); p.lineTo(20.0, -27.0); p.lineTo(13.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopTrapeziumD.add(new Instr(Form.COLR, colours));
+        TopTrapeziumD.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopTrapeziumD.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(-13.0, -1.0); p.lineTo(-20.0, -27.0); p.lineTo(20.0, -27.0); p.lineTo(13.0, -1.0); p.closePath();
+        TopTrapeziumD.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopTriangle = new Symbol();
+    static {
+        TopTriangle.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -1.0); p.lineTo(0.0, -29.0); p.lineTo(15.0, -1.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-15.0, -1.0); p.lineTo(0.0, -29.0); p.lineTo(15.0, -1.0); p.closePath();
+        p.moveTo(-10.0, -6.0); p.lineTo(0.0, -24.0); p.lineTo(10.0, -6.0); p.closePath();
+        colours.add(new Instr(Form.B1, p));
+        TopTriangle.add(new Instr(Form.COLR, colours));
+        TopTriangle.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopTriangle.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(-15.0, -1.0); p.lineTo(0.0, -29.0); p.lineTo(15.0, -1.0); p.closePath();
+        TopTriangle.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopItriangle = new Symbol();
+    static {
+        TopItriangle.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -29.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -29.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+        p.moveTo(-15.0, -29.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -29.0); p.closePath();
+        p.moveTo(-10.0, -24.0); p.lineTo(0.0, -6.0); p.lineTo(10.0, -24.0); p.closePath();
+        colours.add(new Instr(Form.B1, p));
+        TopItriangle.add(new Instr(Form.COLR, colours));
+        TopItriangle.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopItriangle.add(new Instr(Form.FILL, Color.black));
+        p = new Path2D.Double(); p.moveTo(-15.0, -29.0); p.lineTo(0.0, -1.0); p.lineTo(15.0, -29.0); p.closePath();
+        TopItriangle.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopTriangleCircle = new Symbol();
+
+    public static final Symbol TopWest = new Symbol();
+    static {
+        TopWest.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0, -78.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -78.0); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        p = new Path2D.Double(); p.moveTo(-15.0, -10.0); p.lineTo(0.0, -43.0); p.lineTo(15.0, -10.0); p.closePath();
+        colours.add(new Instr(Form.P2, p));
+        TopWest.add(new Instr(Form.COLR, colours));
+        TopWest.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopWest.add(new Instr(Form.FILL, Color.black));
+        TopWest.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -10)));
+        TopWest.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        p = new Path2D.Double(); p.moveTo(-15.0, -10.0); p.lineTo(0.0, -43.0); p.lineTo(15.0, -10.0); p.closePath();
+        p.moveTo(-15.0, -78.0); p.lineTo(0.0, -45.0); p.lineTo(15.0, -78.0); p.closePath();
+        TopWest.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopX = new Symbol();
+    static {
+        TopX.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30, -80, 60, 80)));
+        Symbol colours = new Symbol();
+        Path2D.Double p = new Path2D.Double(); p.moveTo(0.0, -27.7); p.lineTo(-12.4, -15.7); p.lineTo(-19.3, -22.6); p.lineTo(-7.3, -35.0); p.lineTo(-19.3, -47.3);
+        p.lineTo(-12.4, -54.2); p.lineTo(0.0, -42.4); p.lineTo(12.4, -54.2); p.lineTo(19.3, -47.3); p.lineTo(7.3, -35.0); p.lineTo(19.3, -22.6); p.lineTo(12.4, -15.7); p.closePath();
+        colours.add(new Instr(Form.P1, p));
+        TopX.add(new Instr(Form.COLR, colours));
+        TopX.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        TopX.add(new Instr(Form.FILL, Color.black));
+        TopX.add(new Instr(Form.LINE, new Line2D.Double(0, 0, 0, -27)));
+        TopX.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+        p = new Path2D.Double(); p.moveTo(0.0, -27.7); p.lineTo(-12.4, -15.7); p.lineTo(-19.3, -22.6); p.lineTo(-7.3, -35.0); p.lineTo(-19.3, -47.3); p.lineTo(-12.4, -54.2); p.lineTo(0.0, -42.4);
+        p.lineTo(12.4, -54.2); p.lineTo(19.3, -47.3); p.lineTo(7.3, -35.0); p.lineTo(19.3, -22.6); p.lineTo(12.4, -15.7); p.closePath();
+        TopX.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopOther = new Symbol();
+
+    public static final EnumMap<TopSHP, Symbol> Shapes = new EnumMap<>(TopSHP.class);
+    static {
+        Shapes.put(TopSHP.TOP_BESM, TopBesom); Shapes.put(TopSHP.TOP_IBESM, TopIBesom); Shapes.put(TopSHP.TOP_BORD, TopBoard); Shapes.put(TopSHP.TOP_CAN, TopCan);
+        Shapes.put(TopSHP.TOP_CONE, TopCone); Shapes.put(TopSHP.TOP_CROS, TopCross); Shapes.put(TopSHP.TOP_EAST, TopEast); Shapes.put(TopSHP.TOP_ICONE, TopIcone);
+        Shapes.put(TopSHP.TOP_ISD, TopIsol); Shapes.put(TopSHP.TOP_NORTH, TopNorth); Shapes.put(TopSHP.TOP_SOUTH, TopSouth); Shapes.put(TopSHP.TOP_SPHR, TopSphere);
+        Shapes.put(TopSHP.TOP_SQUR, TopSquare); Shapes.put(TopSHP.TOP_TRI, TopTriangle); Shapes.put(TopSHP.TOP_ITRI, TopItriangle); Shapes.put(TopSHP.TOP_WEST, TopWest);
+        Shapes.put(TopSHP.TOP_SALT, TopX); Shapes.put(TopSHP.TOP_RHOM, TopRhombus); Shapes.put(TopSHP.TOP_FLAG, TopFlag); Shapes.put(TopSHP.TOP_CUBE, TopCube);
+        Shapes.put(TopSHP.TOP_SPRH, TopSphereRhombus); Shapes.put(TopSHP.TOP_HRECT, TopRectangleH); Shapes.put(TopSHP.TOP_VRECT, TopRectangleV);
+        Shapes.put(TopSHP.TOP_TRAP, TopTrapeziumU); Shapes.put(TopSHP.TOP_ITRAP, TopTrapeziumD); Shapes.put(TopSHP.TOP_COSP, TopConeSphere);
+        Shapes.put(TopSHP.TOP_CIRC, TopCircle); Shapes.put(TopSHP.TOP_CRSS, TopCrosses); Shapes.put(TopSHP.TOP_T, TopT); Shapes.put(TopSHP.TOP_TRCL, TopTriangleCircle);
+        Shapes.put(TopSHP.TOP_CRCL, TopCrossCircle); Shapes.put(TopSHP.TOP_RHCL, TopRhombusCircle); Shapes.put(TopSHP.TOP_CLTR, TopCircleTriangle);
+        Shapes.put(TopSHP.TOP_CYSP, TopCanSphere); Shapes.put(TopSHP.TOP_OTHR, TopOther); Shapes.put(TopSHP.TOP_ARRW, TopArrow);
+    }
+
+    // CHECKSTYLE.OFF: SingleSpaceSeparator
+    public static final EnumMap<BoySHP, Delta> BuoyDeltas = new EnumMap<>(BoySHP.class);
+    static {
+        BuoyDeltas.put(BoySHP.BOY_PILR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 31.5, -95.0)));
+        BuoyDeltas.put(BoySHP.BOY_SPAR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 31.5, -95.0)));
+        BuoyDeltas.put(BoySHP.BOY_CAN,  new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9)));
+        BuoyDeltas.put(BoySHP.BOY_CONE, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9)));
+        BuoyDeltas.put(BoySHP.BOY_SPHR, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9)));
+        BuoyDeltas.put(BoySHP.BOY_BARL, new Delta(Handle.BC, new AffineTransform(0.948324, 0.317305, -0.3173047, 0.948324, 12.7, -37.9)));
+        BuoyDeltas.put(BoySHP.BOY_SUPR, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0)));
+        BuoyDeltas.put(BoySHP.BOY_ICE,  new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -25.0)));
+    }
+
+    public static final Delta FloatDelta  = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0));
+    public static final Delta BeaconDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -70.0));
+    public static final Delta LightDelta  = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -20.0));
+    // CHECKSTYLE.ON: SingleSpaceSeparator
+}
Index: /applications/editors/josm/plugins/SimplifyArea/LICENSE
===================================================================
--- /applications/editors/josm/plugins/SimplifyArea/LICENSE	(revision 36424)
+++ /applications/editors/josm/plugins/SimplifyArea/LICENSE	(revision 36424)
@@ -0,0 +1,345 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+	51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/SimplifyArea/README
===================================================================
--- /applications/editors/josm/plugins/SimplifyArea/README	(revision 36424)
+++ /applications/editors/josm/plugins/SimplifyArea/README	(revision 36424)
@@ -0,0 +1,21 @@
+README 
+======
+
+This plugin is for simplyfying areas by performing following operations:
+- average nodes closer than simplify-area.distance parameter. Default is 0.2 (m).
+- remove every node for which is true:
+  - node lies on obtuse angle configured with parameter simplify-area.angle. Default 10.0 (degrees).
+  - node removal would cause area size change greater than specified by simplify-area.area parameter. Default is 5.0 (m^2).
+
+Operation works not only on the areas but also on the paths. Tagged nodes and nodes that are referenced are not removed. If the path is not closed, then first and last node is also not removed.
+Plugin can also remove node that is defined as the connecting node of the closed path. If such a node is removed then another node is used for this purpose.
+
+After selecting one or more areas and/or paths you can use shortcut Shift+A or select the action from the menu Tools -> Simplify Area.
+
+The original purpose of this tool is to simplify impored buildings from the Slovak Cadastre Portal "KaPor" where buildings contain many redundant nodes.
+Built-in Simplify Way operation has been shown as inappropriate for this.
+
+Enjoy!
+
+Author: Martin Zdila <m.zdila@gmail.com>
+
Index: /applications/editors/josm/plugins/SimplifyArea/build.xml
===================================================================
--- /applications/editors/josm/plugins/SimplifyArea/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SimplifyArea/build.xml	(revision 36424)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="SimplifyArea" default="dist" basedir=".">
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="Initial commit"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+   	
+    <!-- Configure these properties (replace "..." accordingly).
+         See https://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
+    -->
+    <property name="plugin.author" value="Martin Ždila &lt;m.zdila@gmail.com&gt;"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.simplifyarea.SimplifyAreaPlugin"/>
+    <property name="plugin.description" value="Simplify area by removing nodes on very obtuse angles. This can be constrained by maximum removed area size. Also average nearby nodes."/>
+    <property name="plugin.icon" value="images/preferences/simplifyArea.png"/>
+    <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/JOSM/Plugins/SimplifyArea"/>
+    <property name="plugin.canloadatruntime" value="true"/>
+
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>                
+                
+</project>
Index: /applications/editors/josm/plugins/SimplifyArea/pom.xml
===================================================================
--- /applications/editors/josm/plugins/SimplifyArea/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/SimplifyArea/pom.xml	(revision 36424)
@@ -0,0 +1,45 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>SimplifyArea</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Martin Ždila</name>
+            <email>m.zdila@gmail.com</email>
+        </developer>
+    </developers>
+    <properties>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+        <plugin.author>Martin Ždila &lt;m.zdila@gmail.com&gt;</plugin.author>
+        <plugin.class>org.openstreetmap.josm.plugins.simplifyarea.SimplifyAreaPlugin</plugin.class>
+        <plugin.description>Simplify area by removing nodes on very obtuse angles. This can be constrained by maximum removed area size. Also average nearby nodes.</plugin.description>
+        <plugin.icon>images/preferences/simplifyArea.png</plugin.icon>
+        <plugin.link>https://wiki.openstreetmap.org/wiki/JOSM/Plugins/SimplifyArea</plugin.link>
+        <plugin.canloadatruntime>true</plugin.canloadatruntime>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                            <Plugin-Canloadatruntime>${plugin.canloadatruntime}</Plugin-Canloadatruntime>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaAction.java
===================================================================
--- /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaAction.java	(revision 36424)
@@ -0,0 +1,442 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.simplifyarea;
+
+import static java.lang.Math.cos;
+import static java.lang.Math.sin;
+import static java.lang.Math.toRadians;
+import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import javax.swing.JOptionPane;
+
+import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.command.ChangeNodesCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.DeleteCommand;
+import org.openstreetmap.josm.command.MoveCommand;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.UndoRedoHandler;
+import org.openstreetmap.josm.data.coor.ILatLon;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.HelpAwareOptionPane;
+import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Shortcut;
+
+public final class SimplifyAreaAction extends JosmAction {
+
+    public SimplifyAreaAction() {
+        super(tr("Simplify Area"), "simplify", tr("Delete unnecessary nodes from an area."),
+                Shortcut.registerShortcut("tools:simplifyArea", tr("More tools: {0}", tr("Simplify Area")), KeyEvent.VK_Y, Shortcut.CTRL_SHIFT),
+                true, "simplifyarea", true);
+    }
+
+    private static boolean confirmWayWithNodesOutsideBoundingBox() {
+        final ButtonSpec[] options = new ButtonSpec[] { new ButtonSpec(tr("Yes, delete nodes"), ImageProvider.get("ok"), tr("Delete nodes outside of downloaded data regions"), null),
+                new ButtonSpec(tr("No, abort"), ImageProvider.get("cancel"), tr("Cancel operation"), null) };
+        return 0 == HelpAwareOptionPane.showOptionDialog(
+                MainApplication.getMainFrame(),
+                "<html>" + trn("The selected way has nodes outside of the downloaded data region.", "The selected ways have nodes outside of the downloaded data region.", 
+                        MainApplication.getLayerManager().getEditDataSet().getSelectedWays().size())
+                + "<br>" + tr("This can lead to nodes being deleted accidentally.") + "<br>" + tr("Do you want to delete them anyway?") + "</html>",
+                tr("Delete nodes outside of data regions?"), JOptionPane.WARNING_MESSAGE, null, // no special icon
+                options, options[0], null);
+    }
+
+    private void alertSelectAtLeastOneWay() {
+        HelpAwareOptionPane.showOptionDialog(MainApplication.getMainFrame(), tr("Please select at least one way to simplify."), tr("Warning"), JOptionPane.WARNING_MESSAGE, null);
+    }
+
+    private boolean confirmSimplifyManyWays(final int numWays) {
+        final ButtonSpec[] options = new ButtonSpec[] { new ButtonSpec(tr("Yes"), ImageProvider.get("ok"), tr("Simplify all selected ways"), null),
+                new ButtonSpec(tr("Cancel"), ImageProvider.get("cancel"), tr("Cancel operation"), null) };
+        return 0 == HelpAwareOptionPane.showOptionDialog(MainApplication.getMainFrame(), tr("The selection contains {0} ways. Are you sure you want to simplify them all?", numWays), 
+                tr("Simplify ways?"),
+                JOptionPane.WARNING_MESSAGE, null, // no special icon
+                options, options[0], null);
+    }
+
+    @Override
+    public void actionPerformed(final ActionEvent e) {
+        final Collection<Way> ways = new LinkedHashSet<>(getLayerManager().getEditDataSet().getSelectedWays());
+        ways.removeIf(w -> !w.isUsable());
+        int checkRes = Command.checkOutlyingOrIncompleteOperation(ways, null);
+        if ((checkRes & Command.IS_OUTSIDE) != 0) {
+            if (!confirmWayWithNodesOutsideBoundingBox())
+                return;
+        }
+        if (ways.isEmpty()) {
+            alertSelectAtLeastOneWay();
+            return;
+        } else if (ways.size() > 10) {
+            if (!confirmSimplifyManyWays(ways.size())) {
+                return;
+            }
+        }
+
+        final List<Node> nodesToDelete = new ArrayList<>(); // can contain duplicate instances
+
+        for (final Way way : ways) {
+            addNodesToDelete(nodesToDelete, way);
+        }
+
+        final Map<Node, Integer> nodeCountMap = new HashMap<>();
+        for (final Node node : nodesToDelete) {
+            Integer count = nodeCountMap.get(node);
+            if (count == null) {
+                count = 0;
+            }
+            nodeCountMap.put(node, ++count);
+        }
+
+        final Collection<Node> nodesReallyToRemove = new ArrayList<>();
+
+        for (final Entry<Node, Integer> entry : nodeCountMap.entrySet()) {
+            final Node node = entry.getKey();
+            final Integer count = entry.getValue();
+
+            if (!node.isTagged() && node.getReferrers().size() == count) {
+                nodesReallyToRemove.add(node);
+            }
+        }
+
+        final Collection<Command> allCommands = new ArrayList<>();
+        Map<Way, List<Node>> modifiedWays = new HashMap<>();
+
+        if (!nodesReallyToRemove.isEmpty()) {
+            for (final Way way : ways) {
+                final List<Node> nodes = way.getNodes();
+                final boolean closed = nodes.get(0).equals(nodes.get(nodes.size() - 1));
+                if (closed) {
+                    nodes.remove(nodes.size() - 1);
+                }
+
+                if (nodes.removeAll(nodesReallyToRemove)) {
+                    if (closed) {
+                        nodes.add(nodes.get(0));
+                    }
+                    allCommands.add(new ChangeNodesCommand(way, nodes));
+                    modifiedWays.put(way, nodes);
+                }
+            }
+
+            allCommands.add(new DeleteCommand(nodesReallyToRemove));
+        }
+
+        final Collection<Command> avgCommands = averageNearbyNodes(ways, nodesReallyToRemove, modifiedWays);
+        if (avgCommands != null && !avgCommands.isEmpty()) {
+            allCommands.add(new SequenceCommand(tr("average nearby nodes"), avgCommands));
+        }
+
+        if (!allCommands.isEmpty()) {
+            final SequenceCommand rootCommand = new SequenceCommand(trn("Simplify {0} way", "Simplify {0} ways", modifiedWays.size(), modifiedWays.size()), allCommands);
+            UndoRedoHandler.getInstance().add(rootCommand);
+            MainApplication.getMap().repaint();
+        }
+    }
+
+    private static boolean nodeGluesWays(final Node node) {
+        Set<Node> referenceNeighbours = null;
+        for (final OsmPrimitive ref : node.getReferrers()) {
+            if (ref.getType() == OsmPrimitiveType.WAY) {
+                final Way way = ((Way) ref);
+                final Set<Node> neighbours = way.getNeighbours(node);
+                if (referenceNeighbours == null) {
+                    referenceNeighbours = neighbours;
+                } else if (!referenceNeighbours.containsAll(neighbours)) {
+                    return true;
+                }
+            }
+        }
+        
+        return false;
+    }
+
+    // average nearby nodes
+    private static Collection<Command> averageNearbyNodes(final Collection<Way> ways, final Collection<Node> nodesAlreadyDeleted, Map<Way, List<Node>> modifiedWays) {
+        final double mergeThreshold = Config.getPref().getDouble(SimplifyAreaPreferenceSetting.MERGE_THRESHOLD, 0.2);
+
+        final Map<Node, LatLon> coordMap = new HashMap<>();
+        for (final Way way : ways) {
+            for (final Node n : way.getNodes()) {
+                coordMap.put(n, n.getCoor());
+            }
+        }
+
+        coordMap.keySet().removeAll(nodesAlreadyDeleted);
+
+        for (final Way w : ways) {
+            final List<Node> nodes = w.getNodes();
+
+            final Node lastNode = nodes.get(nodes.size() - 1);
+            final boolean closed = nodes.get(0).equals(lastNode);
+            if (closed) {
+                nodes.remove(lastNode);
+            }
+
+            nodes.retainAll(coordMap.keySet()); // removes already deleted nodes
+
+            while (true) {
+                double minDist = Double.POSITIVE_INFINITY;
+                Node node1 = null;
+                Node node2 = null;
+
+                final int len = nodes.size();
+                if (len == 0) {
+                    break;
+                }
+
+                // find smallest distance
+                for (int i = 0; i <= len; i++) {
+                    final Node n1 = nodes.get(i % len);
+                    final Node n2 = nodes.get((i + 1) % len);
+
+                    if (n1.isTagged() || n2.isTagged()) {
+                        continue;
+                    }
+
+                    // test if both nodes are on the same ways
+                    final List<OsmPrimitive> referrers = n1.getReferrers();
+                    if (!ways.containsAll(referrers)) {
+                        continue;
+                    }
+
+                    final List<OsmPrimitive> referrers2 = n2.getReferrers();
+                    if (!ways.containsAll(referrers2)) {
+                        continue;
+                    }
+
+                    // test if both nodes have same parents
+                    if (referrers.size() != referrers2.size() || !referrers2.containsAll(referrers)) {
+                        continue;
+                    }
+
+                    final ILatLon a = coordMap.get(n1);
+                    final ILatLon b = coordMap.get(n2);
+                    
+                    if (a != null && b != null) {
+                        final double dist = a.greatCircleDistance(b);
+                        if (dist < minDist && dist < mergeThreshold) {
+                            minDist = dist;
+                            node1 = n1;
+                            node2 = n2;
+                        }
+                    }
+                }
+
+                if (node1 == null || node2 == null) {
+                    break;
+                }
+
+                final LatLon coord = coordMap.get(node1).getCenter(coordMap.get(node2));
+                coordMap.put(node1, coord);
+
+                nodes.remove(node2);
+                coordMap.remove(node2);
+            }
+        }
+
+        final Collection<Command> commands = new ArrayList<>();
+        final Set<Node> nodesToDelete2 = new HashSet<>();
+        for (final Way way : ways) {
+            final List<Node> nodesToDelete = way.getNodes();
+            nodesToDelete.removeAll(nodesAlreadyDeleted);
+            if (nodesToDelete.removeAll(coordMap.keySet())) {
+                nodesToDelete2.addAll(nodesToDelete);
+                final List<Node> nodes = way.getNodes();
+                final boolean closed = nodes.get(0).equals(nodes.get(nodes.size() - 1));
+                if (closed) {
+                    nodes.remove(nodes.size() - 1);
+                }
+                nodes.retainAll(coordMap.keySet());
+                if (closed) {
+                    nodes.add(nodes.get(0));
+                }
+
+                if (!way.getNodes().equals(nodes)) {
+                    List<Node> nodes1 = modifiedWays.get(way);
+                    if (nodes1 == null || !nodes.equals(nodes1)) {
+                        commands.add(new ChangeNodesCommand(way, nodes));
+                        modifiedWays.put(way, nodes);
+                    }
+                }
+            }
+        }
+
+        if (!nodesToDelete2.isEmpty()) {
+            commands.add(new DeleteCommand(nodesToDelete2));
+        }
+
+        for (final Entry<Node, LatLon> entry : coordMap.entrySet()) {
+            final Node node = entry.getKey();
+            final LatLon coord = entry.getValue();
+            if (!node.getCoor().equals(coord)) {
+                commands.add(new MoveCommand(node, coord));
+            }
+        }
+
+        return commands;
+    }
+
+    private static void addNodesToDelete(final Collection<Node> nodesToDelete, final Way w) {
+        final double angleThreshold = Config.getPref().getDouble(SimplifyAreaPreferenceSetting.ANGLE_THRESHOLD, 10);
+        final double angleFactor = Config.getPref().getDouble(SimplifyAreaPreferenceSetting.ANGLE_FACTOR, 1.0);
+        final double areaThreshold = Config.getPref().getDouble(SimplifyAreaPreferenceSetting.AREA_THRESHOLD, 5.0);
+        final double areaFactor = Config.getPref().getDouble(SimplifyAreaPreferenceSetting.AREA_FACTOR, 1.0);
+        final double distanceThreshold = Config.getPref().getDouble(SimplifyAreaPreferenceSetting.DIST_THRESHOLD, 3);
+        final double distanceFactor = Config.getPref().getDouble(SimplifyAreaPreferenceSetting.DIST_FACTOR, 3);
+
+        final List<Node> nodes = w.getNodes();
+        final int size = nodes.size();
+
+        if (size == 0) {
+            return;
+        }
+
+        final boolean closed = nodes.get(0).equals(nodes.get(size - 1));
+
+        if (closed) {
+            nodes.remove(size - 1); // remove end node ( = start node)
+        }
+
+        // remove nodes within threshold
+
+        final List<Double> weightList = new ArrayList<>(nodes.size()); // weight cache
+        for (int i = 0; i < nodes.size(); i++) {
+            weightList.add(null);
+        }
+
+        while (true) {
+            Node prevNode = null;
+            LatLon coord1 = null;
+            LatLon coord2 = null;
+            int prevIndex = -1;
+
+            double minWeight = Double.POSITIVE_INFINITY;
+            Node bestMatch = null;
+
+            final int size2 = nodes.size();
+
+            if (size2 == 0) {
+                break;
+            }
+
+            for (int i = 0, len = size2 + (closed ? 2 : 1); i < len; i++) {
+                final int index = i % size2;
+
+                final Node n = nodes.get(index);
+                final LatLon coord3 = n.getCoor();
+
+                if (coord1 != null) {
+                    final double weight;
+
+                    if (weightList.get(prevIndex) == null) {
+                        final double angleWeight = computeConvectAngle(coord1, coord2, coord3) / angleThreshold;
+                        final double areaWeight = computeArea(coord1, coord2, coord3) / areaThreshold;
+                        final double distanceWeight = Math.abs(crossTrackError(coord1, coord2, coord3)) / distanceThreshold;
+
+                        weight = (!closed && i == len - 1) || // don't remove last node of the not closed way
+                                nodeGluesWays(prevNode) ||
+                                angleWeight > 1.0 || areaWeight > 1.0 || distanceWeight > 1.0 ? Double.POSITIVE_INFINITY :
+                                angleWeight * angleFactor + areaWeight * areaFactor + distanceWeight * distanceFactor;
+
+                        weightList.set(prevIndex, weight);
+                    } else {
+                        weight = weightList.get(prevIndex);
+                    }
+
+                    if (weight < minWeight) {
+                        minWeight = weight;
+                        bestMatch = prevNode;
+                    }
+                }
+
+                coord1 = coord2;
+                coord2 = coord3;
+                prevNode = n;
+                prevIndex = index;
+            }
+
+            if (bestMatch == null) {
+                break;
+            }
+
+            final int index = nodes.indexOf(bestMatch);
+
+            weightList.set((index - 1 + size2) % size2, null);
+            weightList.set((index + 1 + size2) % size2, null);
+            weightList.remove(index);
+            nodes.remove(index);
+        }
+
+        final HashSet<Node> delNodes = new HashSet<>(w.getNodes());
+        delNodes.removeAll(nodes);
+
+        nodesToDelete.addAll(delNodes);
+    }
+
+    public static double computeConvectAngle(final ILatLon coord1, final ILatLon coord2, final ILatLon coord3) {
+        final double angle = Math.abs(heading(coord2, coord3) - heading(coord1, coord2));
+        return Math.toDegrees(angle < Math.PI ? angle : 2 * Math.PI - angle);
+    }
+
+    public static double computeArea(final ILatLon coord1, final ILatLon coord2, final ILatLon coord3) {
+        final double a = coord1.greatCircleDistance(coord2);
+        final double b = coord2.greatCircleDistance(coord3);
+        final double c = coord3.greatCircleDistance(coord1);
+
+        final double p = (a + b + c) / 2.0;
+
+        final double q = p * (p - a) * (p - b) * (p - c); // I found this negative in one case (:-o) when nodes were in line on a small area
+        return q < 0.0 ? 0.0 : Math.sqrt(q);
+    }
+
+    public static final double R = 6378135;
+
+    public static double crossTrackError(final ILatLon l1, final ILatLon l2, final ILatLon l3) {
+        return R * Math.asin(sin(l1.greatCircleDistance(l2) / R) * sin(heading(l1, l2) - heading(l1, l3)));
+    }
+
+    public static double heading(final ILatLon a, final ILatLon b) {
+        double hd = Math.atan2(sin(toRadians(a.lon() - b.lon())) * cos(toRadians(b.lat())),
+                cos(toRadians(a.lat())) * sin(toRadians(b.lat())) -
+                sin(toRadians(a.lat())) * cos(toRadians(b.lat())) * cos(toRadians(a.lon() - b.lon())));
+        hd %= 2 * Math.PI;
+        if (hd < 0) {
+            hd += 2 * Math.PI;
+        }
+        return hd;
+    }
+
+    @Override
+    protected void updateEnabledState() {
+        if (getLayerManager().getEditDataSet() == null) {
+            setEnabled(false);
+        } else {
+            updateEnabledState(getLayerManager().getEditDataSet().getSelected());
+        }
+    }
+
+    @Override
+    protected void updateEnabledState(final Collection<? extends OsmPrimitive> selection) {
+        setEnabled(selection != null && !selection.isEmpty());
+    }
+}
Index: /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaPlugin.java
===================================================================
--- /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaPlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaPlugin.java	(revision 36424)
@@ -0,0 +1,21 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.simplifyarea;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginInformation;
+
+public class SimplifyAreaPlugin extends Plugin {
+
+    public SimplifyAreaPlugin(final PluginInformation info) {
+        super(info);
+        MainMenu.add(MainApplication.getMenu().moreToolsMenu, new SimplifyAreaAction());
+    }
+
+    @Override
+    public PreferenceSetting getPreferenceSetting() {
+        return new SimplifyAreaPreferenceSetting();
+    }
+}
Index: /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaPreferenceSetting.java
===================================================================
--- /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaPreferenceSetting.java	(revision 36424)
+++ /applications/editors/josm/plugins/SimplifyArea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaPreferenceSetting.java	(revision 36424)
@@ -0,0 +1,93 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.simplifyarea;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import javax.swing.Box;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
+import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
+import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.tools.GBC;
+
+public class SimplifyAreaPreferenceSetting extends DefaultTabPreferenceSetting {
+
+    static final String DIST_FACTOR = "simplify-area.dist.factor";
+    static final String DIST_THRESHOLD = "simplify-area.dist.threshold";
+    static final String AREA_FACTOR = "simplify-area.area.factor";
+    static final String AREA_THRESHOLD = "simplify-area.area.threshold";
+    static final String ANGLE_FACTOR = "simplify-area.angle.factor";
+    static final String ANGLE_THRESHOLD = "simplify-area.angle.threshold";
+    static final String MERGE_THRESHOLD = "simplify-area.merge.threshold";
+
+    private final JTextField mergeThreshold = new JosmTextField(8);
+    private final JTextField angleThreshold = new JosmTextField(8);
+    private final JTextField angleFactor = new JosmTextField(8);
+    private final JTextField areaThreshold = new JosmTextField(8);
+    private final JTextField areaFactor = new JosmTextField(8);
+    private final JTextField distanceThreshold = new JosmTextField(8);
+    private final JTextField distanceFactor = new JosmTextField(8);
+
+    public SimplifyAreaPreferenceSetting() {
+        super("simplifyArea", tr("Simplify Area"), tr("Node of the way (area) is removed if all of <u>Angle Weight</u>, <u>Area Weight</u> and <u>Distance Weight</u> are greater than 1. " +
+                "<u>Weight</u> is computed as <u>Value</u> / <u>Threshold</u>, where <u>Value</u> is one of <u>Angle</u>, <u>Area</u> and <u>Distance</u> " +
+                "computed from every three adjanced points of the way." +
+                "<ul><li><u>Value</u> of <u>Angle</u> is angle in degrees on the second node</li>" +
+                "<li><u>Value</u> of <u>Area</u> is area formed by triangle</li>" +
+                "<li><u>Value</u> of the <u>Distance</u> is Cross Track Error Distance</li></ul>" +
+                "All three <u>Weight</u>s multiplied by its <u>Factor</u>s are summed and node of the lowest sum is removed first. " +
+                "Removal continues until there is no node to remove." +
+                "Merge Nearby Nodes is another step of the simplification that merges adjanced nodes that are closer than <u>Threshold</u> meters."));
+    }
+
+    @Override
+    public void addGui(final PreferenceTabbedPane gui) {
+        final JPanel tab = gui.createPreferenceTab(this);
+
+        angleThreshold.setText(Config.getPref().get(ANGLE_THRESHOLD, "10"));
+        tab.add(new JLabel(tr("Angle Threshold")), GBC.std());
+        tab.add(angleThreshold, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
+
+        angleFactor.setText(Config.getPref().get(ANGLE_FACTOR, "1.0"));
+        tab.add(new JLabel(tr("Angle Factor")), GBC.std());
+        tab.add(angleFactor, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
+
+        areaThreshold.setText(Config.getPref().get(AREA_THRESHOLD, "5.0"));
+        tab.add(new JLabel(tr("Area Threshold")), GBC.std());
+        tab.add(areaThreshold, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
+
+        areaFactor.setText(Config.getPref().get(AREA_FACTOR, "1.0"));
+        tab.add(new JLabel(tr("Area Factor")), GBC.std());
+        tab.add(areaFactor, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
+
+        distanceThreshold.setText(Config.getPref().get(DIST_THRESHOLD, "3"));
+        tab.add(new JLabel(tr("Distance Threshold")), GBC.std());
+        tab.add(distanceThreshold, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
+
+        distanceFactor.setText(Config.getPref().get(DIST_FACTOR, "3"));
+        tab.add(new JLabel(tr("Distance Factor")), GBC.std());
+        tab.add(distanceFactor, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
+
+        mergeThreshold.setText(Config.getPref().get(MERGE_THRESHOLD, "0.2"));
+        tab.add(new JLabel(tr("Merge Nearby Nodes Threshold")), GBC.std());
+        tab.add(mergeThreshold, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
+
+        tab.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.VERTICAL));
+    }
+
+    @Override
+    public boolean ok() {
+        Config.getPref().put(MERGE_THRESHOLD, mergeThreshold.getText());
+        Config.getPref().put(ANGLE_THRESHOLD, angleThreshold.getText());
+        Config.getPref().put(ANGLE_FACTOR, angleFactor.getText());
+        Config.getPref().put(AREA_THRESHOLD, areaThreshold.getText());
+        Config.getPref().put(AREA_FACTOR, areaFactor.getText());
+        Config.getPref().put(DIST_THRESHOLD, distanceThreshold.getText());
+        Config.getPref().put(DIST_FACTOR, distanceFactor.getText());
+        return false;
+    }
+}
Index: /applications/editors/josm/plugins/Tracer/build.xml
===================================================================
--- /applications/editors/josm/plugins/Tracer/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/build.xml	(revision 36424)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="Tracer" default="dist" basedir=".">
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="Tracer plugin can load at runtime"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+    <property name="plugin.canloadatruntime" value="true"/>
+
+    <property name="plugin.author" value="Jan Bilak, Petr Dlouhý"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.tracer.TracerPlugin"/>
+    <property name="plugin.description" value="Traces buildings from Czech cadastral map. Needs TracerServer (.NET or Mono) to be running."/>
+    <property name="plugin.icon" value="images/mapmode/tracer-sml.png"/>
+    <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/JOSM/Plugins/Tracer"/>
+
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>
+</project>
Index: /applications/editors/josm/plugins/Tracer/changelog.txt
===================================================================
--- /applications/editors/josm/plugins/Tracer/changelog.txt	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/changelog.txt	(revision 36424)
@@ -0,0 +1,9 @@
+Changelog
+
+- Based on Lakewalker [Rodney Kinney, Brent Easton]
+- Initial version [Jan Bilak]
+- Edit mode [Petr Dlouhy]
+
+...
+
+- see SVN history
Index: /applications/editors/josm/plugins/Tracer/license.txt
===================================================================
--- /applications/editors/josm/plugins/Tracer/license.txt	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/license.txt	(revision 36424)
@@ -0,0 +1,339 @@
+      GNU GENERAL PUBLIC LICENSE
+           Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+        GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+          NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+      How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/Tracer/pom.xml
===================================================================
--- /applications/editors/josm/plugins/Tracer/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/pom.xml	(revision 36424)
@@ -0,0 +1,49 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>tracer</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Jan Bilak</name>
+        </developer>
+        <developer>
+            <name>Petr Dlouhý</name>
+        </developer>
+    </developers>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+        <plugin.canloadatruntime>true</plugin.canloadatruntime>
+
+        <plugin.author>Jan Bilak, Petr Dlouhý</plugin.author>
+        <plugin.class>org.openstreetmap.josm.plugins.tracer.TracerPlugin</plugin.class>
+        <plugin.description>Traces buildings from Czech cadastral map. Needs TracerServer (.NET or Mono) to be running.</plugin.description>
+        <plugin.icon>images/mapmode/tracer-sml.png</plugin.icon>
+        <plugin.link>https://wiki.openstreetmap.org/wiki/JOSM/Plugins/Tracer</plugin.link>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                            <Plugin-Canloadatruntime>${plugin.canloadatruntime}</Plugin-Canloadatruntime>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java
===================================================================
--- /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java	(revision 36424)
@@ -0,0 +1,244 @@
+/**
+ * Tracer - plugin for JOSM
+ * Jan Bilak, Petr Dlouhý
+ * This program is free software and licensed under GPL.
+ */
+
+package org.openstreetmap.josm.plugins.tracer;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.DeleteCommand;
+import org.openstreetmap.josm.command.MoveCommand;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.coor.ILatLon;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.BBox;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.tools.Pair;
+
+public class ConnectWays {
+    final static double MIN_DISTANCE = 0.000005; //Minimal distance, when nodes are merged
+    final static double MIN_DISTANCE_TW = 0.000005; //Minimal distance, when node is connected to other way
+    final static double MIN_DISTANCE_SQ = 0.000005; //Minimal distance, when other node is connected this way
+    final static double MAX_ANGLE = 30; //Minimal angle, when other node is connected this way
+
+    /**
+     * Try connect way to other buidings.
+     * @param way Way to connect.
+     * @return Commands.
+     */
+    public static Command connect(Way way) {
+        Map<Way, Way> modifiedWays = new HashMap<>();
+        LinkedList<Command> cmds = new LinkedList<>();
+        Way newWay = new Way(way);
+        for (int i = 0; i < way.getNodesCount() - 1; i++) {
+            Node n = way.getNode(i);
+            System.out.println("-------");
+            System.out.println("Node: " + n);
+            LatLon ll = n.getCoor();
+            BBox bbox = new BBox(
+                    n.lon() - MIN_DISTANCE,
+                    n.lat() - MIN_DISTANCE,
+                    n.lon() + MIN_DISTANCE,
+                    n.lat() + MIN_DISTANCE);
+
+            // bude se node slucovat s jinym?
+            double minDistanceSq = MIN_DISTANCE;
+            List<Node> nodes = MainApplication.getLayerManager().getEditDataSet().searchNodes(bbox);
+            Node nearestNode = null;
+            for (Node nn : nodes) {
+                if (!nn.isUsable() || way.containsNode(nn) || newWay.containsNode(nn) || !isInBuilding(nn)) {
+                    continue;
+                }
+                double dist = nn.getCoor().distance(ll);
+                if (dist < minDistanceSq) {
+                    minDistanceSq = dist;
+                    nearestNode = nn;
+                }
+            }
+
+            System.out.println("Nearest: " + nearestNode);
+            if (nearestNode == null) {
+                tryConnectNodeToAnyWay(n, modifiedWays);
+            } else {
+                cmds.addAll(mergeNodes(n, nearestNode, newWay));
+            }
+        }
+
+        for(Map.Entry<Way, Way> e : modifiedWays.entrySet()){
+            cmds.add(new ChangeCommand(e.getKey(), e.getValue()));
+        }
+
+        cmds.addFirst(new ChangeCommand(way, trySplitWayByAnyNodes(newWay)));
+
+        Command cmd = new SequenceCommand(tr("Merge objects nodes"), cmds);
+        return cmd;
+    }
+
+    /**
+     * Merges two nodes
+     * @param n1 First node
+     * @param n2 Second node
+     * @param way Way containing first node
+     * @return List of Commands.
+     */
+    private static List<Command> mergeNodes(Node n1, Node n2, Way way){
+        List<Command> cmds = new LinkedList<>();
+        cmds.add(new MoveCommand(n2,
+                 (n1.getEastNorth().getX() - n2.getEastNorth().getX())/2,
+                 (n1.getEastNorth().getY() - n2.getEastNorth().getY())/2
+                 ));
+
+        int j = way.getNodes().indexOf(n1);
+        way.addNode(j, n2);
+        if (j == 0) {
+            // first + last point
+            way.addNode(way.getNodesCount(), n2);
+        }
+        way.removeNode(n1);
+
+        cmds.add(new DeleteCommand(n1));
+        return cmds;
+    }
+
+    /**
+     * Try connect node "node" to way of other building.
+     *
+     * Zkusi zjistit, zda node neni tak blizko nejake usecky existujici budovy,
+     * ze by mel byt zacnenen do teto usecky. Pokud ano, provede to.
+     *
+     * @param node Node to connect.
+     * @throws IllegalStateException
+     * @throws IndexOutOfBoundsException
+     * @return List of Commands.
+     */
+    private static void tryConnectNodeToAnyWay(Node node, Map<Way, Way> m)
+            throws IllegalStateException, IndexOutOfBoundsException {
+
+        LatLon ll = node.getCoor();
+        BBox bbox = new BBox(
+                node.lon() - MIN_DISTANCE_TW,
+                node.lat() - MIN_DISTANCE_TW,
+                node.lon() + MIN_DISTANCE_TW,
+                node.lat() + MIN_DISTANCE_TW);
+
+        // node nebyl slouceny s jinym
+        // hledani pripadne blizke usecky, kam bod pridat
+        List<Way> ways = MainApplication.getLayerManager().getEditDataSet().searchWays(bbox);
+        double minDist = Double.MAX_VALUE;
+        Way nearestWay = null;
+        int nearestNodeIndex = 0;
+        for (Way ww : ways) {
+            if (!ww.isUsable() || ww.containsNode(node) || !isBuilding(ww)) {
+                continue;
+            }
+
+            if(m.get(ww) != null){
+                ww = m.get(ww);
+            }
+
+            for (Pair<Node, Node> np : ww.getNodePairs(false)) {
+                double dist = TracerGeometry.distanceFromSegment(ll, np.a, np.b);
+                if (dist < minDist) {
+                    minDist = dist;
+                    nearestWay = ww;
+                    nearestNodeIndex = ww.getNodes().indexOf(np.a);
+                }
+            }
+        }
+        System.out.println("Nearest way: " + nearestWay + " distance: " + minDist);
+        if (minDist < MIN_DISTANCE_TW) {
+            Way newNWay = new Way(nearestWay);
+
+            newNWay.addNode(nearestNodeIndex + 1, node);
+            System.out.println("New way:" + newNWay);
+
+            m.put(nearestWay, newNWay);
+        }
+    }
+
+    /**
+     * Try split way by any existing buiding nodes.
+     *
+     * Zkusi zjistit zda nejake usecka z way by nemela prochazet nejakym existujicim bodem,
+     * ktery je ji velmi blizko. Pokud ano, tak puvodni usecku rozdeli na dve tak, aby
+     * prochazela takovym bodem.
+     *
+     * @param way Way to split.
+     * @throws IndexOutOfBoundsException
+     * @throws IllegalStateException
+     * @return Modified way
+     */
+    private static Way trySplitWayByAnyNodes(Way way)
+            throws IndexOutOfBoundsException, IllegalStateException {
+
+        // projdi kazdou novou usecku a zjisti, zda by nemela vest pres existujici body
+        int i = 0;
+        while (i < way.getNodesCount()) {
+            // usecka n1, n2
+            Node n1 = way.getNodes().get(i);
+            Node n2 = way.getNodes().get((i + 1) % way.getNodesCount());
+            System.out.println(way.getNodes().get(i) + "-----" + way.getNodes().get((i + 1) % way.getNodesCount()));
+            double minDistanceSq = MIN_DISTANCE_SQ;
+            //double maxAngle = MAX_ANGLE;
+            List<Node> nodes = MainApplication.getLayerManager().getEditDataSet().searchNodes(new BBox(
+                Math.min(n1.lon(), n2.lon()) - minDistanceSq,
+                Math.min(n1.lat(), n2.lat()) - minDistanceSq,
+                Math.max(n1.lon(), n2.lon()) + minDistanceSq,
+                Math.max(n1.lat(), n2.lat()) + minDistanceSq
+            ));
+            Node nearestNode = null;
+            for (Node nod : nodes) {
+                if (!nod.isUsable() || way.containsNode(nod) || !isInBuilding(nod)) {
+                    continue;
+                }
+                double dist = TracerGeometry.distanceFromSegment(nod, n1, n2);
+                double angle = TracerGeometry.angleOfLines(n1, nod, nod, n2);
+                System.out.println("Angle: " + angle + " distance: " + dist + " Node: " + nod);
+                if (!n1.equalsEpsilon(nod, ILatLon.MAX_SERVER_PRECISION)
+                 && !n2.equalsEpsilon(nod, ILatLon.MAX_SERVER_PRECISION) && dist < minDistanceSq) { // && Math.abs(angle) < maxAngle) {
+                    //maxAngle = angle;
+                    nearestNode = nod;
+                }
+            }
+            System.out.println("Nearest_: " + nearestNode);
+            System.out.println("");
+            if (nearestNode == null) {
+                // tato usecka se nerozdeli
+                i++;
+                continue;
+            } else {
+                // rozdeleni usecky
+                way.addNode(i + 1, nearestNode);
+                continue; // i nezvetsuji, treba bude treba rozdelit usecku znovu
+            }
+        }
+        return way;
+    }
+
+    private static boolean isInBuilding(Node n) {
+        for (OsmPrimitive op : n.getReferrers()) {
+            if (op instanceof Way) {
+                if (isBuilding((Way) op)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private static boolean isBuilding(Way w) {
+        return (w.getKeys().get("building") == null ? false : w.getKeys().get("building").equals("yes"));
+    }
+}
Index: /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerAction.java
===================================================================
--- /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerAction.java	(revision 36424)
@@ -0,0 +1,198 @@
+/**
+ * Tracer - plugin for JOSM
+ * Jan Bilak
+ * This program is free software and licensed under GPL.
+ */
+package org.openstreetmap.josm.plugins.tracer;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Cursor;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+
+import org.openstreetmap.josm.actions.mapmode.MapMode;
+import org.openstreetmap.josm.command.AddCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.UndoRedoHandler;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Shortcut;
+import org.xml.sax.SAXException;
+
+class TracerAction extends MapMode implements MouseListener {
+
+    private static final long serialVersionUID = 1L;
+    protected boolean cancel;
+    private boolean ctrl;
+    private boolean alt;
+    private boolean shift;
+    protected TracerServer server = new TracerServer();
+
+    public TracerAction() {
+        super(tr("Tracer"), "tracer-sml", tr("Tracer."),
+            Shortcut.registerShortcut("tools:tracer", tr("More tools: {0}", tr("Tracer")), KeyEvent.VK_T, Shortcut.DIRECT), getCursor());
+    }
+
+    @Override
+    public void enterMode() {
+        if (!isEnabled()) {
+            return;
+        }
+        super.enterMode();
+        MainApplication.getMap().mapView.setCursor(getCursor());
+        MainApplication.getMap().mapView.addMouseListener(this);
+    }
+
+    @Override
+    public void exitMode() {
+        super.exitMode();
+        MainApplication.getMap().mapView.removeMouseListener(this);
+    }
+
+    private static Cursor getCursor() {
+        return ImageProvider.getCursor("crosshair", "tracer-sml");
+    }
+
+    protected void traceAsync(Point clickPoint) {
+        cancel = false;
+        /**
+         * Positional data
+         */
+        final LatLon pos = MainApplication.getMap().mapView.getLatLon(clickPoint.x, clickPoint.y);
+
+        try {
+            PleaseWaitRunnable tracerTask = new PleaseWaitRunnable(tr("Tracing")) {
+
+                @Override
+                protected void realRun() throws SAXException {
+                    traceSync(pos, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+                }
+
+                @Override
+                protected void finish() {
+                }
+
+                @Override
+                protected void cancel() {
+                    TracerAction.this.cancel();
+                }
+            };
+            Thread executeTraceThread = new Thread(tracerTask);
+            executeTraceThread.start();
+        } catch (Exception e) {
+            Logging.error(e);
+        }
+    }
+
+    private void tagBuilding(Way way) {
+        if(!alt) way.put("building", "yes");
+        way.put("source", "cuzk:km");
+    }
+
+    private void traceSync(LatLon pos, ProgressMonitor progressMonitor) {
+        Collection<Command> commands = new LinkedList<>();
+
+        progressMonitor.beginTask(null, 3);
+        try {
+            ArrayList<LatLon> coordList = server.trace(pos);
+
+            if (coordList.size() == 0) {
+                return;
+            }
+            
+            DataSet ds = MainApplication.getLayerManager().getEditDataSet();
+
+            // make nodes a way
+            Way way = new Way();
+            Node firstNode = null;
+            for (LatLon coord : coordList) {
+                Node node = new Node(coord);
+                if (firstNode == null) {
+                    firstNode = node;
+                }
+                commands.add(new AddCommand(ds, node));
+                way.addNode(node);
+            }
+            way.addNode(firstNode);
+
+            tagBuilding(way);
+            commands.add(new AddCommand(ds, way));
+
+            // connect to other buildings
+            if (!ctrl) {
+                commands.add(ConnectWays.connect(way));
+                }
+
+            if (!commands.isEmpty()) {
+                   UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Tracer building"), commands));
+
+                if (shift) {
+                    ds.addSelected(way);
+                } else {
+                    ds.setSelected(way);
+                }
+            } else {
+                System.out.println("Failed");
+            }
+
+        } finally {
+            progressMonitor.finishTask();
+        }
+    }
+
+    public void cancel() {
+        cancel = true;
+    }
+
+    @Override
+    public void mouseClicked(MouseEvent e) {
+    }
+
+    @Override
+    public void mouseEntered(MouseEvent e) {
+    }
+
+    @Override
+    public void mouseExited(MouseEvent e) {
+    }
+
+    @Override
+    public void mousePressed(MouseEvent e) {
+        if (!MainApplication.getMap().mapView.isActiveLayerDrawable()) {
+            return;
+        }
+        requestFocusInMapView();
+        updateKeyModifiers(e);
+        if (e.getButton() == MouseEvent.BUTTON1) {
+            traceAsync(e.getPoint());
+        }
+    }
+
+    @Override
+    protected void updateKeyModifiers(MouseEvent e) {
+        ctrl = (e.getModifiers() & ActionEvent.CTRL_MASK) != 0;
+        alt = (e.getModifiers() & (ActionEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK)) != 0;
+        shift = (e.getModifiers() & ActionEvent.SHIFT_MASK) != 0;
+    }
+
+    @Override
+    public void mouseReleased(MouseEvent e) {
+    }
+}
+
Index: /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerException.java
===================================================================
--- /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerException.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerException.java	(revision 36424)
@@ -0,0 +1,20 @@
+/**
+ * Tracer - plugin for JOSM
+ * Jan Bilak
+ * This program is free software and licensed under GPL.
+ */
+
+package org.openstreetmap.josm.plugins.tracer;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+class TracerException extends Exception {
+
+    public TracerException() {
+        super(tr("An unknown error has occurred"));
+    }
+
+    public TracerException(String err) {
+        super(err);
+    }
+}
Index: /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerGeometry.java
===================================================================
--- /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerGeometry.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerGeometry.java	(revision 36424)
@@ -0,0 +1,66 @@
+/**
+ * Tracer - plugin for JOSM
+ * Jan Bilak
+ * This program is free software and licensed under GPL.
+ */
+
+package org.openstreetmap.josm.plugins.tracer;
+
+import org.openstreetmap.josm.data.coor.ILatLon;
+
+public final class TracerGeometry {
+    private TracerGeometry() {
+        // Hide constructor
+    }
+
+    /**
+     * Angle between line AB and CD
+     * @param a Point A.
+     * @param b Point B.
+     * @param c Point C.
+     * @param d Point D.
+     * @return Angle in degrees.
+     */
+    public static double angleOfLines(ILatLon a, ILatLon b, ILatLon c, ILatLon d) {
+        return (Math.abs(
+                    Math.atan2(a.lat() - b.lat(), a.lon() - b.lon()) -
+                    Math.atan2(c.lat() - d.lat(), c.lon() - d.lon())
+                ) / Math.PI * 180) % 360;
+    }
+
+    /**
+     * Distance of point C from line segment AB.
+     * @param c Point C.
+     * @param a Point A.
+     * @param b Point B.
+     * @return Distance.
+     */
+    public static double distanceFromSegment(ILatLon c, ILatLon a, ILatLon b) {
+        return distanceFromSegment(
+                c.lon(), c.lat(),
+                a.lon(), a.lat(),
+                b.lon(), b.lat()
+        );
+    }
+
+    private static double distanceFromSegment(double cx, double cy, double ax, double ay, double bx, double by) {
+        double r_numerator = (cx - ax) * (bx - ax) + (cy - ay) * (by - ay);
+        double r_denomenator = (bx - ax) * (bx - ax) + (by - ay) * (by - ay);
+        if(r_denomenator == 0)System.out.println("r_denomenator == 0    ------------");
+        double r = r_numerator / r_denomenator;
+        double s = ((ay - cy) * (bx - ax) - (ax - cx) * (by - ay)) / r_denomenator;
+        double distanceLine = Math.abs(s) * Math.sqrt(r_denomenator);
+
+        if ((r >= 0) && (r <= 1)) {
+            return distanceLine;
+        } else {
+            double dist1 = (cx - ax) * (cx - ax) + (cy - ay) * (cy - ay);
+            double dist2 = (cx - bx) * (cx - bx) + (cy - by) * (cy - by);
+            if (dist1 < dist2) {
+                return Math.sqrt(dist1);
+            } else {
+                return Math.sqrt(dist2);
+            }
+        }
+    }
+}
Index: /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerPlugin.java
===================================================================
--- /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerPlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerPlugin.java	(revision 36424)
@@ -0,0 +1,21 @@
+/**
+ * Tracer - plugin for JOSM
+ * Jan Bilak
+ * This program is free software and licensed under GPL.
+ */
+
+package org.openstreetmap.josm.plugins.tracer;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginInformation;
+
+public class TracerPlugin extends Plugin {
+
+    public TracerPlugin(PluginInformation info) {
+        super(info);
+        MainMenu.add(MainApplication.getMenu().moreToolsMenu, new TracerAction());
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerServer.java
===================================================================
--- /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerServer.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer/src/org/openstreetmap/josm/plugins/tracer/TracerServer.java	(revision 36424)
@@ -0,0 +1,75 @@
+/**
+ * Tracer - plugin for JOSM
+ * Jan Bilak
+ * This program is free software and licensed under GPL.
+ */
+
+package org.openstreetmap.josm.plugins.tracer;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+
+import org.openstreetmap.josm.data.coor.LatLon;
+
+public class TracerServer {
+
+    static final String URL = "http://localhost:5050/";
+
+    public TracerServer() {
+
+    }
+
+    /**
+     * Call Trace server.
+     * @param urlString Input parameters.
+     * @return Result text.
+     */
+    private String callServer(String urlString) {
+        try {
+            URL url = new URL(URL + urlString);
+            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
+
+            StringBuilder sb = new StringBuilder();
+            String line;
+            while ((line = reader.readLine()) != null) {
+                sb.append(line);
+            }
+            return sb.toString();
+        } catch (Exception e) {
+            return "";
+        }
+    }
+
+    /**
+     * Trace building on position.
+     * @param pos Position of building.
+     * @return Building border.
+     */
+    public ArrayList<LatLon> trace(LatLon pos) {
+        try {
+            String content = callServer("trace/simple/" + pos.lat() + ";" + pos.lon());
+            ArrayList<LatLon> nodelist = new ArrayList<>();
+            String[] lines = content.split("\\|");
+            for (String line : lines) {
+                String[] items = line.split(";");
+                double x = Double.parseDouble(items[0]);
+                double y = Double.parseDouble(items[1]);
+                nodelist.add(new LatLon(x, y));
+            }
+            return nodelist;
+        } catch (Exception e) {
+            return new ArrayList<>();
+        }
+    }
+
+    /**
+     * Log message to server.
+     * @param message Message to log.
+     */
+    public void log(String message) {
+        callServer("log/" + message);
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/.checkstyle
===================================================================
--- /applications/editors/josm/plugins/Tracer2/.checkstyle	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/.checkstyle	(revision 36424)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="JOSM" location="/JOSM/tools/checkstyle/josm_checks.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="JOSM" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="DerivedFiles" enabled="true"/>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="data"/>
+    <filter-data value="images"/>
+    <filter-data value="styles"/>
+    <filter-data value="resources"/>
+    <filter-data value="scripts"/>
+  </filter>
+</fileset-config>
Index: /applications/editors/josm/plugins/Tracer2/GPL-v2.0.txt
===================================================================
--- /applications/editors/josm/plugins/Tracer2/GPL-v2.0.txt	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/GPL-v2.0.txt	(revision 36424)
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/Tracer2/GPL-v3.0.txt
===================================================================
--- /applications/editors/josm/plugins/Tracer2/GPL-v3.0.txt	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/GPL-v3.0.txt	(revision 36424)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: /applications/editors/josm/plugins/Tracer2/LanguageGen/GetText.bat
===================================================================
--- /applications/editors/josm/plugins/Tracer2/LanguageGen/GetText.bat	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/LanguageGen/GetText.bat	(revision 36424)
@@ -0,0 +1,4 @@
+"C:\Program Files (x86)\GnuWin32\bin\xgettext" --files-from=files.txt --from-code=UTF-8 -k -ktrc:1c,2 -kmarktrc:1c,2 -ktr -kmarktr -ktrn:1,2 -ktrnc:1c,2,3
+pause
+"C:\Program Files (x86)\GnuWin32\bin\msgmerge" "messages_old.po" "messages.po"
+pause
Index: /applications/editors/josm/plugins/Tracer2/LanguageGen/files.txt
===================================================================
--- /applications/editors/josm/plugins/Tracer2/LanguageGen/files.txt	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/LanguageGen/files.txt	(revision 36424)
@@ -0,0 +1,17 @@
+..\src\org\openstreetmap\josm\plugins\tracer2\ConnectWays.java
+..\src\org\openstreetmap\josm\plugins\tracer2\StraightLine.java
+..\src\org\openstreetmap\josm\plugins\tracer2\TagValues.java
+..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java
+..\src\org\openstreetmap\josm\plugins\tracer2\TracerDebug.java
+..\src\org\openstreetmap\josm\plugins\tracer2\TracerException.java
+..\src\org\openstreetmap\josm\plugins\tracer2\TracerGeometry.java
+..\src\org\openstreetmap\josm\plugins\tracer2\TracerPlugin.java
+..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParam.java
+..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java
+..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamList.java
+..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java
+..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPreference.java
+..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamSelectDialog.java
+..\src\org\openstreetmap\josm\plugins\tracer2\server\GetTrace.java
+..\src\org\openstreetmap\josm\plugins\tracer2\server\GetVersion.java
+..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java
Index: /applications/editors/josm/plugins/Tracer2/LanguageGen/messages.po
===================================================================
--- /applications/editors/josm/plugins/Tracer2/LanguageGen/messages.po	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/LanguageGen/messages.po	(revision 36424)
@@ -0,0 +1,210 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-11-17 10:17+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\ConnectWays.java:204
+msgid "Merge objects nodes"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:77
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:260
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:130
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:142
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPreference.java:38
+msgid "Tracer2"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:77
+msgid "Tracer2."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:77
+#, java-format
+msgid "Tool: {0}"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:118
+#, java-format
+msgid "Change tag {0} to {1}"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:171
+msgid "Tracing"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:225
+#, java-format
+msgid ""
+"The Tracer2Server version isn''t compatible with this plugin. Please "
+"download version {0} from\n"
+"{1}."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:226
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:248
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:56
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:59
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:73
+msgid "Error"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:230
+#, java-format
+msgid ""
+"New version of Tracer2Server is available. For best results please upgrade "
+"to version {0}."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:230
+msgid "Information"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:248
+msgid "No set of parameter is active!"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:260
+msgid "Select parameter"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:333
+#, java-format
+msgid "Tracer2: add a way with {0} points"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:335
+#, java-format
+msgid "Tracer2: modify way to {0} points"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerException.java:31
+msgid "An unknown error has occurred"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParam.java:210
+msgid "Tracer2 error"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:130
+msgid "Parameter for server request"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:131
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:176
+msgid "OK"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:131
+msgid "Cancel"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:149
+msgid "Name:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:150
+msgid "Description:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:154
+msgid "URL:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:156
+msgid "Tile size:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:157
+msgid "Resolution:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:160
+msgid "Mode:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:161
+msgid "Threshold:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:163
+msgid "Points per circle:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:165
+msgid "Tag:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:166
+msgid "Preferred values:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:75
+msgid "Edit"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:88
+msgid "Delete"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:93
+#, java-format
+msgid "Delete parameter \"{0}\"?"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:94
+msgid "Are you sure?"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:113
+msgid "Add new"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:130
+msgid "Add predefined"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:142
+msgid "Select predefined parameter"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPreference.java:38
+msgid "Preferences"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPreference.java:38
+msgid "Modify list of parameter for server request."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamSelectDialog.java:87
+msgid "Parameter:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:55
+#, java-format
+msgid ""
+"Tracer2Server isn''t running. Please start the Server.\n"
+"If you don''t have the server, please download it from\n"
+"{1}."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:59
+msgid "Tracer2Server hasn''t found anything."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:73
+msgid "Tracer2Server has detected an error."
+msgstr ""
Index: /applications/editors/josm/plugins/Tracer2/LanguageGen/messages_old.po
===================================================================
--- /applications/editors/josm/plugins/Tracer2/LanguageGen/messages_old.po	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/LanguageGen/messages_old.po	(revision 36424)
@@ -0,0 +1,208 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-11-11 18:11+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\ConnectWays.java:204
+msgid "Merge objects nodes"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:77
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:260
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:130
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:142
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPreference.java:38
+msgid "Tracer2"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:77
+msgid "Tracer2."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:77
+#, java-format
+msgid "Tool: {0}"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:118
+#, java-format
+msgid "Change tag {0} to {1}"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:171
+msgid "Tracing"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:225
+#, java-format
+msgid ""
+"The Tracer2Server version isn''t compatible with this plugin. Please "
+"download version {0} from"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:226
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:248
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:56
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:59
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:73
+msgid "Error"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:230
+#, java-format
+msgid ""
+"New version of Tracer2Server is avalibel. For best results please upgrade to "
+"version {0}."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:230
+msgid "Information"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:248
+msgid "No set of parameter is activ!"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:260
+msgid "Select parameter"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:333
+#, java-format
+msgid "Tracer2 add a Way with {0} points"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerAction.java:335
+#, java-format
+msgid "Tracer2 modified Way to {0} points"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\TracerException.java:31
+msgid "An unknown error has occurred"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParam.java:210
+msgid "Tracer2 error"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:130
+msgid "Parameter for server request"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:131
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:176
+msgid "OK"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:131
+msgid "Cancel"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:149
+msgid "Name:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:150
+msgid "Description:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:154
+msgid "URL:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:156
+msgid "Tile size:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:157
+msgid "Resolution:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:160
+msgid "Mode:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:161
+msgid "Threshold:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:163
+msgid "Points per circle:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:165
+msgid "Tag:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamDialog.java:166
+msgid "Preferred values:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:75
+msgid "Edit"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:88
+msgid "Delete"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:93
+#, java-format
+msgid "Delete parameter \"{0}\"?"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:94
+msgid "Are you sure?"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:113
+msgid "Add new"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:130
+msgid "Add predefined"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPanel.java:142
+msgid "Select predefined parameter"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPreference.java:38
+msgid "Preferences"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamPreference.java:38
+msgid "Modify list of parameter for server request."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\preferences\ServerParamSelectDialog.java:87
+msgid "Parameter:"
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:55
+msgid ""
+"Tracer2Server isn''t running. Pleas start the Server.\n"
+"If you don''t have the Server please download it at\n"
+"http://sourceforge.net/projects/tracer2server/."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:59
+msgid "Tracer2Server has nothing found."
+msgstr ""
+
+#: ..\src\org\openstreetmap\josm\plugins\tracer2\server\Request.java:73
+msgid "Tracer2Server has an Error detected."
+msgstr ""
Index: /applications/editors/josm/plugins/Tracer2/README
===================================================================
--- /applications/editors/josm/plugins/Tracer2/README	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/README	(revision 36424)
@@ -0,0 +1,16 @@
+Tracer2 plugin
+==============
+
+Traces buildings and other shapes from a map.
+The plugin requires the Tracer2Server.
+It can be downloaded at http://sourceforge.net/projects/tracer2server.
+
+Author:
+    Dirk Bruenig <dirk@bruenig.de>
+
+License:
+    GPL-v2.0 or later.
+
+Acknowledgements:
+    This plugin based on the plugin "Tracer" by Jan Bilak and Petr Dlouhý.
+    Includes parts from the plugin "ext_tools" by Upliner.
Index: /applications/editors/josm/plugins/Tracer2/build.xml
===================================================================
--- /applications/editors/josm/plugins/Tracer2/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/build.xml	(revision 36424)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="Tracer2" default="dist" basedir=".">
+
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="see #josm11090"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+
+    <!-- Configure these properties (replace "..." accordingly).
+         See https://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
+    -->
+    <property name="plugin.author" value="Jan Bilak, Petr Dlouhý, Dirk Brünig"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.tracer2.TracerPlugin"/>
+    <property name="plugin.description" value="Traces buildings and other shapes from a map. Needs Tracer2Server to be running."/>
+    <property name="plugin.icon" value="images/mapmode/tracer2-sml.png"/>
+    <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/JOSM/Plugins/Tracer2"/>
+    <property name="plugin.canloadatruntime" value="true"/>
+	<!--<property name="plugin.early" value="..."/>-->
+    <!--<property name="plugin.requires" value="..."/>-->
+    <!--<property name="plugin.stage" value="..."/>-->
+    
+	<property name="josm" location="../../core/dist/josm-custom.jar"/>
+	<property name="plugin.dist.dir" value="../../dist"/>
+	
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>
+  
+</project>
Index: /applications/editors/josm/plugins/Tracer2/pom.xml
===================================================================
--- /applications/editors/josm/plugins/Tracer2/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/pom.xml	(revision 36424)
@@ -0,0 +1,50 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>tracer2</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Jan Bilak</name>
+        </developer>
+        <developer>
+            <name>Petr Dlouhý</name>
+        </developer>
+        <developer>
+            <name>Dirk Brünig</name>
+        </developer>
+    </developers>
+    <properties>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+        <plugin.author>Jan Bilak, Petr Dlouhý, Dirk Brünig</plugin.author>
+        <plugin.class>org.openstreetmap.josm.plugins.tracer2.TracerPlugin</plugin.class>
+        <plugin.description>Traces buildings and other shapes from a map. Needs Tracer2Server to be running.</plugin.description>
+        <plugin.icon>images/mapmode/tracer2-sml.png</plugin.icon>
+        <plugin.link>https://wiki.openstreetmap.org/wiki/JOSM/Plugins/Tracer2</plugin.link>
+        <plugin.canloadatruntime>true</plugin.canloadatruntime>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                            <Plugin-Canloadatruntime>${plugin.canloadatruntime}</Plugin-Canloadatruntime>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/Tracer2/resources/serverParam.cfg
===================================================================
--- /applications/editors/josm/plugins/Tracer2/resources/serverParam.cfg	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/resources/serverParam.cfg	(revision 36424)
@@ -0,0 +1,25 @@
+name=Germany - NRW - Building
+description=
+url=wms:http://www.wms.nrw.de/geobasis/wms_nw_alkis?FORMAT=image/png&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS=adv_alkis_gebaeude&STYLES=&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}
+tileSize=0.0002
+resolution=1024
+skipBottom=0
+mode=boundary
+threshold=127
+pointsPerCircle=16
+tag=building
+preferredValues=yes;house;garage
+enabled=true
+
+name=WMS mapy.geoportal.gov.pl - budynki
+description=Zbiór budynków według mapy.geoportal.gov.pl
+url=http://mapy.geoportal.gov.pl/wss/service/pub/guest/kompozycjaG2_TBD_WMS/MapServer/WMSServer?FORMAT=image/gif&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS=Bud_A&STYLES=&TRANSPARENT=TRUE&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}{header(User-Agent,Mozilla/5.0 (JOSM)}
+tileSize=0.0004
+resolution=1024
+skipBottom=0
+mode=boundary
+threshold=64
+pointsPerCircle=16
+tag=building
+preferredValues=yes;house;garage
+enabled=true
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java	(revision 36424)
@@ -0,0 +1,496 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.geom.Point2D;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.openstreetmap.josm.command.AddCommand;
+import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.DeleteCommand;
+import org.openstreetmap.josm.command.MoveCommand;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.coor.ILatLon;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.BBox;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParam;
+import org.openstreetmap.josm.tools.Pair;
+import org.openstreetmap.josm.tools.Utils;
+
+public final class ConnectWays {
+
+	private ConnectWays() {
+		// Hide default constructor for utilities classes
+	}
+
+	// CHECKSTYLE.OFF: SingleSpaceSeparator
+	static double s_dMinDistance     = 0.000006;  // Minimal distance, for objects
+	static double s_dMinDistanceN2N  = 0.0000005; // Minimal distance, when nodes are merged
+	static double s_dMinDistanceN2oW = 0.000001;  // Minimal distance, when node is connected to other way
+	static double s_dMinDistanceN2tW = 0.000001;  // Minimal distance, when other node is connected this way
+	static final double MAX_ANGLE    = 30;        // Minimal angle, when other node is connected this way
+	// CHECKSTYLE.ON: SingleSpaceSeparator
+
+	static Way s_oWay;
+	static Way s_oWayOld;
+	static List<Way> s_oWays;
+	static List<Node> s_oNodes;
+
+	static ServerParam s_oParam;
+	static boolean s_bCtrl;
+	static boolean s_bAlt;
+
+	static boolean s_bAddNewWay;
+
+	private static void calcDistance() {
+		double dTileSize = Double.parseDouble(s_oParam.getTileSize());
+		double dResolution = Double.parseDouble(s_oParam.getResolution());
+		double dMin = dTileSize / dResolution;
+
+		s_dMinDistance = dMin * 30;
+		s_dMinDistanceN2N = dMin * 2.5;
+		s_dMinDistanceN2oW = dMin * 5;
+		s_dMinDistanceN2tW = dMin * 5;
+	}
+
+	private static void getWays(Way way) {
+		BBox bbox = new BBox(way);
+		bbox.addPrimitive(way, s_dMinDistance);
+		s_oWays = MainApplication.getLayerManager().getEditDataSet().searchWays(bbox);
+	}
+
+	private static List<Way> getWaysOfNode(Node node) {
+		List<Way> ways;
+		ways = new LinkedList<>(Utils.filteredCollection(node.getReferrers(), Way.class));
+		return ways;
+	}
+
+	private static void getNodes(Way way) {
+		BBox bbox = new BBox(way);
+		bbox.addPrimitive(way, s_dMinDistance);
+		s_oNodes = MainApplication.getLayerManager().getEditDataSet().searchNodes(bbox);
+	}
+
+	private static double calcAlpha(LatLon oP1, Node oP2) {
+
+		double dAlpha = Math.atan((oP2.lat() - oP1.lat()) / (oP2.lon() - oP1.lon())) * 180 / Math.PI + (oP1.lon() > oP2.lon() ? 180 : 0);
+		return checkAlpha(dAlpha);
+	}
+
+	private static Double checkAlpha(Double dAlpha) {
+		if (dAlpha > 180) {
+			return dAlpha - 360;
+		}
+		if (dAlpha <= -180) {
+			return dAlpha + 360;
+		}
+		return dAlpha;
+	}
+
+	private static boolean isNodeInsideWay(LatLon pos, Way way) {
+		List<Node> listNode = way.getNodes();
+
+		double dAlpha;
+		double dAlphaOld = calcAlpha(pos, listNode.get(listNode.size()-1));
+		double dSumAlpha = 0;
+
+		for (Node n : listNode) {
+			dAlpha = calcAlpha(pos, n);
+			dSumAlpha += checkAlpha(dAlpha - dAlphaOld);
+			dAlphaOld = dAlpha;
+		}
+		dSumAlpha = Math.abs(dSumAlpha);
+
+		return dSumAlpha > 359 && dSumAlpha < 361;
+	}
+
+	private static Way getOldWay(LatLon pos) {
+		int i;
+
+		for (i = 0; i < s_oWays.size(); i++) {
+			Way way = s_oWays.get(i);
+			if (!isSameTag(way)) {
+				continue;
+			}
+			if (isNodeInsideWay(pos, way)) {
+				s_oWays.remove(way);
+				return way;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Try connect way to other buildings.
+	 * @param way Way to connect.
+	 * @return Commands.
+	 */
+	public static Command connect(Way newWay, LatLon pos, ServerParam param, boolean ctrl, boolean alt) {
+		LinkedList<Command> cmds = new LinkedList<>();
+		LinkedList<Command> cmds2 = new LinkedList<>();
+
+		s_oParam = param;
+		s_bCtrl = ctrl;
+		s_bAlt = alt;
+
+		boolean bAddWay = false;
+
+		calcDistance();
+		getNodes(newWay);
+		getWays(newWay);
+
+		s_oWayOld = getOldWay(pos);
+
+		if (s_oWayOld == null) {
+			s_bAddNewWay = true;
+			//cmds.add(new AddCommand(newWay));
+			bAddWay = true;
+			s_oWayOld = newWay;
+			s_oWay = new Way(newWay);
+		} else {
+			int i;
+			Way tempWay;
+			s_bAddNewWay = false;
+
+			//Main.main.getCurrentDataSet().setSelected(m_wayOld);
+
+			tempWay = new Way(s_oWayOld);
+
+			for (i = 0; i < newWay.getNodesCount(); i++) {
+				tempWay.addNode(tempWay.getNodesCount(), newWay.getNode(i));
+			}
+			i++;
+			for (i = 0; i < s_oWayOld.getNodesCount() - 1; i++) {
+				tempWay.removeNode(s_oWayOld.getNode(i));
+			}
+			//cmds.add(new ChangeCommand(m_wayOld, tempWay));
+			for (i = 0; i < s_oWayOld.getNodesCount() - 1; i++) {
+				Node n = s_oWayOld.getNode(i);
+				List<Way> ways = getWaysOfNode(n);
+				if (ways.size() <= 1) {
+					cmds2.add(new DeleteCommand(s_oWayOld.getNode(i)));
+				}
+				s_oNodes.remove(s_oWayOld.getNode(i));
+			}
+			s_oWay = tempWay;
+		}
+
+		cmds2.addAll(connectTo());
+		DataSet ds = MainApplication.getLayerManager().getEditDataSet();
+
+		// add new Node
+		Node firstNode = null;
+		Way way = new Way(s_oWay);
+		for (Node node : s_oWay.getNodes()) {
+			if (node.getDataSet() != null) {
+				way.removeNode(node);
+			}
+		}
+		if (way.getNodes().size() > 0) {
+			if (way.firstNode() != way.lastNode()) {
+				way.addNode(way.firstNode());
+			}
+			for (Node node : way.getNodes()) {
+				if (firstNode == null || firstNode != node) {
+					cmds.add(new AddCommand(ds, node));
+				}
+				if (firstNode == null) {
+					firstNode = node;
+				}
+			}
+		}
+
+		// add new way
+		if (bAddWay == true) {
+			cmds.add(new AddCommand(ds, s_oWay));
+		}
+
+		cmds.add(new ChangeCommand(ds, s_oWayOld, trySplitWayByAnyNodes(s_oWay)));
+		cmds.addAll(cmds2);
+
+		TracerDebug oTracerDebug = new TracerDebug();
+		oTracerDebug.OutputCommands(cmds);
+
+		Command cmd = new SequenceCommand(tr("Merge objects nodes"), cmds);
+
+		return cmd;
+	}
+
+
+	/**
+	 * Try connect way to other buildings.
+	 * @param way Way to connect.
+	 * @return Commands.
+	 */
+	public static List<Command> connectTo() {
+		Map<Way, Way> modifiedWays = new HashMap<>();
+		LinkedList<Command> cmds = new LinkedList<>();
+		Way way = new Way(s_oWay);
+		for (int i = 0; i < way.getNodesCount() - 1; i++) {
+			Node n = way.getNode(i);
+			System.out.println("-------");
+			System.out.println("Node: " + n);
+			LatLon ll = n.getCoor();
+			//BBox bbox = new BBox(
+			//        ll.getX() - MIN_DISTANCE,
+			//        ll.getY() - MIN_DISTANCE,
+			//        ll.getX() + MIN_DISTANCE,
+			//        ll.getY() + MIN_DISTANCE);
+
+			// bude se node slucovat s jinym?
+			double minDistanceSq = s_dMinDistanceN2N;
+			//List<Node> nodes = Main.main.getCurrentDataSet().searchNodes(bbox);
+			Node nearestNode = null;
+			for (Node nn : s_oNodes) {
+				System.out.println("Node: " + nn);
+				if (!nn.isUsable() || way.containsNode(nn) || s_oWay.containsNode(nn) || !isInSameTag(nn)) {
+					continue;
+				}
+				double dist = nn.getCoor().distance(ll);
+				if (dist < minDistanceSq) {
+					minDistanceSq = dist;
+					nearestNode = nn;
+				}
+			}
+
+			System.out.println("Nearest: " + nearestNode + " distance: " + minDistanceSq);
+			if (nearestNode == null) {
+				tryConnectNodeToAnyWay(n, modifiedWays);
+			} else {
+				System.out.println("+add Node distance: " + minDistanceSq);
+				cmds.addAll(mergeNodes(n, nearestNode));
+			}
+		}
+
+		for (Map.Entry<Way, Way> e : modifiedWays.entrySet()) {
+			cmds.add(new ChangeCommand(e.getKey(), e.getValue()));
+		}
+
+		//cmds.addFirst(new ChangeCommand(way, trySplitWayByAnyNodes(newWay)));
+
+		List<Command> cmd = cmds;
+		return cmd;
+	}
+
+	/**
+	 * Merges two nodes
+	 * @param n1 First node
+	 * @param n2 Second node
+	 * @param way Way containing first node
+	 * @return List of Commands.
+	 */
+	private static List<Command> mergeNodes(Node n1, Node n2) {
+		List<Command> cmds = new LinkedList<>();
+		cmds.add(new MoveCommand(n2,
+				(n1.getEastNorth().getX() - n2.getEastNorth().getX())/2,
+				(n1.getEastNorth().getY() - n2.getEastNorth().getY())/2
+				));
+
+		Way newWay = new Way(s_oWay);
+
+		int j = s_oWay.getNodes().indexOf(n1);
+		newWay.addNode(j, n2);
+		if (j == 0) {
+			// first + last point
+			newWay.addNode(newWay.getNodesCount(), n2);
+		}
+
+		newWay.removeNode(n1);
+		//       cmds.add(new ChangeCommand(m_way, newWay));
+
+		if (newWay.firstNode() != newWay.lastNode()) {
+			newWay.addNode(newWay.firstNode());
+		}
+		s_oWay = new Way(newWay);
+
+		//cmds.add(new DeleteCommand(n1));
+		return cmds;
+	}
+
+	/**
+	 * Try connect node "node" to way of other building.
+	 *
+	 * Zkusi zjistit, zda node neni tak blizko nejake usecky existujici budovy,
+	 * ze by mel byt zacnenen do teto usecky. Pokud ano, provede to.
+	 *
+	 * @param node Node to connect.
+	 * @return List of Commands.
+	 */
+	private static void tryConnectNodeToAnyWay(Node node, Map<Way, Way> m)
+			throws IllegalStateException, IndexOutOfBoundsException {
+
+		//List<Command> cmds = new LinkedList<Command>();
+
+		//LatLon ll = node.getCoor();
+		//BBox bbox = new BBox(
+		//        ll.getX() - MIN_DISTANCE_TW,
+		//        ll.getY() - MIN_DISTANCE_TW,
+		//        ll.getX() + MIN_DISTANCE_TW,
+		//        ll.getY() + MIN_DISTANCE_TW);
+
+		// node nebyl slouceny s jinym
+		// hledani pripadne blizke usecky, kam bod pridat
+		//List<Way> ways = Main.main.getCurrentDataSet().searchWays(bbox);
+		double minDist = Double.MAX_VALUE;
+		Way nearestWay = null;
+		int nearestNodeIndex = 0;
+		for (Way ww : s_oWays) {
+			System.out.println("Way: " + ww);
+			if (!ww.isUsable() || ww.containsNode(node) || !isSameTag(ww)) {
+				continue;
+			}
+
+			if (m.get(ww) != null) {
+				ww = m.get(ww);
+			}
+
+			for (Pair<Node, Node> np : ww.getNodePairs(false)) {
+				//double dist1 = TracerGeometry.distanceFromSegment(ll, np.a.getCoor(), np.b.getCoor());
+				double dist = distanceFromSegment2(node, np.a, np.b);
+				//System.out.println(" distance: " + dist1 + "  " + dist);
+
+				if (dist < minDist) {
+					minDist = dist;
+					nearestWay = ww;
+					nearestNodeIndex = ww.getNodes().indexOf(np.a);
+				}
+			}
+		}
+		System.out.println("Nearest way: " + nearestWay + " distance: " + minDist);
+		if (minDist < s_dMinDistanceN2oW) {
+			Way newNWay = new Way(nearestWay);
+
+			newNWay.addNode(nearestNodeIndex + 1, node);
+			System.out.println("New way:" + newNWay);
+			System.out.println("+add WayOld.Node distance: " + minDist);
+			m.put(nearestWay, newNWay);
+			s_oWays.remove(newNWay);
+			s_oWays.add(nearestWay);
+		}
+	}
+
+	private static double distanceFromSegment2(ILatLon c, ILatLon a, ILatLon b) {
+		double x;
+		double y;
+
+		StraightLine oStraightLine1 = new StraightLine(
+				new Point2D.Double(a.lon(), a.lat()),
+				new Point2D.Double(b.lon(), b.lat()));
+		StraightLine oStraightLine2 = new StraightLine(
+				new Point2D.Double(c.lon(), c.lat()),
+				new Point2D.Double(c.lon() + (a.lat()-b.lat()), c.lat() - (a.lon()-b.lon())));
+		Point2D.Double oPoint = oStraightLine1.GetIntersectionPoint(oStraightLine2);
+
+		if ((oPoint.x > a.lon() && oPoint.x > b.lon()) || (oPoint.x < a.lon() && oPoint.x < b.lon()) ||
+				(oPoint.y > a.lat() && oPoint.y > b.lat()) || (oPoint.y < a.lat() && oPoint.y < b.lat())) {
+			return 100000;
+		}
+
+		x = c.lon()-oPoint.getX();
+		y = c.lat()-oPoint.getY();
+
+		return Math.sqrt((x*x)+(y*y));
+	}
+
+	/**
+	 * Try split way by any existing building nodes.
+	 *
+	 * Zkusi zjistit zda nejake usecka z way by nemela prochazet nejakym existujicim bodem,
+	 * ktery je ji velmi blizko. Pokud ano, tak puvodni usecku rozdeli na dve tak, aby
+	 * prochazela takovym bodem.
+	 *
+	 * @param way Way to split.
+	 * @return Modified way
+	 */
+	private static Way trySplitWayByAnyNodes(Way way)
+			throws IndexOutOfBoundsException, IllegalStateException {
+
+		// projdi kazdou novou usecku a zjisti, zda by nemela vest pres existujici body
+		int i = 0;
+		while (i < way.getNodesCount()) {
+			// usecka n1, n2
+			ILatLon n1 = way.getNodes().get(i);
+			ILatLon n2 = way.getNodes().get((i + 1) % way.getNodesCount());
+			System.out.println(way.getNodes().get(i) + "-----" + way.getNodes().get((i + 1) % way.getNodesCount()));
+			double minDistanceSq = Double.MAX_VALUE;
+			//            double maxAngle = MAX_ANGLE;
+			//List<Node> nodes = Main.main.getCurrentDataSet().searchNodes(new BBox(
+			//    Math.min(n1.getX(), n2.getX()) - minDistanceSq,
+			//    Math.min(n1.getY(), n2.getY()) - minDistanceSq,
+			//    Math.max(n1.getX(), n2.getX()) + minDistanceSq,
+			//    Math.max(n1.getY(), n2.getY()) + minDistanceSq
+			//));
+
+			Node nearestNode = null;
+			for (Node nod : s_oNodes) {
+				if (!nod.isUsable() || way.containsNode(nod) || !isInSameTag(nod)) {
+					continue;
+				}
+				//double dist = TracerGeometry.distanceFromSegment(nod, n1, n2);
+				double dist = distanceFromSegment2(nod, n1, n2);
+				//                double angle = TracerGeometry.angleOfLines(n1, nod, nod, n2);
+				//System.out.println("Angle: " + angle + " distance: " + dist + " Node: " + nod);
+				if (!n1.equalsEpsilon(nod, ILatLon.MAX_SERVER_PRECISION)
+				 && !n2.equalsEpsilon(nod, ILatLon.MAX_SERVER_PRECISION) && dist < minDistanceSq) { // && Math.abs(angle) < maxAngle) {
+					minDistanceSq = dist;
+					//                    maxAngle = angle;
+					nearestNode = nod;
+				}
+			}
+			System.out.println("Nearest_: " + nearestNode + " distance: " + minDistanceSq);
+			if (nearestNode == null || minDistanceSq >= s_dMinDistanceN2tW) {
+				// tato usecka se nerozdeli
+				i++;
+				System.out.println("");
+				continue;
+			} else {
+				// rozdeleni usecky
+				way.addNode(i + 1, nearestNode);
+				i++;
+				System.out.println("+add Way.Node distance: " + minDistanceSq);
+				System.out.println("");
+				//i++;
+				continue; // i nezvetsuji, treba bude treba rozdelit usecku znovu
+			}
+		}
+		return way;
+	}
+
+	private static boolean isInSameTag(Node n) {
+		for (OsmPrimitive op : n.getReferrers()) {
+			if (op instanceof Way) {
+				if (isSameTag(op)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Determines if the specified primitive denotes a building.
+	 * @param p The primitive to be tested
+	 * @return True if building key is set and different from no,entrance
+	 */
+	protected static boolean isSameTag(OsmPrimitive p) {
+		String v = p.get(s_oParam.getTag());
+		if (s_bCtrl || s_oParam.getTag().equals("")) {
+			return v == null || v.equals("no");
+		}
+		if (s_oParam.getTag().equals("building")) {
+			return v != null && !v.equals("no") && !v.equals("entrance");
+		}
+		return v != null && !v.equals("no");
+	}
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/StraightLine.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/StraightLine.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/StraightLine.java	(revision 36424)
@@ -0,0 +1,99 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2;
+
+import java.awt.geom.Point2D;
+
+public class StraightLine {
+
+    private Double m_dm;        // slope (gradient)
+    private Double m_dc;        // y-intercept
+    private Double m_dx;        // x-intercept (if y-intercept == NaN)
+    private Double m_dAlpha;    // alpha (-180 < alpha <= 180)
+
+    public StraightLine(Double dm, Double dc, boolean bRevert) {
+        this.m_dm = dm;
+        this.m_dc = dc;
+        this.m_dx = Double.NaN;
+        if (this.m_dm.isNaN()) {
+            this.m_dAlpha = Double.NaN;
+        } else if (this.m_dm.isInfinite()) {
+            this.m_dAlpha = CheckAlpha((Double.NEGATIVE_INFINITY == this.m_dm) ? -90.0 : 90.0);
+        } else {
+            this.m_dAlpha = CheckAlpha(Math.atan(dm) * 180 / Math.PI + (bRevert ? 180 : 0));
+        }
+    }
+
+    public StraightLine(Point2D.Double oP1, Point2D.Double oP2) {
+        this.m_dm = (oP2.getY() - oP1.getY()) / (oP2.getX() - oP1.getX());
+        this.m_dc = oP1.getY() - (m_dm * oP1.getX());
+
+        if (this.m_dm.isInfinite() || this.m_dm.isNaN()) {
+            this.m_dx = oP1.getX();
+            this.m_dAlpha = CheckAlpha(oP1.getY() > oP2.getY() ? -90.0 : 90.0);
+        } else {
+            this.m_dx = Double.NaN;
+            this.m_dAlpha = CheckAlpha(
+                    Math.atan((oP2.getY() - oP1.getY()) / (oP2.getX() - oP1.getX())) * 180 / Math.PI + (oP1.getX() > oP2.getX() ? 180 : 0));
+        }
+    }
+
+    private static Double CheckAlpha(Double dAlpha) {
+        if (dAlpha > 180) {
+            return dAlpha - 360;
+        }
+        if (dAlpha <= -180) {
+            return dAlpha + 360;
+        }
+        return dAlpha;
+    }
+
+    public Double getM() {
+        return m_dm;
+    }
+
+    public Double getC() {
+        return m_dc;
+    }
+
+    public Double getX() {
+        return m_dx;
+    }
+
+    public Double getAlpha() {
+        return m_dAlpha;
+    }
+
+    public boolean IsLine() {
+        return !(m_dx.isNaN() || m_dx.isInfinite() || m_dAlpha.isNaN() || m_dAlpha.isInfinite())
+                || !(m_dm.isNaN() || m_dm.isInfinite() || m_dc.isNaN() || m_dc.isInfinite());
+    }
+
+    public Point2D.Double GetIntersectionPoint(StraightLine oLine) {
+        Double dx;
+        Double dy;
+
+        if (!this.IsLine() || !oLine.IsLine()) {
+            // data missing
+            return new Point2D.Double(Double.NaN, Double.NaN);
+        }
+
+        if (m_dm.isInfinite() || this.m_dm.isNaN()) {
+            if (oLine.getM().isInfinite() || oLine.getM().isNaN()) {
+                // no IntersectionPoint
+                return new Point2D.Double(Double.NaN, Double.NaN);
+            } else {
+                dx = this.m_dx;
+                dy = oLine.getM() * dx + oLine.getC();
+            }
+        } else if (oLine.getM().isInfinite() || oLine.getM().isNaN()) {
+            dx = oLine.getX();
+            dy = this.m_dm * dx + this.m_dc;
+        } else {
+            dx = (oLine.m_dc - this.m_dc) / (this.m_dm - oLine.m_dm);
+            dy = this.m_dm * dx + this.m_dc;
+        }
+
+        return new Point2D.Double(dx, dy);
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TagValues.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TagValues.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TagValues.java	(revision 36424)
@@ -0,0 +1,177 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
+import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParam;
+
+public class TagValues {
+    private String m_strTag = "";
+    private String m_strPreferredValues = "";
+
+    private int m_nPos = 0;
+    private boolean m_bPreferred = false;
+    private String[] m_astrTagValues = null;
+    private String[] m_astrTagValuesPreferred = null;
+
+    public TagValues() {
+        clearAll();
+    }
+
+    public void readBuildingTags(ServerParam param) {
+        if (param == null || param.getTag() == null || param.getTag().equals("")) {
+            clearAll();
+            return;
+        }
+        if (param.getTag().equals(m_strTag) && param.getPreferredValues().equals(m_strPreferredValues)) {
+            return;
+        }
+        clearAll();
+
+        m_strTag = param.getTag();
+        m_strPreferredValues = param.getPreferredValues();
+
+        // get values
+        List<String> tagValues = new ArrayList<>();
+        for (AutoCompletionItem i : AutoCompletionManager.of(MainApplication.getLayerManager().getEditDataSet()).getTagValues(m_strTag)) {
+            tagValues.add(i.getValue());
+        }
+        m_astrTagValues = tagValues.toArray(new String[tagValues.size()]);
+
+        // get preferred values
+        if (m_strPreferredValues.equals("")) {
+            m_astrTagValuesPreferred = new String[0];
+        } else {
+            String[] prefered = m_strPreferredValues.split(";");
+            tagValues = new ArrayList<>();
+
+            for (String str: prefered) {
+                String temp = str.trim();
+                if (getPos(temp, m_astrTagValues) >= 0) {
+                    tagValues.add(temp);
+                }
+            }
+            m_astrTagValuesPreferred = tagValues.toArray(new String[tagValues.size()]);
+
+            // set to the first preferred
+            m_bPreferred = true;
+            m_nPos = 0;
+        }
+    }
+
+    private void clearAll() {
+        m_strTag = "";
+        m_strPreferredValues = "";
+
+        m_nPos = 0;
+        m_bPreferred = false;
+        m_astrTagValues = null;
+        m_astrTagValuesPreferred = null;
+    }
+
+    public String getTag() {
+        if (m_strTag == null || m_strTag.equals("")) {
+            return null;
+        }
+        return m_strTag;
+    }
+
+    public String getTagValue() {
+        if (m_bPreferred == false) {
+            if (m_astrTagValues != null && m_astrTagValues.length > m_nPos) {
+                return m_astrTagValues[m_nPos];
+            }
+        } else {
+            if (m_astrTagValuesPreferred != null && m_astrTagValuesPreferred.length > m_nPos) {
+                return m_astrTagValuesPreferred[m_nPos];
+            }
+        }
+        return null;
+    }
+
+    private int getPos(String value, String[] values) {
+        if (value != null && values != null) {
+            for (int i = 0; i < values.length; i++) {
+                if (value.equals(values[i])) {
+                    return i;
+                }
+            }
+        }
+        return -1;
+    }
+
+    public void left() {
+        if (m_astrTagValues == null || m_astrTagValues.length == 0) {
+            return;
+        }
+        if (m_bPreferred == false) {
+            if (m_astrTagValuesPreferred == null || m_astrTagValuesPreferred.length == 0) {
+                return;
+            }
+            m_bPreferred = true;
+            m_nPos = getPos(m_astrTagValues[m_nPos], m_astrTagValuesPreferred);
+            if (m_nPos < 0) {
+                m_nPos = 0;
+                return;
+            }
+        }
+        m_nPos--;
+        if (m_nPos < 0) m_nPos = m_astrTagValuesPreferred.length-1;
+    }
+
+    public void right() {
+        if (m_astrTagValues == null || m_astrTagValues.length == 0) {
+            return;
+        }
+        if (m_bPreferred == false) {
+            if (m_astrTagValuesPreferred == null || m_astrTagValuesPreferred.length == 0) {
+                return;
+            }
+            m_bPreferred = true;
+            m_nPos = getPos(m_astrTagValues[m_nPos], m_astrTagValuesPreferred);
+            if (m_nPos < 0) {
+                m_nPos = 0;
+                return;
+            }
+        }
+        m_nPos++;
+        if (m_nPos >= m_astrTagValuesPreferred.length) m_nPos = 0;
+    }
+
+    public void up() {
+        if (m_astrTagValues == null || m_astrTagValues.length == 0) {
+            return;
+        }
+        if (m_bPreferred == true) {
+            m_bPreferred = false;
+            m_nPos = getPos(m_astrTagValuesPreferred[m_nPos], m_astrTagValues);
+            if (m_nPos < 0) {
+                m_nPos = 0;
+                return;
+            }
+        }
+        m_nPos--;
+        if (m_nPos < 0) m_nPos = m_astrTagValues.length-1;
+    }
+
+    public void down() {
+        if (m_astrTagValues == null || m_astrTagValues.length == 0) {
+            return;
+        }
+        if (m_bPreferred == true) {
+            m_bPreferred = false;
+            m_nPos = getPos(m_astrTagValuesPreferred[m_nPos], m_astrTagValues);
+            if (m_nPos < 0) {
+                m_nPos = 0;
+                return;
+            }
+        }
+        m_nPos++;
+        if (m_nPos >= m_astrTagValues.length) m_nPos = 0;
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerAction.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerAction.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerAction.java	(revision 36424)
@@ -0,0 +1,377 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+//import static org.openstreetmap.josm.tools.I18n.trn;
+
+import java.awt.Cursor;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+
+import org.openstreetmap.josm.actions.mapmode.MapMode;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.UndoRedoHandler;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParam;
+import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParamList;
+import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParamSelectDialog;
+import org.openstreetmap.josm.plugins.tracer2.server.GetTrace;
+import org.openstreetmap.josm.plugins.tracer2.server.GetVersion;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Shortcut;
+import org.xml.sax.SAXException;
+
+class TracerAction extends MapMode implements MouseListener, KeyListener {
+    private static final long serialVersionUID = 1L;
+    private static boolean s_bServerVersionOK = false;
+
+    protected boolean m_bCancel;
+    private boolean m_bCtrl;    // if pressed no tag is added + changes and connection are made to ways without tag
+    private boolean m_bAlt;     //
+    private boolean m_bShift;   // if pressed the new way will be add to the current selected
+    private boolean m_bEnter = false;
+
+    private TagValues m_oTagValues = new TagValues();
+
+    TracerPlugin m_oPlugin;
+
+    TracerAction() {
+        super(tr("Tracer2"), "tracer2-sml", tr("Tracer2."),
+                Shortcut.registerShortcut("tools:tracer2", tr("More tools: {0}", tr("Tracer2")), KeyEvent.VK_T, Shortcut.DIRECT),
+                getCursor());
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+        Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
+        List<Command> commands = new ArrayList<>();
+
+        if (checkActiveServerParam() == false) return;
+
+        switch (e.getKeyCode()) {
+        case 37: // left
+            m_oTagValues.left();
+            break;
+        case 38: // up
+            m_oTagValues.up();
+            break;
+        case 39: // right
+            m_oTagValues.right();
+            break;
+        case 40: // down
+            m_oTagValues.down();
+            break;
+        default:
+            return;
+        }
+
+        if (selection.isEmpty()) {
+            return;
+        }
+
+        String strTag = m_oTagValues.getTag();
+        String strTagValue = m_oTagValues.getTagValue();
+
+        if (strTag != null && strTagValue != null) {
+            commands.add(new ChangePropertyCommand(selection, strTag, strTagValue));
+
+            if (!commands.isEmpty()) {
+                UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Change tag {0} to {1}", strTag, strTagValue), commands));
+            }
+        }
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+    }
+
+    @Override
+    public void keyTyped(KeyEvent e) {
+    }
+
+    @Override
+    public void enterMode() {
+        m_bEnter = true;
+
+        // is not working hear
+        // because if JOSM exit it is called too
+        //checkActiveServerParam();
+
+        if (!isEnabled()) {
+            return;
+        }
+        super.enterMode();
+        MapView mapView = MainApplication.getMap().mapView;
+        mapView.setCursor(getCursor());
+        mapView.addMouseListener(this);
+        mapView.addKeyListener(this);
+    }
+
+    @Override
+    public void exitMode() {
+        m_bEnter = false;
+
+        super.exitMode();
+        MapView mapView = MainApplication.getMap().mapView;
+        mapView.removeMouseListener(this);
+        mapView.removeKeyListener(this);
+    }
+
+    private static Cursor getCursor() {
+        return ImageProvider.getCursor("crosshair", "tracer2-sml");
+    }
+
+    protected void traceAsync(Point clickPoint) {
+        m_bCancel = false;
+        /**
+         * Positional data
+         */
+        final LatLon pos = MainApplication.getMap().mapView.getLatLon(clickPoint.x, clickPoint.y);
+
+        try {
+            PleaseWaitRunnable tracerTask = new PleaseWaitRunnable(tr("Tracing")) {
+                @Override
+                protected void realRun() throws SAXException {
+                    traceSync(pos, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+                }
+
+                @Override
+                protected void finish() {
+                }
+
+                @Override
+                protected void cancel() {
+                    TracerAction.this.cancel();
+                }
+            };
+            Thread executeTraceThread = new Thread(tracerTask);
+            executeTraceThread.start();
+        } catch (Exception e) {
+            Logging.error(e);
+        }
+    }
+
+    private void tagBuilding(Way way) {
+        String strTag = m_oTagValues.getTag();
+        String strTagValue = m_oTagValues.getTagValue();
+
+        if (strTag != null && strTagValue != null && !m_bCtrl) {
+            way.put(strTag, strTagValue);
+        }
+    }
+
+    private boolean checkServerVersion() {
+        int nMajor = 1;
+        int nMinor = 1;
+
+        if (s_bServerVersionOK == false) {
+            GetVersion oGetVersion = new GetVersion();
+            oGetVersion.start();
+
+            int nRetray = 500; // 5 seconds
+
+            while (oGetVersion.isAlive() && nRetray > 0) {
+                try {
+                    Thread.sleep(10);
+                } catch (Exception e) {
+                    break;
+                }
+                nRetray--;
+            }
+
+            if (oGetVersion.m_nVersionMajor < 0 || oGetVersion.m_nVersionMinor < 0) {
+                return false;
+            }
+            if (oGetVersion.m_nVersionMajor != nMajor) {
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
+                        tr("The Tracer2Server version isn''t compatible with this plugin. Please download version {0} from\n{1}.", nMajor + ".x",
+                                "http://sourceforge.net/projects/tracer2server/"), tr("Error"), JOptionPane.ERROR_MESSAGE);
+                return false;
+            }
+            if (oGetVersion.m_nVersionMinor < nMinor) {
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
+                        tr("New version of Tracer2Server is available. For best results please upgrade to version {0}.", nMajor + "." + nMinor),
+                        tr("Information"), JOptionPane.INFORMATION_MESSAGE);
+            }
+            s_bServerVersionOK = true;
+        }
+        return true;
+    }
+
+    private boolean checkActiveServerParam() {
+        if (checkServerVersion() == false) {
+            return false;
+        }
+        if (m_bEnter == true || TracerPlugin.s_oPlugin.m_oParamList.getActivParam() == null) {
+
+            ServerParamList listParam = TracerPlugin.s_oPlugin.m_oParamList;
+            List<ServerParam> listEnableParam = listParam.getEnableParamList();
+
+            if (listEnableParam == null || listEnableParam.size() == 0) {
+                listParam.setActivParam(null);
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("No set of parameter is active!"), tr("Error"), JOptionPane.ERROR_MESSAGE);
+                return false;
+            }
+            if (listEnableParam.size() == 1) {
+                ServerParam param = listEnableParam.get(0);
+                listParam.setActivParam(param);
+                m_oTagValues.readBuildingTags(param);
+                return true;
+            }
+
+            ServerParamSelectDialog dialog = new ServerParamSelectDialog(listEnableParam, listParam.getActivParam());
+
+            if (dialog.getShow()) {
+                JOptionPane pane = new JOptionPane(dialog, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
+                JDialog dlg = pane.createDialog(MainApplication.getMainFrame(), tr("Tracer2") + " - " + tr("Select parameter"));
+                dlg.setVisible(true);
+                Object obj = pane.getValue();
+                dlg.dispose();
+                if (obj != null && ((Integer) obj) == JOptionPane.OK_OPTION) {
+                    TracerPlugin.s_oPlugin.m_oParamList.setActivParam(dialog.getSelectedParam());
+                } else {
+                    return false;
+                }
+            }
+        }
+        ServerParam param = TracerPlugin.s_oPlugin.m_oParamList.getActivParam();
+        if (param == null) {
+            return false;
+        }
+        m_bEnter = false;
+        m_oTagValues.readBuildingTags(param);
+        return true;
+    }
+
+    private void traceSync(LatLon pos, ProgressMonitor progressMonitor) {
+        Collection<Command> commands = new LinkedList<>();
+
+        progressMonitor.beginTask(null, 3);
+        try {
+            ArrayList<LatLon> coordList;
+
+            if (checkActiveServerParam() == false) return;
+
+            ServerParam param = TracerPlugin.s_oPlugin.m_oParamList.getActivParam();
+            GetTrace oTraceSimple = new GetTrace(pos, param);
+            oTraceSimple.start();
+            try {
+                while (oTraceSimple.isAlive()) {
+                    Thread.sleep(50);
+                    if (m_bCancel == true) {
+                        oTraceSimple.interrupt();
+                        break;
+                    }
+                }
+                coordList = oTraceSimple.m_listLatLon;
+            } catch (Exception e) {
+                coordList = new ArrayList<>();
+            }
+
+            if (m_bCancel == true || coordList.size() == 0) {
+                return;
+            }
+
+            // make nodes a way
+            Way way = new Way();
+            Node firstNode = null;
+            for (LatLon coord : coordList) {
+                Node node = new Node(coord);
+                if (firstNode == null) {
+                    firstNode = node;
+                }
+                //commands.add(new AddCommand(node));
+                way.addNode(node);
+            }
+            way.addNode(firstNode);
+
+            tagBuilding(way);
+
+            // connect to other buildings
+            commands.add(ConnectWays.connect(way, pos, param, m_bCtrl, m_bAlt));
+
+            if (!commands.isEmpty()) {
+                String strCommand;
+                if (ConnectWays.s_bAddNewWay == true) {
+                    strCommand = tr("Tracer2: add a way with {0} points", coordList.size());
+                } else {
+                    strCommand = tr("Tracer2: modify way to {0} points", coordList.size());
+                }
+                UndoRedoHandler.getInstance().add(new SequenceCommand(strCommand, commands));
+
+                if (m_bShift) {
+                    getLayerManager().getEditDataSet().addSelected(ConnectWays.s_oWay);
+                } else {
+                    getLayerManager().getEditDataSet().setSelected(ConnectWays.s_oWay);
+                }
+            } else {
+                System.out.println("Failed");
+            }
+
+        } finally {
+            progressMonitor.finishTask();
+        }
+    }
+
+    public void cancel() {
+        m_bCancel = true;
+    }
+
+    @Override
+    public void mouseClicked(MouseEvent e) {
+    }
+
+    @Override
+    public void mouseEntered(MouseEvent e) {
+    }
+
+    @Override
+    public void mouseExited(MouseEvent e) {
+    }
+
+    @Override
+    public void mousePressed(MouseEvent e) {
+        if (!MainApplication.getMap().mapView.isActiveLayerDrawable()) {
+            return;
+        }
+        requestFocusInMapView();
+        updateKeyModifiers(e);
+        if (e.getButton() == MouseEvent.BUTTON1) {
+            traceAsync(e.getPoint());
+        }
+    }
+
+    @Override
+    protected void updateKeyModifiers(MouseEvent e) {
+        m_bCtrl = (e.getModifiers() & ActionEvent.CTRL_MASK) != 0;
+        m_bAlt = (e.getModifiers() & (ActionEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK)) != 0;
+        m_bShift = (e.getModifiers() & ActionEvent.SHIFT_MASK) != 0;
+    }
+
+    @Override
+    public void mouseReleased(MouseEvent e) {
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerDebug.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerDebug.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerDebug.java	(revision 36424)
@@ -0,0 +1,110 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.openstreetmap.josm.command.AddCommand;
+import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.DeleteCommand;
+import org.openstreetmap.josm.command.MoveCommand;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
+
+public class TracerDebug {
+
+    private static String FormatPrimitive(String strIn) {
+        while (strIn.contains("{")) {
+            strIn = strIn.replace("{", "xxxxx");
+        }
+        return strIn.replaceAll("xxxxx", "\r\n    {");
+    }
+
+    public void OutputOsmPrimitive(Collection<OsmPrimitive> cOsmPrimitive) {
+        if (cOsmPrimitive != null) {
+            for (OsmPrimitive p : cOsmPrimitive) {
+                System.out.println(" OsmPrimitive: " + FormatPrimitive(p.toString()));
+            }
+        }
+    }
+
+    public void OutputOsmExtendsPrimitive(Collection<? extends OsmPrimitive> cOsmPrimitive) {
+        if (cOsmPrimitive != null) {
+            for (OsmPrimitive p : cOsmPrimitive) {
+                System.out.println(" OsmPrimitive x: " + FormatPrimitive(p.toString()));
+            }
+        }
+    }
+
+    public void OutputCommands(LinkedList<Command> cmds) {
+
+        for (Command c : cmds) {
+            System.out.println("");
+
+            Collection<OsmPrimitive> cp1 = null;
+            Collection<OsmPrimitive> cp2 = null;
+            Collection<OsmPrimitive> cp3 = null;
+            Collection<? extends OsmPrimitive> cpx = null;
+
+            List<OsmPrimitive> lp1 = new LinkedList<>();
+            List<OsmPrimitive> lp2 = new LinkedList<>();
+            List<OsmPrimitive> lp3 = new LinkedList<>();
+            List<OsmPrimitive> lp = new LinkedList<>();
+
+            cp1 = lp1;
+            cp2 = lp2;
+            cp3 = lp3;
+            cpx = lp;
+
+            //OsmPrimitive op = new OsmPrimitive();
+            OsmPrimitive op1 = new Way();
+
+            System.out.println("Command: " + c.toString());
+
+            if (c instanceof AddCommand) {
+                AddCommand x = (AddCommand) c;
+                x.fillModifiedData(cp1, cp2, cp3);
+                OutputOsmPrimitive(cp1);
+                OutputOsmPrimitive(cp2);
+                OutputOsmPrimitive(cp3);
+                cpx = x.getParticipatingPrimitives();
+                OutputOsmExtendsPrimitive(cpx);
+            } else if (c instanceof ChangeCommand) { // order is important!
+                ChangeCommand x = (ChangeCommand) c;
+                x.fillModifiedData(cp1, cp2, cp3);
+                x.getOrig(op1);
+                OutputOsmPrimitive(cp1);
+                OutputOsmPrimitive(cp2);
+                OutputOsmPrimitive(cp3);
+                cpx = x.getParticipatingPrimitives();
+                OutputOsmExtendsPrimitive(cpx);
+            } else if (c instanceof DeleteCommand) {
+                DeleteCommand x = (DeleteCommand) c;
+                x.fillModifiedData(cp1, cp2, cp3);
+                OutputOsmPrimitive(cp1);
+                OutputOsmPrimitive(cp2);
+                OutputOsmPrimitive(cp3);
+                cpx = x.getParticipatingPrimitives();
+                OutputOsmExtendsPrimitive(cpx);
+            } else if (c instanceof MoveCommand) { // order is important!
+                MoveCommand x = (MoveCommand) c;
+                x.fillModifiedData(cp1, cp2, cp3);
+                OutputOsmPrimitive(cp1);
+                OutputOsmPrimitive(cp2);
+                OutputOsmPrimitive(cp3);
+                cpx = x.getParticipatingPrimitives();
+                OutputOsmExtendsPrimitive(cpx);
+            } else {
+                c.fillModifiedData(cp1, cp2, cp3);
+                OutputOsmPrimitive(cp1);
+                OutputOsmPrimitive(cp2);
+                OutputOsmPrimitive(cp3);
+                cpx = c.getParticipatingPrimitives();
+                OutputOsmExtendsPrimitive(cpx);
+            }
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerException.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerException.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerException.java	(revision 36424)
@@ -0,0 +1,20 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+class TracerException extends Exception {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 4404064875119981715L;
+
+    TracerException() {
+        super(tr("An unknown error has occurred"));
+    }
+
+    TracerException(String err) {
+        super(err);
+    }
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerGeometry.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerGeometry.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerGeometry.java	(revision 36424)
@@ -0,0 +1,62 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2;
+
+import org.openstreetmap.josm.data.coor.LatLon;
+
+public final class TracerGeometry {
+
+    private TracerGeometry() {
+        // Hide default constructor for utilities classes
+    }
+
+    /**
+     * Angle between line AB and CD
+     * @param a Point A.
+     * @param b Point B.
+     * @param c Point C.
+     * @param d Point D.
+     * @return Angle in degrees.
+     */
+    public static double angleOfLines(LatLon a, LatLon b, LatLon c, LatLon d) {
+        return (Math.abs(
+                Math.atan2(a.lat() - b.lat(), a.lon() - b.lon()) -
+                Math.atan2(c.lat() - d.lat(), c.lon() - d.lon())
+                ) / Math.PI * 180) % 360;
+    }
+
+    /**
+     * Distance of point C from line segment AB.
+     * @param c Point C.
+     * @param a Point A.
+     * @param b Point B.
+     * @return Distance.
+     */
+    public static double distanceFromSegment(LatLon c, LatLon a, LatLon b) {
+        return distanceFromSegment(
+                c.getX(), c.getY(),
+                a.getX(), a.getY(),
+                b.getX(), b.getY()
+                );
+    }
+
+    private static double distanceFromSegment(double cx, double cy, double ax, double ay, double bx, double by) {
+        double r_numerator = (cx - ax) * (bx - ax) + (cy - ay) * (by - ay);
+        double r_denomenator = (bx - ax) * (bx - ax) + (by - ay) * (by - ay);
+        if (r_denomenator == 0)System.out.println("r_denomenator == 0    ------------");
+        double r = r_numerator / r_denomenator;
+        double s = ((ay - cy) * (bx - ax) - (ax - cx) * (by - ay)) / r_denomenator;
+        double distanceLine = Math.abs(s) * Math.sqrt(r_denomenator);
+
+        if ((r >= 0) && (r <= 1)) {
+            return distanceLine;
+        } else {
+            double dist1 = (cx - ax) * (cx - ax) + (cy - ay) * (cy - ay);
+            double dist2 = (cx - bx) * (cx - bx) + (cy - by) * (cy - by);
+            if (dist1 < dist2) {
+                return Math.sqrt(dist1);
+            } else {
+                return Math.sqrt(dist2);
+            }
+        }
+    }
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerPlugin.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerPlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/TracerPlugin.java	(revision 36424)
@@ -0,0 +1,35 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2;
+
+import java.io.File;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginInformation;
+import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParamList;
+import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParamPreference;
+
+public class TracerPlugin extends Plugin {
+
+    public static TracerPlugin s_oPlugin;
+
+    public final ServerParamList m_oParamList;
+
+    public TracerPlugin(PluginInformation info) {
+        super(info);
+        MainMenu.add(MainApplication.getMenu().moreToolsMenu, new TracerAction());
+
+        s_oPlugin = this;
+
+        File plugindir = getPluginDirs().getUserDataDirectory(true);
+
+        m_oParamList = new ServerParamList(new File(plugindir, "serverParam.cfg").getAbsolutePath());
+    }
+
+    @Override
+    public PreferenceSetting getPreferenceSetting() {
+        return new ServerParamPreference(this);
+    }
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParam.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParam.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParam.java	(revision 36424)
@@ -0,0 +1,211 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.preferences;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagLayout;
+
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
+import org.openstreetmap.josm.tools.GBC;
+
+public class ServerParam {
+
+    protected boolean m_bEnabled;
+    private String m_strName = "Name";
+    private String m_strDescription = "";
+    private String m_strUrl = "";
+    private String m_strTileSize = "0.0004";
+    private String m_strResolution = "2048";
+    private String m_strSkipBottom = "0";
+    private String m_strMode = "boundary";
+    private String m_strThreshold = "127";
+    private String m_strPointsPerCircle = "16";
+    private String m_strTag = "building";
+    private String m_strPreferredValues = "yes;house;garage";
+
+    protected JMenuItem m_oMenuItem;
+
+    public boolean isEnabled() {
+        return m_bEnabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        if (!m_bEnabled ^ enabled)
+            return;
+        m_bEnabled = enabled;
+    }
+
+    public String getName() {
+        return m_strName;
+    }
+
+    public void setName(String name) {
+        m_strName = name;
+    }
+
+    public String getDescription() {
+        return m_strDescription;
+    }
+
+    public void setDescription(String description) {
+        m_strDescription = description;
+    }
+
+    public String getUrl() {
+        return m_strUrl;
+    }
+
+    public void setUrl(String url) {
+        m_strUrl = url;
+    }
+
+    public String getTileSize() {
+        return m_strTileSize;
+    }
+
+    public void setTileSize(String tileSize) {
+        m_strTileSize = tileSize;
+    }
+
+    public String getResolution() {
+        return m_strResolution;
+    }
+
+    public void setResolution(String resolution) {
+        m_strResolution = resolution;
+    }
+
+    public String getSkipBottom() {
+        return m_strSkipBottom;
+    }
+
+    public void setSkipBottom(String skipBottom) {
+        m_strSkipBottom = skipBottom;
+    }
+
+    public String getMode() {
+        return m_strMode;
+    }
+
+    public void setMode(String mode) {
+        m_strMode = mode;
+    }
+
+    public String getThreshold() {
+        return m_strThreshold;
+    }
+
+    public void setThreshold(String threshold) {
+        m_strThreshold = threshold;
+    }
+
+    public String getPointsPerCircle() {
+        return m_strPointsPerCircle;
+    }
+
+    public void setPointsPerCircle(String pointsPerCircle) {
+        m_strPointsPerCircle = pointsPerCircle;
+    }
+
+    public String getTag() {
+        return m_strTag;
+    }
+
+    public void setTag(String tag) {
+        m_strTag = tag;
+    }
+
+    public String getPreferredValues() {
+        return m_strPreferredValues;
+    }
+
+    public void setPreferredValues(String preferredValues) {
+        m_strPreferredValues = preferredValues;
+    }
+
+    public ServerParam() {
+        m_bEnabled = false;
+    }
+
+    public ServerParam(String name) {
+        this();
+        m_strName = name;
+    }
+
+    public String serialize() {
+        StringBuilder oBuilder = new StringBuilder();
+        oBuilder.append("name=").append(m_strName).append('\n');
+        oBuilder.append("description=").append(m_strDescription).append('\n');
+        oBuilder.append("url=").append(m_strUrl).append('\n');
+        oBuilder.append("tileSize=").append(m_strTileSize).append('\n');
+        oBuilder.append("resolution=").append(m_strResolution).append('\n');
+        oBuilder.append("skipBottom=").append(m_strSkipBottom).append('\n');
+        oBuilder.append("mode=").append(m_strMode).append('\n');
+        oBuilder.append("threshold=").append(m_strThreshold).append('\n');
+        oBuilder.append("pointsPerCircle=").append(m_strPointsPerCircle).append('\n');
+        oBuilder.append("tag=").append(m_strTag).append('\n');
+        oBuilder.append("preferredValues=").append(m_strPreferredValues).append('\n');
+        oBuilder.append("enabled=").append(m_bEnabled).append('\n');
+        oBuilder.append('\n');
+        return oBuilder.toString();
+    }
+
+    public static ServerParam unserialize(String str) {
+        ServerParam oParam = new ServerParam();
+        String[] lines = str.split("\n");
+        for (String line : lines) {
+            String[] parts = line.split("=", 2);
+            if (parts[0].equals("name"))
+                oParam.m_strName = parts[1];
+            else if (parts[0].equals("description"))
+                oParam.m_strDescription = parts[1];
+            else if (parts[0].equals("url"))
+                oParam.m_strUrl = parts[1];
+            else if (parts[0].equals("tileSize"))
+                oParam.m_strTileSize = parts[1];
+            else if (parts[0].equals("resolution"))
+                oParam.m_strResolution = parts[1];
+            else if (parts[0].equals("skipBottom"))
+                oParam.m_strSkipBottom = parts[1];
+            else if (parts[0].equals("mode"))
+                oParam.m_strMode = parts[1];
+            else if (parts[0].equals("threshold"))
+                oParam.m_strThreshold = parts[1];
+            else if (parts[0].equals("pointsPerCircle"))
+                oParam.m_strPointsPerCircle = parts[1];
+            else if (parts[0].equals("tag"))
+                oParam.m_strTag = parts[1];
+            else if (parts[0].equals("preferredValues"))
+                oParam.m_strPreferredValues = parts[1];
+            else if (parts[0].equals("enabled"))
+                oParam.m_bEnabled = parts[1].equalsIgnoreCase("true");
+        }
+        return oParam;
+    }
+
+    protected void showErrorMessage(String message, String details) {
+        final JPanel p = new JPanel(new GridBagLayout());
+        p.add(new JMultilineLabel(message), GBC.eol());
+        if (details != null) {
+            JTextArea info = new JTextArea(details, 20, 60);
+            info.setCaretPosition(0);
+            info.setEditable(false);
+            p.add(new JScrollPane(info), GBC.eop());
+        }
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(), p, tr("Tracer2 error"), JOptionPane.ERROR_MESSAGE);
+            }
+        });
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamDialog.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamDialog.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamDialog.java	(revision 36424)
@@ -0,0 +1,166 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.preferences;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.tools.GBC;
+
+public class ServerParamDialog extends ExtendedDialog {
+    /**
+     *
+     */
+    private static final long serialVersionUID = -3229680217088662218L;
+
+    private String[] m_astrTileSize = new String[] {"0.0001", "0.0002", "0.0004", "0.0008", "0.001", "0.002", "0.004", "0.008", "0.01"};
+    private String[] m_astrResolution = new String[] {"512", "1024", "2048", "4096"};
+    private String[] m_astrMode = new String[] {"boundary", "match color"};
+    private String[] m_astrPointsPerCircle = new String[] {"0", "8", "12", "16", "20", "24", "32"};
+
+    private ServerParam m_oParam;
+
+    private JPanel m_oPanel = new JPanel(new GridBagLayout());
+    private JTextField m_oName = new JTextField();
+    private JTextField m_oDescription = new JTextField();
+    private JTextArea m_oUrl = new JTextArea(5, 5);
+    private JComboBox<String> m_oTileSize;
+    private JComboBox<String> m_oResolution;
+    //private JTextField m_oSkipBottom = new JTextField();
+    private JComboBox<String> m_oMode;
+    private JTextField m_oThreshold = new JTextField();
+    private JComboBox<String> m_oPointsPerCircle;
+    private JTextField m_oTag = new JTextField();
+    private JTextField m_oPreferredValues = new JTextField();
+
+    private JScrollPane m_oScrollpaneUrl;
+
+    public ServerParam getServerParam() {
+        return m_oParam;
+    }
+
+    private void addLabelled(String str, Component c) {
+        JLabel label = new JLabel(str);
+        m_oPanel.add(label, GBC.std());
+        label.setLabelFor(c);
+        m_oPanel.add(c, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+    }
+
+    private void addGap() {
+        JPanel p = new JPanel();
+        p.setMinimumSize(new Dimension(10, 0));
+        m_oPanel.add(p, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+    }
+
+    private void load() {
+        m_oName.setText(m_oParam.getName());
+        m_oDescription.setText(m_oParam.getDescription());
+        m_oUrl.setText(m_oParam.getUrl());
+        loadComboBox(m_oTileSize, m_oParam.getTileSize(), m_astrTileSize);
+        loadComboBox(m_oResolution, m_oParam.getResolution(), m_astrResolution);
+        //m_oSkipBottom.setText(param.getSkipBottom());
+        loadComboBox(m_oMode, m_oParam.getMode(), m_astrMode);
+        m_oThreshold.setText(m_oParam.getThreshold());
+        loadComboBox(m_oPointsPerCircle, m_oParam.getPointsPerCircle(), m_astrPointsPerCircle);
+        m_oTag.setText(m_oParam.getTag());
+        m_oPreferredValues.setText(m_oParam.getPreferredValues());
+    }
+
+    private void save() {
+        m_oParam.setName(m_oName.getText());
+        m_oParam.setDescription(m_oDescription.getText());
+        m_oParam.setUrl(m_oUrl.getText());
+        m_oParam.setTileSize(saveComboBox(m_oTileSize, m_astrTileSize));
+        m_oParam.setResolution(saveComboBox(m_oResolution, m_astrResolution));
+        //m_oParam.setSkipBottom(m_oSkipBottom.getText());
+        m_oParam.setMode(saveComboBox(m_oMode, m_astrMode));
+        m_oParam.setThreshold(m_oThreshold.getText());
+        m_oParam.setPointsPerCircle(saveComboBox(m_oPointsPerCircle, m_astrPointsPerCircle));
+        m_oParam.setTag(m_oTag.getText());
+        m_oParam.setPreferredValues(m_oPreferredValues.getText());
+    }
+
+    private void loadComboBox(JComboBox<?> c, String strValue, String[] astrValues) {
+        int pos = 0;
+        for (String str: astrValues) {
+            if (strValue.equals(str)) {
+                c.setSelectedIndex(pos);
+                return;
+            }
+            pos++;
+        }
+    }
+
+    private String saveComboBox(JComboBox<?> c, String[] astrValues) {
+        return astrValues[c.getSelectedIndex()];
+    }
+
+    public ServerParamDialog(ServerParam param) {
+        super(MainApplication.getMainFrame(), tr("Tracer2") + " - " + tr("Parameter for server request"),
+                new String[] {tr("OK"), tr("Cancel")},
+                true);
+        if (param == null) {
+            m_oParam = new ServerParam();
+        } else {
+            m_oParam = param;
+        }
+
+        contentInsets = new Insets(15, 15, 5, 15);
+        setButtonIcons(new String[] {"ok", "cancel"});
+
+        m_oTileSize = new JComboBox<>(m_astrTileSize);
+        m_oResolution = new JComboBox<>(m_astrResolution);
+        m_oMode = new JComboBox<>(m_astrMode);
+        m_oPointsPerCircle = new JComboBox<>(m_astrPointsPerCircle);
+
+        load();
+
+        addLabelled(tr("Name:"), m_oName);
+        addLabelled(tr("Description:"), m_oDescription);
+        addGap();
+        m_oUrl.setLineWrap(true);
+        m_oScrollpaneUrl = new JScrollPane(m_oUrl);
+        addLabelled(tr("URL:"), m_oScrollpaneUrl);
+        addGap();
+        addLabelled(tr("Tile size:"), m_oTileSize);
+        addLabelled(tr("Resolution:"), m_oResolution);
+        //addLabelled(tr("Skip bottom:"), m_oSkipBottom);
+        addGap();
+        addLabelled(tr("Mode:"), m_oMode);
+        addLabelled(tr("Threshold:"), m_oThreshold);
+        addGap();
+        addLabelled(tr("Points per circle:"), m_oPointsPerCircle);
+        addGap();
+        addLabelled(tr("Tag:"), m_oTag);
+        addLabelled(tr("Preferred values:"), m_oPreferredValues);
+
+        setMinimumSize(new Dimension(500, 0));
+
+        setContent(m_oPanel);
+        setupDialog();
+    }
+
+    @Override
+    protected void buttonAction(int buttonIndex, ActionEvent evt) {
+        if (evt.getActionCommand().equals(tr("OK"))) {
+            save();
+        } else {
+            m_oParam = null;
+        }
+        super.buttonAction(buttonIndex, evt);
+    }
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamList.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamList.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamList.java	(revision 36424)
@@ -0,0 +1,107 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.preferences;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.openstreetmap.josm.tools.Logging;
+
+public class ServerParamList {
+    ArrayList<ServerParam> m_listServerParam = new ArrayList<>();
+    ServerParam m_oActivParam = null;
+    String m_strFilename;
+
+    public ServerParamList(String filename) {
+        this.m_strFilename = filename;
+        if (filename == null) {
+            loadDefault();
+        } else {
+            load();
+        }
+    }
+
+    public void load() {
+        try (BufferedReader oReader = new BufferedReader(new InputStreamReader(new FileInputStream(m_strFilename), "UTF-8"))) {
+            StringBuilder oBuilder = new StringBuilder();
+            String strLine;
+            while ((strLine = oReader.readLine()) != null) {
+                oBuilder.append(strLine).append('\n');
+                if (strLine.equals("")) {
+                    m_listServerParam.add(ServerParam.unserialize(oBuilder.toString()));
+                    oBuilder = new StringBuilder();
+                }
+            }
+        } catch (Exception e) {
+            loadDefault();
+        }
+    }
+
+    public void loadDefault() {
+        try (
+                InputStream oIP = getClass().getResourceAsStream("/resources/serverParam.cfg");
+                BufferedReader oReader = new BufferedReader(new InputStreamReader(oIP, StandardCharsets.UTF_8));
+                ) {
+            StringBuilder oBuilder = new StringBuilder();
+            String strLine;
+            while ((strLine = oReader.readLine()) != null) {
+                oBuilder.append(strLine).append('\n');
+                if (strLine.equals("")) {
+                    m_listServerParam.add(ServerParam.unserialize(oBuilder.toString()));
+                    oBuilder = new StringBuilder();
+                }
+            }
+        } catch (Exception e) {
+            Logging.warn("Tracer2 warning: can't load file " + m_strFilename);
+        }
+    }
+
+    public void save() {
+        try (OutputStreamWriter oWriter = new OutputStreamWriter(new FileOutputStream(m_strFilename), "UTF-8")) {
+            for (ServerParam param : m_listServerParam) {
+                oWriter.write(param.serialize());
+            }
+        } catch (Exception e) {
+            Logging.warn("Tracer2 warning: can't save file " + m_strFilename);
+        }
+    }
+
+    public List<ServerParam> getParamList() {
+        return m_listServerParam;
+    }
+
+    public ServerParam getActivParam() {
+        return m_oActivParam;
+    }
+
+    public void setActivParam(ServerParam param) {
+        if (m_listServerParam.contains(param)) {
+            m_oActivParam = param;
+        }
+    }
+
+    public List<ServerParam> getEnableParamList() {
+        List<ServerParam> listParam = new ArrayList<>();
+        for (ServerParam param: m_listServerParam) {
+            if (param.isEnabled()) {
+                listParam.add(param);
+            }
+        }
+        return listParam;
+    }
+
+    public void addParam(ServerParam param) {
+        m_listServerParam.add(param);
+    }
+
+    public void removeParam(ServerParam param) {
+        param.setEnabled(false);
+        m_listServerParam.remove(param);
+    }
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamPanel.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamPanel.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamPanel.java	(revision 36424)
@@ -0,0 +1,158 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.preferences;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.gui.MainApplication;
+
+public class ServerParamPanel extends JPanel {
+    /**
+     *
+     */
+    private static final long serialVersionUID = -6174275926314685531L;
+
+    ServerParamList m_listParam;
+
+    public ServerParamPanel(ServerParamList listParam) {
+        super(new GridBagLayout());
+        m_listParam = listParam;
+    }
+
+    public void refresh() {
+        removeAll();
+        GridBagConstraints gbc = new GridBagConstraints();
+        gbc.gridy = 0;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        gbc.insets = new Insets(2, 5, 2, 5);
+
+        for (final ServerParam param : m_listParam.getParamList()) {
+            gbc.gridx = 0;
+            gbc.weightx = 1.0;
+            gbc.anchor = GridBagConstraints.WEST;
+
+            final JCheckBox cbParam = new JCheckBox(param.getName());
+            cbParam.setSelected(param.isEnabled());
+            cbParam.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    param.setEnabled(cbParam.isSelected());
+                }
+            });
+            add(cbParam, gbc);
+
+            gbc.gridx = 1;
+            gbc.weightx = 0;
+            gbc.anchor = GridBagConstraints.EAST;
+
+            final JButton bEdit = new JButton(tr("Edit"));
+            bEdit.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent arg0) {
+                    JDialog dlg = new ServerParamDialog(param);
+                    dlg.setVisible(true);
+                    dlg.dispose();
+                    refresh();
+                }
+            });
+            add(bEdit, gbc);
+
+            gbc.gridx = 2;
+            final JButton bDel = new JButton(tr("Delete"));
+            bDel.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent arg0) {
+                    if (JOptionPane.showConfirmDialog(MainApplication.getMainFrame(),
+                            tr("Delete parameter \"{0}\"?", param.getName()),
+                            tr("Are you sure?"),
+                            JOptionPane.YES_NO_OPTION,
+                            JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
+                        m_listParam.removeParam(param);
+                        refresh();
+                    }
+                }
+            });
+            add(bDel, gbc);
+
+            gbc.gridy++;
+        }
+        gbc.gridx = 0;
+        gbc.fill = GridBagConstraints.NONE;
+        gbc.anchor = GridBagConstraints.WEST;
+
+        JPanel p = new JPanel(new GridBagLayout());
+
+        final JButton bNew = new JButton(tr("Add new"));
+        bNew.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                JDialog dlg = new ServerParamDialog(null);
+                dlg.setVisible(true);
+                dlg.dispose();
+                ServerParam param = ((ServerParamDialog) dlg).getServerParam();
+                if (param != null && param.getName() != null && (!"".equals(param.getName()))) {
+                    m_listParam.addParam(param);
+                    param.setEnabled(true);
+                }
+                refresh();
+            }
+        });
+        p.add(bNew);
+
+        final JButton bPredefined = new JButton(tr("Add predefined"));
+        bPredefined.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                ServerParamList myParamList;
+
+                myParamList = new ServerParamList(null);
+
+                ServerParamSelectDialog dialog = new ServerParamSelectDialog(myParamList.getParamList(), null);
+
+                if (dialog.getShow()) {
+                    JOptionPane pane = new JOptionPane(dialog, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
+                    JDialog dlg = pane.createDialog(MainApplication.getMainFrame(), tr("Tracer2") + " - " + tr("Select predefined parameter"));
+                    dlg.setVisible(true);
+                    Object obj = pane.getValue();
+                    dlg.dispose();
+                    if (obj != null && ((Integer) obj) == JOptionPane.OK_OPTION) {
+                        ServerParam param = dialog.getSelectedParam();
+
+                        dlg = new ServerParamDialog(param);
+                        dlg.setVisible(true);
+                        dlg.dispose();
+                        param = ((ServerParamDialog) dlg).getServerParam();
+                        if (param != null && param.getName() != null && (!"".equals(param.getName()))) {
+                            m_listParam.addParam(param);
+                            param.setEnabled(true);
+                        }
+                    }
+                }
+                refresh();
+            }
+        });
+        p.add(bPredefined);
+
+        add(p, gbc);
+        gbc.gridy++;
+
+        gbc.weightx = 1.0;
+        gbc.weighty = 1.0;
+        gbc.fill = GridBagConstraints.BOTH;
+        add(new JPanel(), gbc);
+        revalidate();
+        repaint();
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamPreference.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamPreference.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamPreference.java	(revision 36424)
@@ -0,0 +1,41 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.preferences;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagConstraints;
+
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+
+import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
+import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.plugins.tracer2.TracerPlugin;
+import org.openstreetmap.josm.tools.GBC;
+
+public class ServerParamPreference extends DefaultTabPreferenceSetting {
+
+    TracerPlugin m_oPlugin;
+
+    public ServerParamPreference(TracerPlugin plugin) {
+        super("tracer2", tr("Tracer2") + " - " + tr("Preferences"), tr("Modify list of parameter for server request."));
+
+        m_oPlugin = plugin;
+    }
+
+    @Override
+    public void addGui(PreferenceTabbedPane gui) {
+        JPanel p = gui.createPreferenceTab(this);
+        ServerParamPanel spp = new ServerParamPanel(m_oPlugin.m_oParamList);
+        spp.refresh();
+        JScrollPane sp = new JScrollPane(spp);
+        p.add(sp, GBC.eol().fill(GridBagConstraints.BOTH));
+    }
+
+    @Override
+    public boolean ok() {
+        m_oPlugin.m_oParamList.save();
+        return false;
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamSelectDialog.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamSelectDialog.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/preferences/ServerParamSelectDialog.java	(revision 36424)
@@ -0,0 +1,84 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.preferences;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.util.List;
+
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.plugins.tracer2.TracerPlugin;
+
+public class ServerParamSelectDialog extends JPanel {
+
+    private JComboBox<String> m_oComboBox;
+    List<ServerParam> m_listServerParam;
+    private boolean m_bShow = true;
+
+    public boolean getShow() {
+        return m_bShow;
+    }
+
+    public ServerParamSelectDialog(List<ServerParam> listParam) {
+        Init(m_listServerParam, null);
+    }
+
+    public ServerParamSelectDialog(List<ServerParam> listServerParam, ServerParam activParam) {
+        Init(listServerParam, activParam);
+    }
+
+    private void Init(List<ServerParam> listParam, ServerParam activParam) {
+        GridBagConstraints c = new GridBagConstraints();
+
+        String[] astr = new String[listParam.size()];
+
+        m_listServerParam = listParam;
+
+        if (activParam == null) {
+            activParam = m_listServerParam.get(0);
+        }
+        int i = 0;
+        int pos = 0;
+        for (ServerParam param: m_listServerParam) {
+            astr[i] = param.getName();
+            if (param.equals(activParam)) {
+                pos = i;
+            }
+            i++;
+        }
+        m_oComboBox = new JComboBox<>(astr);
+        m_oComboBox.setSelectedIndex(pos);
+
+        setLayout(new GridBagLayout());
+
+        c.insets = new Insets(4, 4, 4, 4);
+        c.gridwidth = 1;
+        c.weightx = 0.8;
+        c.fill = GridBagConstraints.HORIZONTAL;
+        c.gridx = 0;
+        c.gridy = 0;
+        add(new JLabel(tr("Parameter:")), c);
+
+        c.gridwidth = 1;
+        c.gridx = 1;
+        c.gridy = 0;
+        c.weightx = 1.5;
+        add(m_oComboBox, c);
+    }
+
+    public ServerParam getSelectedParam() {
+        int nSel = m_oComboBox.getSelectedIndex();
+        return m_listServerParam.get(nSel);
+    }
+
+    public void checkComboBox() {
+        int nSel = m_oComboBox.getSelectedIndex();
+        TracerPlugin.s_oPlugin.m_oParamList.setActivParam(m_listServerParam.get(nSel));
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/GetTrace.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/GetTrace.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/GetTrace.java	(revision 36424)
@@ -0,0 +1,100 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.server;
+
+import java.util.ArrayList;
+
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParam;
+import org.openstreetmap.josm.tools.Logging;
+
+public class GetTrace extends Request {
+
+    private LatLon m_oLatLon;
+    private ServerParam m_oServerParam;
+    public ArrayList<LatLon> m_listLatLon = new ArrayList<>();
+
+    /**
+     * Trace s simple shape on position.
+     * @param oLatLon position of starting traceing.
+     * @param oParam parameter for tracing.
+     */
+    public GetTrace(LatLon oLatLon, ServerParam oParam) {
+        m_oLatLon = oLatLon;
+        m_oServerParam = oParam;
+    }
+
+    /**
+     * Thread that get a shape from the Server.
+     */
+    @Override
+    public void run() {
+        m_listLatLon = new ArrayList<>();
+
+        try {
+            String strResponse = callServer("traceOrder=GetTrace"
+                    + "&traceLat=" + m_oLatLon.lat()
+                    + "&traceLon=" + m_oLatLon.lon()
+                    + "&traceName=" + m_oServerParam.getName()
+                    + "&traceUrl=" + m_oServerParam.getUrl()
+                    + "&traceTileSize=" + m_oServerParam.getTileSize()
+                    + "&traceResolution=" + m_oServerParam.getResolution()
+                    //+ "&traceSkipBottom=" + param.getSkipBottom()
+                    + "&traceMode=" + m_oServerParam.getMode()
+                    + "&traceThreshold=" + m_oServerParam.getThreshold()
+                    + "&tracePointsPerCircle=" + m_oServerParam.getPointsPerCircle()
+                    );
+
+            if (strResponse == null || strResponse.equals("")) {
+                return;
+            }
+
+            if (checkError(strResponse) == true) {
+                return;
+            }
+
+            if (strResponse.startsWith("(")) {
+                GetPoints(strResponse);
+                return;
+            }
+            String[] astrParts = strResponse.split("&");
+
+            for (String strPart : astrParts) {
+                if (strPart.contains("tracePoints=")) {
+                    String strPoints = strPart.replace("tracePoints=", "");
+                    GetPoints(strPoints);
+                    return;
+                }
+            }
+        } catch (Exception e) {
+            //m_listLatLon = new ArrayList<>();
+            Logging.warn(e);
+        }
+    }
+
+    /**
+     * Get points from string
+     */
+    public void GetPoints(String strResponse) {
+        try {
+            if (!strResponse.startsWith("(") || !strResponse.endsWith(")")) {
+                return;
+            }
+            strResponse = strResponse.substring(1, strResponse.length()-1);
+
+            ArrayList<LatLon> nodelist = new ArrayList<>();
+
+            String[] astrPoints = strResponse.split("\\)\\(");
+            for (String strPoint : astrPoints) {
+                String[] astrParts = strPoint.split(":");
+                double x = Double.parseDouble(astrParts[0]);
+                double y = Double.parseDouble(astrParts[1]);
+                nodelist.add(new LatLon(x, y));
+            }
+            m_listLatLon = nodelist;
+        } catch (Exception e) {
+            //m_listLatLon = new ArrayList<>();
+            Logging.warn(e);
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/GetVersion.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/GetVersion.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/GetVersion.java	(revision 36424)
@@ -0,0 +1,48 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.server;
+
+import org.openstreetmap.josm.tools.Logging;
+
+public class GetVersion extends Request {
+
+    public int m_nVersionMajor = -1;
+    public int m_nVersionMinor = -1;
+    public int m_nVersionBuild = -1;
+    public int m_nVersionRevision = -1;
+
+    /**
+     * Get version from server.
+     */
+    public GetVersion() {
+    }
+
+    /**
+     * Thread that get the version of the Server.
+     */
+    @Override
+    public void run() {
+        try {
+            String strResponse = callServer("traceOrder=GetVersion");
+
+            if (strResponse == null || strResponse.equals("")) {
+                return;
+            }
+
+            if (checkError(strResponse) == true) {
+                return;
+            }
+
+            String[] astrParts = strResponse.split(":");
+            if (astrParts.length < 2) {
+                return;
+            }
+            if (astrParts.length > 0) m_nVersionMajor = Integer.parseInt(astrParts[0]);
+            if (astrParts.length > 1) m_nVersionMinor = Integer.parseInt(astrParts[1]);
+            if (astrParts.length > 2) m_nVersionBuild = Integer.parseInt(astrParts[2]);
+            if (astrParts.length > 3) m_nVersionRevision = Integer.parseInt(astrParts[3]);
+        } catch (Exception e) {
+            Logging.warn(e);
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/Request.java
===================================================================
--- /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/Request.java	(revision 36424)
+++ /applications/editors/josm/plugins/Tracer2/src/org/openstreetmap/josm/plugins/tracer2/server/Request.java	(revision 36424)
@@ -0,0 +1,60 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.tracer2.server;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.io.IOException;
+import java.net.URL;
+
+import javax.swing.JOptionPane;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.tools.HttpClient;
+
+public class Request extends Thread {
+
+    static final String URL = "http://localhost:49243/";
+
+    public Request() {
+    }
+
+    /**
+     * Send request to the server.
+     * @param strUrl request.
+     * @return Result text.
+     */
+    protected String callServer(String strUrl) {
+        try {
+            return HttpClient.create(new URL(URL + strUrl)).connect().fetchContent();
+        } catch (IOException e) {
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
+                    tr("Tracer2Server isn''t running. Please start the Server.\nIf you don''t have the server, please download it from\n{0}.",
+                            "http://sourceforge.net/projects/tracer2server/"), tr("Error"), JOptionPane.ERROR_MESSAGE);
+            return "";
+        } catch (Exception e) {
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("Tracer2Server hasn''t found anything.") + "\n",
+                    tr("Error"), JOptionPane.ERROR_MESSAGE);
+            return "";
+        }
+    }
+
+    /**
+     * Checks errors in response from the server.
+     * @param strResponse response from the server.
+     * @return Result text.
+     */
+    protected boolean checkError(String strResponse) {
+        String strIdentifier = "&traceError=";
+        if (strResponse.contains(strIdentifier)) {
+            String strError = strResponse.replaceFirst(strIdentifier, "").trim();
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(), tr("Tracer2Server has detected an error.") + "\n" + strError,
+                    tr("Error"), JOptionPane.ERROR_MESSAGE);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public void run() {
+    }
+}
Index: /applications/editors/josm/plugins/native_password_manager/LICENSE
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/LICENSE	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/LICENSE	(revision 36424)
@@ -0,0 +1,6 @@
+
+The source files in src/org/netbeans have headers indicating their license.
+
+The code in src/org/openstreetmap is released under the GNU General 
+Public License v2 or later.
+
Index: /applications/editors/josm/plugins/native_password_manager/README
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/README	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/README	(revision 36424)
@@ -0,0 +1,28 @@
+
+Native Password Manager Plugin
+==============================
+
+Prevents JOSM from saving passwords as plain text to the JOSM preferences file. Instead, uses a password manager to store the data in encrypted form.
+Supported password managers are gnome-keyring and KWallet. Apple Keychain and Windows data encryption may work, but are untested so far.
+
+The following preference keys are managed:
+    osm-server.username         // API login username
+    osm-server.password         // API login password
+    proxy.user                  // Proxy username
+    proxy.pass                  // Proxy password
+    oauth.access-token.key      // OAuth key
+    oauth.access-token.secret   // OAuth secret
+
+The keyring code from the Netbeans project is used to access the individual Password Managers. It is slightly patched, to remove Netbeans
+specific dependencies. 
+
+Original code:
+    http://hg.netbeans.org/main/file/9413a02b6f0c/keyring.impl
+    http://hg.netbeans.org/main/file/9413a02b6f0c/keyring
+    http://hg.netbeans.org/main/file/9413a02b6f0c/keyring.fallback
+Patch:
+    netbeans-keyring-patches.diff
+
+We use the GPL-v2-"classpath exception" License of Netbeans, which allows linking against code of other licenses.
+
+Author: Paul Hartmann <phaaurlt@googlemail.com>
Index: /applications/editors/josm/plugins/native_password_manager/build.xml
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/build.xml	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/build.xml	(revision 36424)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project name="native_password_manager" default="dist" basedir=".">
+
+    <!-- enter the SVN commit message -->
+    <property name="commit.message" value="Commit message"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+    <property name="plugin.main.version" value="19044"/>
+    <property name="plugin.author" value="Paul Hartmann"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.npm.NPMPlugin"/>
+    <property name="plugin.description" value="Use your system''s password manager to store the API username and password. (KWallet and gnome-keyring are supported.)"/>
+    <property name="plugin.icon" value="images/lock24x24.png"/>
+    <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/JOSM/Plugins/Native_Password_Manager"/>
+    <property name="plugin.requires" value="jna"/>
+
+    <!--
+    **********************************************************
+    ** include targets that all plugins have in common
+    **********************************************************
+    -->
+    <import file="../build-common.xml"/>
+
+    <fileset id="plugin.requires.jars" dir="${plugin.dist.dir}">
+        <include name="jna.jar"/>
+    </fileset>
+    
+</project>
Index: /applications/editors/josm/plugins/native_password_manager/gpl-2-cp.txt
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/gpl-2-cp.txt	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/gpl-2-cp.txt	(revision 36424)
@@ -0,0 +1,425 @@
+The GNU General Public License (GPL)
+Version 2, June 1991
+
+ Copyright 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim
+ copies of this license document, but changing it is not
+ allowed.
+
+                      Preamble
+
+The licenses for most software are designed to take away
+your freedom to share and change it. By contrast, the GNU
+General Public License is intended to guarantee your freedom
+to share and change free software--to make sure the software
+is free for all its users. This General Public License
+applies to most of the Free Software Foundation's software
+and to any other program whose authors commit to using it.
+(Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can
+apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom,
+not price. Our General Public Licenses are designed to make
+sure that you have the freedom to distribute copies of free
+software (and charge for this service if you wish), that you
+receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that
+forbid anyone to deny you these rights or to ask you to
+surrender the rights. These restrictions translate to
+certain responsibilities for you if you distribute copies of
+the software, or if you modify it.
+
+For example, if you distribute copies of such a program,
+whether gratis or for a fee, you must give the recipients
+all the rights that you have. You must make sure that they,
+too, receive or can get the source code. And you must show
+them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the
+software, and (2) offer you this license which gives you
+legal permission to copy, distribute and/or modify the
+software.
+
+Also, for each author's protection and ours, we want to make
+certain that everyone understands that there is no warranty
+for this free software. If the software is modified by
+someone else and passed on, we want its recipients to know
+that what they have is not the original, so that any
+problems introduced by others will not reflect on the
+original authors' reputations.
+
+Finally, any free program is threatened constantly by
+software patents. We wish to avoid the danger that
+redistributors of a free program will individually obtain
+patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must
+be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution
+and modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
+MODIFICATION
+
+0. This License applies to any program or other work which
+contains a notice placed by the copyright holder saying it
+may be distributed under the terms of this General Public
+License. The "Program", below, refers to any such program or
+work, and a "work based on the Program" means either the
+Program or any derivative work under copyright law: that is
+to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into
+another language. (Hereinafter, translation is included
+without limitation in the term "modification".) Each
+licensee is addressed as "you".
+
+Activities other than copying, distribution and modification
+are not covered by this License; they are outside its scope.
+The act of running the Program is not restricted, and the
+output from the Program is covered only if its contents
+constitute a work based on the Program (independent of
+having been made by running the Program). Whether that is
+true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the
+Program's source code as you receive it, in any medium,
+provided that you conspicuously and appropriately publish on
+each copy an appropriate copyright notice and disclaimer of
+warranty; keep intact all the notices that refer to this
+License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this License along
+with the Program.
+
+You may charge a fee for the physical act of transferring a
+copy, and you may at your option offer warranty protection
+in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any
+portion of it, thus forming a work based on the Program, and
+copy and distribute such modifications or work under the
+terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+    a) You must cause the modified files to carry prominent
+    notices stating that you changed the files and the date
+    of any change.
+
+    b) You must cause any work that you distribute or
+    publish, that in whole or in part contains or is derived
+    from the Program or any part thereof, to be licensed as
+    a whole at no charge to all third parties under the
+    terms of this License.
+
+    c) If the modified program normally reads commands
+    interactively when run, you must cause it, when started
+    running for such interactive use in the most ordinary
+    way, to print or display an announcement including an
+    appropriate copyright notice and a notice that there is
+    no warranty (or else, saying that you provide a
+    warranty) and that users may redistribute the program
+    under these conditions, and telling the user how to view
+    a copy of this License. (Exception: if the Program
+    itself is interactive but does not normally print such
+    an announcement, your work based on the Program is not
+    required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the
+Program, and can be reasonably considered independent and
+separate works in themselves, then this License, and its
+terms, do not apply to those sections when you distribute
+them as separate works. But when you distribute the same
+sections as part of a whole which is a work based on the
+Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees
+extend to the entire whole, and thus to each and every part
+regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights
+or contest your rights to work written entirely by you;
+rather, the intent is to exercise the right to control the
+distribution of derivative or collective works based on the
+Program.
+
+In addition, mere aggregation of another work not based on
+the Program with the Program (or with a work based on the
+Program) on a volume of a storage or distribution medium
+does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based
+on it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you
+also do one of the following:
+
+    a) Accompany it with the complete corresponding
+    machine-readable source code, which must be distributed
+    under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least
+    three years, to give any third party, for a charge no
+    more than your cost of physically performing source
+    distribution, a complete machine-readable copy of the
+    corresponding source code, to be distributed under the
+    terms of Sections 1 and 2 above on a medium customarily
+    used for software interchange; or,
+
+    c) Accompany it with the information you received as to
+    the offer to distribute corresponding source code. (This
+    alternative is allowed only for noncommercial
+    distribution and only if you received the program in
+    object code or executable form with such an offer, in
+    accord with Subsection b above.)
+
+The source code for a work means the preferred form of the
+work for making modifications to it. For an executable work,
+complete source code means all the source code for all
+modules it contains, plus any associated interface
+definition files, plus the scripts used to control
+compilation and installation of the executable. However, as
+a special exception, the source code distributed need not
+include anything that is normally distributed (in either
+source or binary form) with the major components (compiler,
+kernel, and so on) of the operating system on which the
+executable runs, unless that component itself accompanies
+the executable.
+
+If distribution of executable or object code is made by
+offering access to copy from a designated place, then
+offering equivalent access to copy the source code from the
+same place counts as distribution of the source code, even
+though third parties are not compelled to copy the source
+along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the
+Program except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense or distribute
+the Program is void, and will automatically terminate your
+rights under this License. However, parties who have
+received copies, or rights, from you under this License will
+not have their licenses terminated so long as such parties
+remain in full compliance.
+
+5. You are not required to accept this License, since you
+have not signed it. However, nothing else grants you
+permission to modify or distribute the Program or its
+derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or
+distributing the Program (or any work based on the Program),
+you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or
+modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based
+on the Program), the recipient automatically receives a
+license from the original licensor to copy, distribute or
+modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein. You are
+not responsible for enforcing compliance by third parties to
+this License.
+
+7. If, as a consequence of a court judgment or allegation of
+patent infringement or for any other reason (not limited to
+patent issues), conditions are imposed on you (whether by
+court order, agreement or otherwise) that contradict the
+conditions of this License, they do not excuse you from the
+conditions of this License. If you cannot distribute so as
+to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a
+consequence you may not distribute the Program at all. For
+example, if a patent license would not permit royalty-free
+redistribution of the Program by all those who receive
+copies directly or indirectly through you, then the only way
+you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or
+unenforceable under any particular circumstance, the balance
+of the section is intended to apply and the section as a
+whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to
+infringe any patents or other property right claims or to
+contest validity of any such claims; this section has the
+sole purpose of protecting the integrity of the free
+software distribution system, which is implemented by public
+license practices. Many people have made generous
+contributions to the wide range of software distributed
+through that system in reliance on consistent application of
+that system; it is up to the author/donor to decide if he or
+she is willing to distribute software through any other
+system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is
+believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is
+restricted in certain countries either by patents or by
+copyrighted interfaces, the original copyright holder who
+places the Program under this License may add an explicit
+geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or
+among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the
+body of this License.
+
+9. The Free Software Foundation may publish revised and/or
+new versions of the General Public License from time to
+time. Such new versions will be similar in spirit to the
+present version, but may differ in detail to address new
+problems or concerns.
+
+Each version is given a distinguishing version number. If
+the Program specifies a version number of this License which
+applies to it and "any later version", you have the option
+of following the terms and conditions either of that version
+or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number
+of this License, you may choose any version ever published
+by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into
+other free programs whose distribution conditions are
+different, write to the author to ask for permission. For
+software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we
+sometimes make exceptions for this. Our decision will be
+guided by the two goals of preserving the free status of all
+derivatives of our free software and of promoting the
+sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS
+NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
+COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
+TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
+WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED
+ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
+SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
+THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
+LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
+PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+              END OF TERMS AND CONDITIONS
+
+       How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the
+greatest possible use to the public, the best way to achieve
+this is to make it free software which everyone can
+redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is
+safest to attach them to the start of each source file to
+most effectively convey the exclusion of warranty; and each
+file should have at least the "copyright" line and a pointer
+to where the full notice is found.
+
+    One line to give the program's name and a brief idea of
+    what it does. Copyright (C) <year> <name of author>
+
+    This program is free software; you can redistribute it
+    and/or modify it under the terms of the GNU General
+    Public License as published by the Free Software
+    Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    This program is distributed in the hope that it will be
+    useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A
+    PARTICULAR PURPOSE. See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General
+    Public License along with this program; if not, write to
+    the Free Software Foundation, Inc., 59 Temple Place,
+    Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and
+paper mail.
+
+If the program is interactive, make it output a short notice
+like this when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of
+    author Gnomovision comes with ABSOLUTELY NO WARRANTY;
+    for details type `show w'. This is free software, and
+    you are welcome to redistribute it under certain
+    conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show
+the appropriate parts of the General Public License. Of
+course, the commands you use may be called something other
+than `show w' and `show c'; they could even be mouse-clicks
+or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a
+programmer) or your school, if any, to sign a "copyright
+disclaimer" for the program, if necessary. Here is a sample;
+alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in
+  the program `Gnomovision' (which makes passes at
+  compilers) written by James Hacker.
+
+  signature of Ty Coon, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating
+your program into proprietary programs. If your program is a
+subroutine library, you may consider it more useful to
+permit linking proprietary applications with the library. If
+this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL VERSION 2
+
+
+Certain source files distributed by Sun Microsystems, Inc.
+are subject to the following clarification and special
+exception to the GPL, but only where Sun has expressly
+included in the particular source file's header the words
+"Sun designates this particular file as subject to the
+"Classpath" exception as provided by Sun in the LICENSE file
+that accompanied this code."
+
+Linking this library statically or dynamically with other
+modules is making a combined work based on this library.
+Thus, the terms and conditions of the GNU General Public
+License cover the whole combination.
+
+As a special exception, the copyright holders of this
+library give you permission to link this library with
+independent modules to produce an executable, regardless of
+the license terms of these independent modules, and to copy
+and distribute the resulting executable under terms of your
+choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license
+of that module. An independent module is a module which is
+not derived from or based on this library. If you modify
+this library, you may extend this exception to your version
+of the library, but you are not obligated to do so. If you
+do not wish to do so, delete this exception statement from
+your version.
Index: /applications/editors/josm/plugins/native_password_manager/gpl-2.txt
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/gpl-2.txt	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/gpl-2.txt	(revision 36424)
@@ -0,0 +1,339 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
Index: /applications/editors/josm/plugins/native_password_manager/gpl-3.txt
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/gpl-3.txt	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/gpl-3.txt	(revision 36424)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: /applications/editors/josm/plugins/native_password_manager/images_nodist/lock.svg
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/images_nodist/lock.svg	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/images_nodist/lock.svg	(revision 36424)
@@ -0,0 +1,164 @@
+<?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="288.31223"
+   height="338.99783"
+   id="svg3432"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="lockey.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3434">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3389">
+      <stop
+         style="stop-color:#fff6d5;stop-opacity:1;"
+         offset="0"
+         id="stop3391" />
+      <stop
+         style="stop-color:#fff6d5;stop-opacity:0;"
+         offset="1"
+         id="stop3393" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3389"
+       id="linearGradient3421"
+       gradientUnits="userSpaceOnUse"
+       x1="286.68277"
+       y1="514.80005"
+       x2="361.53314"
+       y2="570.55762" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3346"
+       id="linearGradient3419"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.396081,0,0,0.396081,248.57108,410.85288)"
+       x1="268.67896"
+       y1="592.75702"
+       x2="329.15332"
+       y2="638.5448" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3346">
+      <stop
+         style="stop-color:#ffeeaa;stop-opacity:1;"
+         offset="0"
+         id="stop3348" />
+      <stop
+         style="stop-color:#ffeeaa;stop-opacity:0;"
+         offset="1"
+         id="stop3350" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3346"
+       id="linearGradient3417"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0.8639194,-0.8639194)"
+       x1="268.67896"
+       y1="592.75702"
+       x2="329.15332"
+       y2="638.5448" />
+    <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="perspective3440" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="375"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="640"
+     inkscape:window-height="669"
+     inkscape:window-x="161"
+     inkscape:window-y="95" />
+  <metadata
+     id="metadata3437">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-230.84389,-362.86327)">
+    <path
+       style="fill:#ffd42a;fill-rule:evenodd;stroke:#ffef76;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 518.15611,649.03749 C 516.43984,643.88621 517.27433,637.06501 513.42724,632.13631 C 509.08556,630.99731 508.12898,629.58081 503.39414,635.59208 C 499.46298,620.7968 493.70624,629.85966 488.51081,638.42617 C 486.83484,629.50127 487.13632,625.14262 477.77814,632.25557 C 470.86334,623.60659 466.32191,626.94282 463.07148,637.66871 C 457.97429,626.71522 458.17696,628.99537 455.69504,629.49777 C 450.6132,637.1967 447.18162,646.79031 423.82166,639.15602 C 410.4087,630.8777 412.98508,612.91949 394.94772,604.53323 C 380.29098,599.47584 361.72476,602.7096 351.79041,615.21494 C 337.62854,648.59732 341.01042,680.39793 355.40404,693.08092 C 375.98386,712.15631 406.20328,692.49504 419.34343,673.36193 C 418.21913,661.51112 453.07713,658.64339 466.41825,658.34165 C 477.54977,658.31514 488.65676,657.81825 499.78539,657.57011 C 506.6115,657.06487 514.27199,655.2371 518.15611,649.03749 z M 372.11491,655.86357 C 370.78983,660.25053 368.32583,663.50482 365.38883,664.20897 C 360.68964,665.33562 356.53614,659.48361 356.11019,651.14175 C 355.68424,642.79991 359.15729,635.11364 363.85649,633.98699 C 368.55566,632.86034 372.70918,638.71235 373.13513,647.0542 C 373.29485,650.18239 372.90996,653.23141 372.11491,655.86357 z"
+       id="path3290"
+       sodipodi:nodetypes="ccccccccccccccccssssc" />
+    <g
+       id="g3397"
+       transform="translate(-40.368785,-162.03383)">
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2467"
+         d="M 271.21268,647.6366 C 276.49124,624.52298 288.1134,602.57705 305.63392,586.4263 C 335.5376,577.68347 365.5467,569.1482 395.82621,561.8479 C 416.12728,558.35939 436.15883,552.72026 456.76676,551.43017 C 470.01944,549.94476 481.03638,559.5032 486.4435,570.79196 C 493.81386,586.05954 497.11985,602.87289 502.57751,618.85515 C 506.94805,634.86673 511.81669,651.0832 513.24328,667.60556 C 510.51878,684.25879 498.43637,702.7852 488.91904,715.42017 C 483.60726,720.84437 332.64459,749.43774 325.17608,751.37663"
+         style="fill:#aa8800;fill-rule:evenodd" />
+      <path
+         id="rect2437"
+         d="M 399.24085,524.8971 C 392.27249,525.10315 385.21367,528.25023 378.2096,529.4596 C 361.05622,533.80082 343.78371,537.36442 326.7096,542.2096 C 318.77956,545.64034 311.57808,557.45151 313.24085,569.42835 C 313.73302,576.56166 314.92451,587.95265 315.74085,597.30335 C 317.13524,598.39716 318.79618,599.06659 320.86585,599.1471 C 323.34892,599.24374 325.20261,598.3483 326.9596,597.8971 L 326.8971,597.3971 C 328.2234,597.23039 329.31928,596.68656 329.3971,595.7096 C 329.44794,593.13342 328.16451,590.82872 327.3346,588.4596 C 326.90667,586.55312 324.92725,580.63111 324.36585,576.86585 C 324.33184,575.98741 324.31051,575.12457 324.30335,574.2721 C 324.21905,564.24129 326.23142,556.18196 335.8346,554.11585 C 335.83461,554.11589 390.90312,538.4349 393.0221,538.7096 C 402.20429,539.89998 402.50219,554.6 403.3346,565.7096 L 404.61585,577.55335 C 406.58371,578.4922 408.73818,578.80526 411.1471,578.0846 C 414.12298,577.1943 415.18628,576.1029 417.42835,574.7721 C 417.50005,574.72954 417.54596,574.65066 417.61585,574.5846 C 416.04527,559.52254 414.4125,544.29427 413.8971,538.86585 C 412.11433,530.57086 406.3459,525.86371 400.3971,525.0221 C 400.00049,524.96599 399.63762,524.91869 399.24085,524.8971 z M 419.6471,594.55335 C 417.18224,595.72855 414.4222,596.52871 412.4596,597.11585 C 409.88221,597.88689 407.99448,596.94698 406.5221,595.30335 L 408.05335,609.24085 C 410.22913,608.521 418.9552,609.25843 420.86585,608.4596 C 420.71525,605.7793 420.24722,600.7345 419.6471,594.55335 z"
+         style="fill:#806600;fill-opacity:1;stroke:none;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         transform="matrix(0.9695481,-0.2449011,0.2449011,0.9695481,0,0)"
+         ry="34.428574"
+         rx="40.14286"
+         y="667.30945"
+         x="103.4785"
+         height="154.28572"
+         width="208.57143"
+         id="rect2383"
+         style="fill:#d4aa00;fill-opacity:1;stroke:none;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         id="path3276"
+         d="M 363.12909,682.70746 C 357.87868,680.28943 353.38012,674.84599 354.0628,668.7948 C 356.23838,663.48912 360.90142,659.70527 365.18966,656.13445 C 369.66554,653.3783 375.10098,652.95329 380.18745,652.28358 C 385.13805,651.7223 390.1257,654.70192 391.61115,659.50587 C 393.47508,664.99177 393.3683,671.18131 390.91946,676.47448 C 388.43391,681.46162 390.96572,687.29844 395.75852,689.73004 C 400.37874,693.06411 406.07695,695.47057 409.04304,700.60254 C 409.0656,704.91294 403.67625,704.90912 400.55454,705.26286 C 389.17413,706.78536 378.19008,710.24283 367.14183,713.23921 C 361.90294,711.43555 365.75944,704.87181 367.44752,701.65846 C 369.66019,697.17632 374.72222,690.6533 369.83138,686.25437 C 367.89212,684.58313 365.42901,683.74197 363.12909,682.70746 z"
+         style="fill:#2b2200;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3317"
+         d="M 299.78006,728.39237 C 280.18224,693.78928 274.80817,667.89384 280.32805,627.06807 C 296.12108,602.67418 418.47222,574.81648 431.34747,575.81008 C 321.20106,623.43913 314.99932,644.61938 299.78006,728.39237 z"
+         style="fill:url(#linearGradient3417);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3354"
+         d="M 371.66901,690.78661 C 363.90668,677.08099 358.80785,677.22026 360.99416,661.04995 C 367.24948,651.38799 389.88048,663.82535 407.93891,648.66835 C 364.31201,667.53331 377.69707,657.60573 371.66901,690.78661 z"
+         style="fill:url(#linearGradient3419);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccsccccsscc"
+         id="path3378"
+         d="M 372.78693,536.99716 C 349.94997,536.96405 325.67698,540.13165 317.28693,553.09091 C 315.81077,564.00879 312.7148,569.25204 313.34943,571.99716 C 316.98582,587.72659 320.17298,587.24119 325.81818,591.99716 C 326.4706,591.23952 327.02221,590.55748 327.63068,589.84091 C 327.50992,589.53083 327.39607,589.21496 327.28693,588.90341 C 326.85899,586.99693 324.87958,581.07492 324.31818,577.30966 C 324.28416,576.43122 324.26284,575.56838 324.25568,574.71591 C 324.17137,564.6851 326.18375,556.62577 335.78693,554.55966 C 335.78693,554.55969 374.93883,543.40872 388.34943,540.12216 C 388.67785,539.23592 378.53109,537.00549 372.78693,536.99716 z"
+         style="fill:url(#linearGradient3421);fill-opacity:1;stroke:none;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
Index: /applications/editors/josm/plugins/native_password_manager/netbeans-keyring-patches.diff
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/netbeans-keyring-patches.diff	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/netbeans-keyring-patches.diff	(revision 36424)
@@ -0,0 +1,357 @@
+Index: native-password-manager/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java
+===================================================================
+--- native-password-manager.orig/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java	2011-07-18 13:04:37.141522563 +0200
++++ native-password-manager/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java	2011-07-18 13:09:34.194995561 +0200
+@@ -42,49 +42,41 @@
+ 
+ package org.netbeans.modules.keyring.fallback;
+ 
+-import java.util.Arrays;
+-import java.util.HashMap;
+-import java.util.Map;
+ import java.util.UUID;
+-import java.util.concurrent.Callable;
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+-import java.util.prefs.BackingStoreException;
+-import java.util.prefs.Preferences;
+-import org.netbeans.api.keyring.Keyring;
+ import org.netbeans.modules.keyring.impl.Utils;
+ import org.netbeans.modules.keyring.spi.EncryptionProvider;
+ import org.netbeans.spi.keyring.KeyringProvider;
+-import org.openide.DialogDisplayer;
+-import org.openide.NotifyDescriptor;
+-import org.openide.util.Lookup;
+-import org.openide.util.NbBundle;
+-import org.openide.util.NbPreferences;
+-import org.openide.util.lookup.ServiceProvider;
+ 
+ /**
+  * Platform-independent keyring provider using a master password and the user directory.
+  */
+-@ServiceProvider(service=KeyringProvider.class, position=1000)
+-public class FallbackProvider implements KeyringProvider, Callable<Void> {
++public class FallbackProvider implements KeyringProvider {
+ 
+     private static final Logger LOG = Logger.getLogger(FallbackProvider.class.getName());
+     private static final String DESCRIPTION = ".description";
+     private static final String SAMPLE_KEY = "__sample__";
+ 
+     private EncryptionProvider encryption;
+- 
++    private IPreferences prefs;
++
++    // simple interface for a generic preferences store
++    public interface IPreferences {
++        byte[] getByteArray(String key, byte[] def);
++        void putByteArray(String key, byte[] val);
++        void remove(String key);
++    }
++
++    public FallbackProvider(EncryptionProvider encryption, IPreferences prefs) {
++        this.encryption = encryption;
++        this.prefs = prefs;
++    }
++
+     public boolean enabled() {
+-        for (EncryptionProvider p : Lookup.getDefault().lookupAll(EncryptionProvider.class)) {
+-            if (p.enabled()) {
+-                encryption = p;
+-                Preferences prefs = prefs();
+-                Utils.goMinusR(prefs);
+-                p.encryptionChangingCallback(this);
+-                if (!testSampleKey(prefs)) {
+-                    continue;
+-                }
+-                LOG.log(Level.FINE, "Using provider: {0}", p);
++        if (encryption.enabled()) {
++            if (testSampleKey()) {
++                LOG.log(Level.FINE, "Using provider: {0}", encryption);
+                 return true;
+             }
+         }
+@@ -92,65 +84,20 @@
+         return false;
+     }
+     
+-    private boolean testSampleKey(Preferences prefs) {
+-        byte[] ciphertext = prefs.getByteArray(SAMPLE_KEY, null);
+-        if (ciphertext == null) {
+-            encryption.freshKeyring(true);
+-            if (_save(SAMPLE_KEY, (SAMPLE_KEY + UUID.randomUUID()).toCharArray(),
+-                    NbBundle.getMessage(FallbackProvider.class, "FallbackProvider.sample_key.description"))) {
+-                LOG.fine("saved sample key");
+-                return true;
+-            } else {
+-                LOG.fine("could not save sample key");
+-                return false;
+-            }
+-        } else {
+-            encryption.freshKeyring(false);
+-            while (true) {
+-                try {
+-                    if (new String(encryption.decrypt(ciphertext)).startsWith(SAMPLE_KEY)) {
+-                        LOG.fine("succeeded in decrypting sample key");
+-                        return true;
+-                    } else {
+-                        LOG.fine("wrong result decrypting sample key");
+-                    }
+-                } catch (Exception x) {
+-                    LOG.log(Level.FINE, "failed to decrypt sample key", x);
+-                }
+-                if (!encryption.decryptionFailed()) {
+-                    LOG.fine("sample key decryption failed");
+-                    return promptToDelete(prefs);
+-                }
+-                LOG.fine("will retry decryption of sample key");
+-            }
+-        }
+-    }
+-
+-    private boolean promptToDelete(Preferences prefs) {
+-        Object result = DialogDisplayer.getDefault().notify(new NotifyDescriptor.Confirmation(
+-                NbBundle.getMessage(FallbackProvider.class, "FallbackProvider.msg_clear_keys"),
+-                NbBundle.getMessage(FallbackProvider.class, "FallbackProvider.title_clear_keys"),
+-                NotifyDescriptor.OK_CANCEL_OPTION));
+-        if (result == NotifyDescriptor.OK_OPTION) {
+-            try {
+-                LOG.log(Level.FINE, "agreed to delete stored passwords: {0}", Arrays.asList(prefs.keys()));
+-                prefs.clear();
+-                return testSampleKey(prefs);
+-            } catch (BackingStoreException x) {
+-                LOG.log(Level.INFO, null, x);
+-            }
++    private boolean testSampleKey() {
++        encryption.freshKeyring(true);
++        if (_save(SAMPLE_KEY, (SAMPLE_KEY + UUID.randomUUID()).toCharArray(),
++                "Sample value ensuring that decryption is working.")) {
++            LOG.fine("saved sample key");
++            return true;
+         } else {
+-            LOG.fine("refused to delete stored passwords");
++            LOG.fine("could not save sample key");
++            return false;
+         }
+-        return false;
+-    }
+-
+-    private Preferences prefs() {
+-        return NbPreferences.forModule(Keyring.class).node(encryption.id());
+     }
+ 
+     public char[] read(String key) {
+-        byte[] ciphertext = prefs().getByteArray(key, null);
++        byte[] ciphertext = prefs.getByteArray(key, null);
+         if (ciphertext == null) {
+             return null;
+         }
+@@ -166,47 +113,18 @@
+         _save(key, password, description);
+     }
+     private boolean _save(String key, char[] password, String description) {
+-        Preferences prefs = prefs();
+         try {
+             prefs.putByteArray(key, encryption.encrypt(password));
+         } catch (Exception x) {
+             LOG.log(Level.FINE, "failed to encrypt password for " + key, x);
+             return false;
+         }
+-        if (description != null) {
+-            // Preferences interface gives no access to *.properties comments, so:
+-            prefs.put(key + DESCRIPTION, description);
+-        }
+         return true;
+     }
+ 
+     public void delete(String key) {
+-        Preferences prefs = prefs();
+         prefs.remove(key);
+         prefs.remove(key + DESCRIPTION);
+     }
+ 
+-    public Void call() throws Exception { // encryption changing
+-        LOG.fine("encryption changing");
+-        Map<String,char[]> saved = new HashMap<String,char[]>();
+-        Preferences prefs = prefs();
+-        for (String k : prefs.keys()) {
+-            if (k.endsWith(DESCRIPTION)) {
+-                continue;
+-            }
+-            byte[] ciphertext = prefs.getByteArray(k, null);
+-            if (ciphertext == null) {
+-                continue;
+-            }
+-            saved.put(k, encryption.decrypt(ciphertext));
+-        }
+-        LOG.log(Level.FINE, "reencrypting keys: {0}", saved.keySet());
+-        encryption.encryptionChanged();
+-        for (Map.Entry<String,char[]> entry : saved.entrySet()) {
+-            prefs.putByteArray(entry.getKey(), encryption.encrypt(entry.getValue()));
+-        }
+-        LOG.fine("encryption changing finished");
+-        return null;
+-    }
+-
+ }
+Index: native-password-manager/src/org/netbeans/modules/keyring/gnome/GnomeProvider.java
+===================================================================
+--- native-password-manager.orig/src/org/netbeans/modules/keyring/gnome/GnomeProvider.java	2011-07-18 13:04:37.141522563 +0200
++++ native-password-manager/src/org/netbeans/modules/keyring/gnome/GnomeProvider.java	2011-07-18 13:05:00.841640080 +0200
+@@ -43,16 +43,11 @@
+ package org.netbeans.modules.keyring.gnome;
+ 
+ import com.sun.jna.Pointer;
+-import java.text.MessageFormat;
+-import java.util.MissingResourceException;
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+ import static org.netbeans.modules.keyring.gnome.GnomeKeyringLibrary.*;
+ import org.netbeans.spi.keyring.KeyringProvider;
+-import org.openide.util.NbBundle;
+-import org.openide.util.lookup.ServiceProvider;
+ 
+-@ServiceProvider(service=KeyringProvider.class, position=100)
+ public class GnomeProvider implements KeyringProvider {
+ 
+     private static final Logger LOG = Logger.getLogger(GnomeProvider.class.getName());
+@@ -74,14 +69,7 @@
+             LOG.fine("no GNOME_KEYRING_* environment variable set");
+             return false;
+         }
+-        String appName;
+-        try {
+-            appName = MessageFormat.format(
+-                    NbBundle.getBundle("org.netbeans.core.windows.view.ui.Bundle").getString("CTL_MainWindow_Title_No_Project"),
+-                    /*System.getProperty("netbeans.buildnumber")*/"…");
+-        } catch (MissingResourceException x) {
+-            appName = "NetBeans"; // NOI18N
+-        }
++        String appName = "JOSM";
+         try {
+             // Need to do this somewhere, or we get warnings on console.
+             // Also used by confirmation dialogs to give the app access to the login keyring.
+Index: native-password-manager/src/org/netbeans/modules/keyring/kde/KWalletProvider.java
+===================================================================
+--- native-password-manager.orig/src/org/netbeans/modules/keyring/kde/KWalletProvider.java	2011-07-18 13:04:37.149522597 +0200
++++ native-password-manager/src/org/netbeans/modules/keyring/kde/KWalletProvider.java	2011-07-18 13:05:00.849640122 +0200
+@@ -45,20 +45,15 @@
+ import java.io.BufferedReader;
+ import java.io.IOException;
+ import java.io.InputStreamReader;
+-import java.text.MessageFormat;
+ import java.util.Arrays;
+-import java.util.MissingResourceException;
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+ import org.netbeans.spi.keyring.KeyringProvider;
+-import org.openide.util.NbBundle;
+-import org.openide.util.lookup.ServiceProvider;
+ 
+ /**
+  *
+  * @author psychollek, ynov
+  */
+-@ServiceProvider(service=KeyringProvider.class, position=99)
+ public class KWalletProvider implements KeyringProvider{
+ 
+     private static final Logger logger = Logger.getLogger(KWalletProvider.class.getName());
+@@ -221,13 +216,7 @@
+     }
+ 
+     private char[] getApplicationName(boolean version){
+-        String appName;
+-        try {
+-            appName = MessageFormat.format(NbBundle.getBundle("org.netbeans.core.windows.view.ui.Bundle").getString("CTL_MainWindow_Title_No_Project"),version ? System.getProperty("netbeans.buildnumber"):"");
+-        } catch (MissingResourceException x) {
+-            appName = "NetBeans"+(version? " "+System.getProperty("netbeans.buildnumber"):"");
+-        }
+-        return appName.toCharArray();
++        return "JOSM".toCharArray();
+     }
+ 
+     private void warning(String descr) {
+Index: native-password-manager/src/org/netbeans/modules/keyring/mac/MacProvider.java
+===================================================================
+--- native-password-manager.orig/src/org/netbeans/modules/keyring/mac/MacProvider.java	2011-07-18 13:04:37.157522639 +0200
++++ native-password-manager/src/org/netbeans/modules/keyring/mac/MacProvider.java	2011-07-18 13:05:00.849640122 +0200
+@@ -47,26 +47,19 @@
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+ import org.netbeans.spi.keyring.KeyringProvider;
+-import org.openide.util.Utilities;
+-import org.openide.util.lookup.ServiceProvider;
+ 
+-@ServiceProvider(service=KeyringProvider.class, position=200)
+ public class MacProvider implements KeyringProvider {
+ 
+     private static final Logger LOG = Logger.getLogger(MacProvider.class.getName());
+ 
+     public boolean enabled() {
+-        if (Boolean.getBoolean("netbeans.keyring.no.native")) {
+-            LOG.fine("native keyring integration disabled");
+-            return false;
+-        }
+-        return Utilities.isMac();
++        return true; // test elsewhere if we are on a mac
+     }
+ 
+     public char[] read(String key) {
+         try {
+             byte[] serviceName = key.getBytes("UTF-8");
+-            byte[] accountName = "NetBeans".getBytes("UTF-8");
++            byte[] accountName = "JOSM".getBytes("UTF-8");
+             int[] dataLength = new int[1];
+             Pointer[] data = new Pointer[1];
+             error("find", SecurityLibrary.LIBRARY.SecKeychainFindGenericPassword(null, serviceName.length, serviceName,
+@@ -86,7 +79,7 @@
+         delete(key); // XXX supposed to use SecKeychainItemModifyContent instead, but this seems like too much work
+         try {
+             byte[] serviceName = key.getBytes("UTF-8");
+-            byte[] accountName = "NetBeans".getBytes("UTF-8");
++            byte[] accountName = "JOSM".getBytes("UTF-8");
+             // Keychain Access seems to expect UTF-8, so do not use Utils.chars2Bytes:
+             byte[] data = new String(password).getBytes("UTF-8");
+             error("save", SecurityLibrary.LIBRARY.SecKeychainAddGenericPassword(null, serviceName.length, serviceName,
+@@ -100,7 +93,7 @@
+     public void delete(String key) {
+         try {
+             byte[] serviceName = key.getBytes("UTF-8");
+-            byte[] accountName = "NetBeans".getBytes("UTF-8");
++            byte[] accountName = "JOSM".getBytes("UTF-8");
+             Pointer[] itemRef = new Pointer[1];
+             error("find (for delete)", SecurityLibrary.LIBRARY.SecKeychainFindGenericPassword(null, serviceName.length, serviceName,
+                     accountName.length, accountName, null, null, itemRef));
+Index: native-password-manager/src/org/netbeans/modules/keyring/win32/Win32Protect.java
+===================================================================
+--- native-password-manager.orig/src/org/netbeans/modules/keyring/win32/Win32Protect.java	2011-07-18 13:04:37.165522672 +0200
++++ native-password-manager/src/org/netbeans/modules/keyring/win32/Win32Protect.java	2011-07-18 13:05:00.849640122 +0200
+@@ -54,28 +54,18 @@
+ import java.util.logging.Logger;
+ import org.netbeans.modules.keyring.impl.Utils;
+ import org.netbeans.modules.keyring.spi.EncryptionProvider;
+-import org.openide.util.Utilities;
+-import org.openide.util.lookup.ServiceProvider;
+ 
+ /**
+  * Data protection utility for Microsoft Windows.
+  * XXX org.tmatesoft.svn.core.internal.util.jna.SVNWinCrypt is a possibly more robust implementation
+  * (though it seems to set CRYPTPROTECT_UI_FORBIDDEN which we do not necessarily want).
+  */
+-@ServiceProvider(service=EncryptionProvider.class, position=100)
+ public class Win32Protect implements EncryptionProvider {
+ 
+     private static final Logger LOG = Logger.getLogger(Win32Protect.class.getName());
+     
+     public @Override boolean enabled() {
+-        if (!Utilities.isWindows()) {
+-            LOG.fine("not running on Windows");
+-            return false;
+-        }
+-        if (Boolean.getBoolean("netbeans.keyring.no.native")) {
+-            LOG.fine("native keyring integration disabled");
+-            return false;
+-        }
++        // asssume, we have windows os
+         try {
+             if (CryptLib.INSTANCE == null) {
+                 LOG.fine("loadLibrary -> null");
Index: /applications/editors/josm/plugins/native_password_manager/pom.xml
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/pom.xml	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/pom.xml	(revision 36424)
@@ -0,0 +1,52 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.openstreetmap.josm.plugins</groupId>
+        <artifactId>plugin-root</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>native_password_manager</artifactId>
+
+    <url>${plugin.link}</url>
+    <developers>
+        <developer>
+            <name>Paul Hartmann</name>
+        </developer>
+    </developers>
+    <properties>
+        <plugin.src.dir>src</plugin.src.dir>
+        <plugin.main.version>19044</plugin.main.version>
+        <plugin.author>Paul Hartmann</plugin.author>
+        <plugin.class>org.openstreetmap.josm.plugins.npm.NPMPlugin</plugin.class>
+        <plugin.description>Use your system''s password manager to store the API username and password. (KWallet and gnome-keyring are supported.)</plugin.description>
+        <plugin.icon>images/lock24x24.png</plugin.icon>
+        <plugin.link>https://wiki.openstreetmap.org/wiki/JOSM/Plugins/Native_Password_Manager</plugin.link>
+        <plugin.requires>jna</plugin.requires>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.openstreetmap.josm.plugins</groupId>
+            <artifactId>jna</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestEntries>
+                            <Plugin-Link>${plugin.link}</Plugin-Link>
+                            <Plugin-Icon>${plugin.icon}</Plugin-Icon>
+                            <Plugin-Requires>${plugin.requires}</Plugin-Requires>
+                        </manifestEntries>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java	(revision 36424)
@@ -0,0 +1,137 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.fallback;
+
+import java.nio.charset.StandardCharsets;
+import java.security.SecureRandom;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.netbeans.modules.keyring.spi.EncryptionProvider;
+import org.netbeans.spi.keyring.KeyringProvider;
+
+/**
+ * Platform-independent keyring provider using a master password and the user directory.
+ */
+public class FallbackProvider implements KeyringProvider {
+
+    private static final Logger LOG = Logger.getLogger(FallbackProvider.class.getName());
+    private static final String DESCRIPTION = ".description";
+    private static final String SAMPLE_KEY = "__sample__";
+
+    private EncryptionProvider encryption;
+    private IPreferences prefs;
+
+    // simple interface for a generic preferences store
+    public interface IPreferences {
+        byte[] getByteArray(String key, byte[] def);
+        void putByteArray(String key, byte[] val);
+        void remove(String key);
+    }
+
+    public FallbackProvider(EncryptionProvider encryption, IPreferences prefs) {
+        this.encryption = encryption;
+        this.prefs = prefs;
+    }
+
+    @Override
+    public boolean enabled() {
+        if (encryption.enabled()) {
+            if (testSampleKey()) {
+                LOG.log(Level.FINE, "Using provider: {0}", encryption);
+                return true;
+            }
+        }
+        LOG.fine("No provider");
+        return false;
+    }
+    
+    private boolean testSampleKey() {
+        encryption.freshKeyring(true);
+        byte[] randomArray = new byte[36];
+        new SecureRandom().nextBytes(randomArray);
+        if (_save(SAMPLE_KEY, (SAMPLE_KEY + new String(randomArray, StandardCharsets.UTF_8)).toCharArray())) {
+            LOG.fine("saved sample key");
+            return true;
+        } else {
+            LOG.fine("could not save sample key");
+            return false;
+        }
+    }
+
+    @Override
+    public char[] read(String key) {
+        byte[] ciphertext = prefs.getByteArray(key, null);
+        if (ciphertext == null) {
+            return null;
+        }
+        try {
+            return encryption.decrypt(ciphertext);
+        } catch (Exception x) {
+            LOG.log(Level.FINE, "failed to decrypt password for " + key, x);
+        }
+        return null;
+    }
+
+    @Override
+    public void save(String key, char[] password, String description) {
+        _save(key, password);
+    }
+
+    private boolean _save(String key, char[] password) {
+        try {
+            prefs.putByteArray(key, encryption.encrypt(password));
+        } catch (Exception x) {
+            LOG.log(Level.FINE, "failed to encrypt password for " + key, x);
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public void delete(String key) {
+        prefs.remove(key);
+        prefs.remove(key + DESCRIPTION);
+    }
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java	(revision 36424)
@@ -0,0 +1,176 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.gnome;
+
+import com.sun.jna.DefaultTypeMapper; // NOSONAR
+import com.sun.jna.FromNativeContext;
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.Structure;
+import com.sun.jna.ToNativeContext;
+import com.sun.jna.TypeConverter;
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * JNA wrapper for certain functions from GNOME Keyring API.
+ * #178571: must work against GNOME 2.6 to support JDS 3 (Solaris 10).
+ * @see <a href="http://library.gnome.org/devel/gnome-keyring/stable/">gnome-keyring API Reference</a>
+ */
+public interface GnomeKeyringLibrary extends Library {
+
+    class LibFinder {
+        private static final String GENERIC = "gnome-keyring";
+        // http://packages.ubuntu.com/search?suite=precise&arch=any&mode=exactfilename&searchon=contents&keywords=libgnome-keyring.so.0
+        private static final String EXPLICIT_ONEIRIC = "/usr/lib/libgnome-keyring.so.0";
+        private static GnomeKeyringLibrary load(Map<String,?> options) {
+            try {
+                return Native.load(GENERIC, GnomeKeyringLibrary.class, options);
+            } catch (UnsatisfiedLinkError x) {
+                // #203735: on Oneiric, may have trouble finding right lib.
+                // Precise is using multiarch (#211401) which should work automatically using JNA 3.4+ (#211403).
+                // Unclear if this workaround is still needed for Oneiric with 3.4, but seems harmless to leave it in for now.
+                if (new File(EXPLICIT_ONEIRIC).isFile()) {
+                    return Native.load(EXPLICIT_ONEIRIC, GnomeKeyringLibrary.class, options);
+                } else {
+                    throw x;
+                }
+            }
+        }
+        private LibFinder() {}
+    }
+
+    GnomeKeyringLibrary LIBRARY = LibFinder.load(Collections.singletonMap(OPTION_TYPE_MAPPER, new DefaultTypeMapper() {
+        {
+            addTypeConverter(Boolean.TYPE, new TypeConverter() { // #198921
+                @Override public Object toNative(Object value, ToNativeContext context) {
+                    return Boolean.TRUE.equals(value) ? 1 : 0;
+                }
+                @Override public Object fromNative(Object value, FromNativeContext context) {
+                    return ((Integer) value).intValue() != 0;
+                }
+                @Override public Class<?> nativeType() {
+                    // gint is 32-bit int
+                    return Integer.class;
+                }
+            });
+        }
+    }));
+
+    boolean gnome_keyring_is_available();
+
+    /*GnomeKeyringItemType*/int GNOME_KEYRING_ITEM_GENERIC_SECRET = 0;
+
+    // GnomeKeyringAttributeList gnome_keyring_attribute_list_new() = g_array_new(FALSE, FALSE, sizeof(GnomeKeyringAttribute))
+    int GnomeKeyringAttribute_SIZE = Native.POINTER_SIZE * 3; // conservatively: 2 pointers + 1 enum
+
+    void gnome_keyring_attribute_list_append_string(
+            /*GnomeKeyringAttributeList*/Pointer attributes,
+            String name,
+            String value);
+
+    void gnome_keyring_attribute_list_free(
+            /*GnomeKeyringAttributeList*/Pointer attributes);
+
+    int gnome_keyring_item_create_sync(
+            String keyring,
+            /*GnomeKeyringItemType*/int type,
+            String display_name,
+            /*GnomeKeyringAttributeList*/Pointer attributes,
+            String secret,
+            boolean update_if_exists,
+            int[] item_id);
+
+    int gnome_keyring_item_delete_sync(
+            String keyring,
+            int id);
+
+    int gnome_keyring_find_items_sync(
+            /*GnomeKeyringItemType*/int type,
+            /*GnomeKeyringAttributeList*/Pointer attributes,
+            /*GList<GnomeKeyringFound>*/Pointer[] found);
+
+    void gnome_keyring_found_list_free(
+            /*GList<GnomeKeyringFound>*/Pointer found_list);
+
+    class GnomeKeyringFound extends Structure {
+        public String keyring;
+        public int item_id;
+        public /*GnomeKeyringAttributeList*/Pointer attributes;
+        public String secret;
+
+        @Override
+        protected List<String> getFieldOrder() {
+            return Arrays.asList(
+                "keyring",
+                "item_id",
+                "attributes",
+                "secret"
+            );
+        }
+    }
+
+    /** http://library.gnome.org/devel/glib/2.6/glib-Miscellaneous-Utility-Functions.html#g-set-application-name */
+    void g_set_application_name(String name);
+
+    /** http://library.gnome.org/devel/glib/2.6/glib-Arrays.html */
+
+    Pointer g_array_new(
+            /*gboolean*/int zero_terminated,
+            /*gboolean*/int clear,
+            int element_size);
+
+    /** http://library.gnome.org/devel/glib/2.6/glib-Doubly-Linked-Lists.html */
+
+    int g_list_length(
+            Pointer list);
+
+    /*gpointer*/GnomeKeyringFound g_list_nth_data(
+            Pointer list,
+            int n);
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/gnome/GnomeProvider.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/gnome/GnomeProvider.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/gnome/GnomeProvider.java	(revision 36424)
@@ -0,0 +1,188 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.gnome;
+
+import static org.netbeans.modules.keyring.gnome.GnomeKeyringLibrary.GNOME_KEYRING_ITEM_GENERIC_SECRET;
+import static org.netbeans.modules.keyring.gnome.GnomeKeyringLibrary.GnomeKeyringAttribute_SIZE;
+import static org.netbeans.modules.keyring.gnome.GnomeKeyringLibrary.LIBRARY;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.netbeans.modules.keyring.gnome.GnomeKeyringLibrary.GnomeKeyringFound;
+import org.netbeans.spi.keyring.KeyringProvider;
+
+import com.sun.jna.Pointer;
+
+public class GnomeProvider implements KeyringProvider {
+
+    private static final Logger LOG = Logger.getLogger(GnomeProvider.class.getName());
+    private static final String KEY = "key"; // NOI18N
+
+    public @Override boolean enabled() {
+        if (Boolean.getBoolean("netbeans.keyring.no.native")) {
+            LOG.fine("native keyring integration disabled");
+            return false;
+        }
+        boolean envVarSet = false;
+        for (String key : System.getenv().keySet()) {
+            if (key.startsWith("GNOME_KEYRING_")) { // NOI18N
+                envVarSet = true;
+                break;
+            }
+        }
+        if (!envVarSet) {
+            LOG.fine("no GNOME_KEYRING_* environment variable set");
+            return false;
+        }
+        String appName = "JOSM";
+        try {
+            // Need to do this somewhere, or we get warnings on console.
+            // Also used by confirmation dialogs to give the app access to the login keyring.
+            LIBRARY.g_set_application_name(appName);
+            if (!LIBRARY.gnome_keyring_is_available()) {
+                return false;
+            }
+            // #178571: try to read some key just to make sure gnome_keyring_find_password_sync is bound:
+            read("NoNeXiStEnT"); // NOI18N
+            return true;
+        } catch (Throwable t) {
+            LOG.log(Level.FINE, null, t);
+            return false;
+        }
+    }
+
+    public @Override char[] read(String key) {
+        Pointer[] found = new Pointer[1];
+        Pointer attributes = LIBRARY.g_array_new(0, 0, GnomeKeyringAttribute_SIZE);
+        try {
+            LIBRARY.gnome_keyring_attribute_list_append_string(attributes, KEY, key);
+            error(GnomeKeyringLibrary.LIBRARY.gnome_keyring_find_items_sync(GNOME_KEYRING_ITEM_GENERIC_SECRET, attributes, found));
+        } finally {
+            LIBRARY.gnome_keyring_attribute_list_free(attributes);
+        }
+        if (found[0] != null) {
+            try {
+                if (LIBRARY.g_list_length(found[0]) > 0) {
+                    GnomeKeyringFound result = LIBRARY.g_list_nth_data(found[0], 0);
+                    if (result != null) {
+                        if (result.secret != null) {
+                            return result.secret.toCharArray();
+                        } else {
+                            LOG.warning("#183670: GnomeKeyringFound.secret == null");
+                            delete(key);
+                        }
+                    } else {
+                        LOG.warning("#183670: GList<GnomeKeyringFound>[0].result == null");
+                    }
+                }
+            } finally {
+                LIBRARY.gnome_keyring_found_list_free(found[0]);
+            }
+        }
+        return null;
+    }
+
+    public @Override void save(String key, char[] password, String description) {
+        Pointer attributes = LIBRARY.g_array_new(0, 0, GnomeKeyringAttribute_SIZE);
+        try {
+            LIBRARY.gnome_keyring_attribute_list_append_string(attributes, KEY, key);
+            int[] item_id = new int[1];
+            error(GnomeKeyringLibrary.LIBRARY.gnome_keyring_item_create_sync(
+                    null, GNOME_KEYRING_ITEM_GENERIC_SECRET, description != null ? description : key, attributes, new String(password), true, item_id));
+        } finally {
+            LIBRARY.gnome_keyring_attribute_list_free(attributes);
+        }
+    }
+
+    public @Override void delete(String key) {
+        Pointer[] found = new Pointer[1];
+        Pointer attributes = LIBRARY.g_array_new(0, 0, GnomeKeyringAttribute_SIZE);
+        try {
+            LIBRARY.gnome_keyring_attribute_list_append_string(attributes, KEY, key);
+            error(GnomeKeyringLibrary.LIBRARY.gnome_keyring_find_items_sync(GNOME_KEYRING_ITEM_GENERIC_SECRET, attributes, found));
+        } finally {
+            LIBRARY.gnome_keyring_attribute_list_free(attributes);
+        }
+        if (found[0] == null) {
+            return;
+        }
+        int id;
+        try {
+            if (LIBRARY.g_list_length(found[0]) > 0) {
+                GnomeKeyringFound result = LIBRARY.g_list_nth_data(found[0], 0);
+                id = result.item_id;
+            } else {
+                id = 0;
+            }
+        } finally {
+            LIBRARY.gnome_keyring_found_list_free(found[0]);
+        }
+        if (id > 0) {
+            if ("SunOS".equals(System.getProperty("os.name")) && "5.10".equals(System.getProperty("os.version"))) { // #185698
+                save(key, new char[0], null); // gnome_keyring_item_delete(null, id, null, null, null) does not seem to do anything
+            } else {
+                error(GnomeKeyringLibrary.LIBRARY.gnome_keyring_item_delete_sync(null, id));
+            }
+        }
+    }
+
+    private static String[] ERRORS = {
+        "OK", // NOI18N
+        "DENIED", // NOI18N
+        "NO_KEYRING_DAEMON", // NOI18N
+        "ALREADY_UNLOCKED", // NOI18N
+        "NO_SUCH_KEYRING", // NOI18N
+        "BAD_ARGUMENTS", // NOI18N
+        "IO_ERROR", // NOI18N
+        "CANCELLED", // NOI18N
+        "KEYRING_ALREADY_EXISTS", // NOI18N
+        "NO_MATCH", // NOI18N
+    };
+    private static void error(int code) {
+        if (code != 0 && code != 9) {
+            LOG.log(Level.WARNING, "gnome-keyring error: {0}", ERRORS[code]);
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/kde/KWalletProvider.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/kde/KWalletProvider.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/kde/KWalletProvider.java	(revision 36424)
@@ -0,0 +1,247 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2010 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.kde;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.netbeans.spi.keyring.KeyringProvider;
+
+/**
+ * JNA wrapper for certain functions from KDE Wallet API.
+ * @author psychollek, ynov
+ */
+public class KWalletProvider implements KeyringProvider {
+
+    private static final Logger logger = Logger.getLogger(KWalletProvider.class.getName());
+    private char[] handler = "0".toCharArray();
+    private boolean timeoutHappened = false;
+    private final char[] defaultLocalWallet = "kdewallet".toCharArray();
+
+    @Override
+    public boolean enabled(){
+        if (Boolean.getBoolean("netbeans.keyring.no.native")) {
+            logger.fine("native keyring integration disabled");
+            return false;
+        }
+        CommandResult result = runCommand("isEnabled");
+        if(new String(result.retVal).equals("true")) {        
+            return updateHandler();
+        }                   
+        return false;
+    }
+
+    @Override
+    public char[] read(String key){
+        if (updateHandler()){
+            CommandResult result = runCommand("readPassword", handler, getApplicationName(), key.toCharArray(), getApplicationName());
+            if (result.exitCode != 0){
+                warning("read action returned not 0 exitCode");
+            }
+            return result.retVal.length > 0 ? result.retVal : null;
+        }
+        return null;
+        //throw new KwalletException("read");
+    }
+
+    @Override
+    public void save(String key, char[] password, String description){
+        //description is forgoten ! kdewallet dosen't have any facility to store
+        //it by default and I don't want to do it by adding new fields to kwallet
+        if (updateHandler()){
+            CommandResult result = runCommand("writePassword", handler , getApplicationName()
+                    , key.toCharArray(), password , getApplicationName());
+            if (result.exitCode != 0 || new String(result.retVal).equals("-1")) {
+                warning("save action failed");
+            }
+        }
+        //throw new KwalletException("save");
+    }
+
+    @Override
+    public void delete(String key){
+        if (updateHandler()){
+            CommandResult result = runCommand("removeEntry" ,handler,
+            getApplicationName() , key.toCharArray() , getApplicationName());
+             if (result.exitCode != 0  || new String(result.retVal).equals("-1")) {
+                warning("delete action failed");
+            }
+        }
+        //throw new KwalletException("delete");
+    }
+
+    private boolean updateHandler(){
+        if(timeoutHappened) {
+            return false;
+        }
+        handler = new String(handler).isEmpty() ? "0".toCharArray() : handler;
+        CommandResult result = runCommand("isOpen",handler);          
+        if(new String(result.retVal).equals("true")){
+            return true;
+        }
+        char[] localWallet = defaultLocalWallet;
+        result = runCommand("localWallet");                      
+        if(result.exitCode == 0) {                    
+            localWallet = result.retVal;
+        }
+            
+        if(new String(localWallet).contains(".service")) {            
+            //Temporary workaround for the bug in kdelibs/kdeui/util/kwallet.cpp
+            //The bug was fixed http://svn.reviewboard.kde.org/r/5885/diff/
+            //but many people currently use buggy kwallet
+            return false;
+        }
+        result = runCommand("open", localWallet , "0".toCharArray(), getApplicationName());
+        if(result.exitCode == 2) { 
+            warning("time out happened while accessing KWallet");
+            //don't try to open KWallet anymore until bug https://bugs.kde.org/show_bug.cgi?id=259229 is fixed
+            timeoutHappened = true;
+            return false;
+        }      
+        if(result.exitCode != 0 || new String(result.retVal).equals("-1")) {
+            warning("failed to access KWallet");
+            return false;
+        }         
+        handler = result.retVal;
+        return true;
+    }
+          
+    
+
+    private CommandResult runCommand(String command,char[]... commandArgs) {
+        CommandResult result = null;
+        for (int i : new int[] {6, 5, 0}) {
+            result = runCommandKdeVersion(i, command, commandArgs);
+            if (result.exitCode == 0 && !result.errVal.equals("Service 'org.kde.kwalletd" + (i != 0 ? i : "") + "' does not exist.")) {
+                break;
+            }
+        }
+        return result;
+    }
+
+    private CommandResult runCommandKdeVersion(int kdeVersion, String command, char[]... commandArgs) {
+        String[] argv = new String[commandArgs.length+4];
+        argv[0] = "qdbus";
+        argv[1] = "org.kde.kwalletd" + (kdeVersion != 0 ? kdeVersion : "");
+        argv[2] = "/modules/kwalletd" + (kdeVersion != 0 ? kdeVersion : "");
+        argv[3] = "org.kde.KWallet."+command;
+        for (int i = 0; i < commandArgs.length; i++) {
+            //unfortunately I cannot pass char[] to the exec in any way - so this poses a security issue with passwords in String() !
+            //TODO: find a way to avoid changing char[] into String
+            argv[i+4] = new String(commandArgs[i]);
+        }
+        Runtime rt = Runtime.getRuntime();
+        String retVal = "";
+        String errVal = "";
+        int exitCode = 0;
+        try {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.log(Level.FINE, "executing {0}", Arrays.toString(argv));
+            }
+            Process pr = rt.exec(argv);
+            
+            try (BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream(), StandardCharsets.UTF_8))) {
+
+                String line;
+                while((line = input.readLine()) != null) {
+                    if (!retVal.isEmpty()){
+                        retVal = retVal.concat("\n");
+                    }
+                    retVal = retVal.concat(line);
+                }            
+            }
+            try (BufferedReader input = new BufferedReader(new InputStreamReader(pr.getErrorStream(), StandardCharsets.UTF_8))) {
+
+                String line;
+                while((line = input.readLine()) != null) {
+                    if (!errVal.isEmpty()){
+                        errVal = errVal.concat("\n");
+                    }
+                    errVal = errVal.concat(line);
+                }
+            }
+
+            exitCode = pr.waitFor();
+            if (logger.isLoggable(Level.FINE)) {
+                logger.log(Level.FINE, "application exit with code {0} for commandString: {1}; errVal: {2}",
+                            new Object[]{exitCode, Arrays.toString(argv), errVal});
+            }       
+        } catch (InterruptedException ex) {
+            Thread.currentThread().interrupt();
+            logger.log(Level.FINE,
+                    "exception thrown while invoking the command \""+Arrays.toString(argv)+"\"",
+                    ex);
+        } catch (IOException ex) {
+            logger.log(Level.FINE,
+                    "exception thrown while invoking the command \""+Arrays.toString(argv)+"\"",
+                    ex);
+        }
+        return new CommandResult(exitCode, retVal.trim().toCharArray(), errVal.trim());
+    }    
+
+    private char[] getApplicationName(){
+        return "JOSM".toCharArray(); // NOI18N
+    }
+
+    private void warning(String descr) {
+        logger.log(Level.WARNING, "Something went wrong: {0}", descr);
+    }      
+  
+    private static class CommandResult {
+        private final int exitCode;
+        private final char[] retVal;
+        private final String errVal;
+
+        public CommandResult(int exitCode, char[] retVal, String errVal) {
+            this.exitCode = exitCode;
+            this.retVal = retVal;
+            this.errVal = errVal;
+        }                        
+    }
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/mac/MacProvider.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/mac/MacProvider.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/mac/MacProvider.java	(revision 36424)
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.mac;
+
+import com.sun.jna.Pointer;
+import java.io.UnsupportedEncodingException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.netbeans.spi.keyring.KeyringProvider;
+
+public class MacProvider implements KeyringProvider {
+
+    private static final Logger LOG = Logger.getLogger(MacProvider.class.getName());
+
+    @Override
+    public boolean enabled() {
+        return true; // test elsewhere if we are on a mac
+    }
+
+    @Override
+    public char[] read(String key) {
+        try {
+            byte[] serviceName = key.getBytes("UTF-8");
+            byte[] accountName = "JOSM".getBytes("UTF-8");
+            int[] dataLength = new int[1];
+            Pointer[] data = new Pointer[1];
+            error("find", SecurityLibrary.LIBRARY.SecKeychainFindGenericPassword(null, serviceName.length, serviceName,
+                    accountName.length, accountName, dataLength, data, null));
+            if (data[0] == null) {
+                return null;
+            }
+            byte[] value = data[0].getByteArray(0, dataLength[0]); // XXX ought to call SecKeychainItemFreeContent
+            return new String(value, "UTF-8").toCharArray();
+        } catch (UnsupportedEncodingException x) {
+            LOG.log(Level.WARNING, null, x);
+            return null;
+        }
+    }
+
+    @Override
+    public void save(String key, char[] password, String description) {
+        try {
+            byte[] serviceName = key.getBytes("UTF-8");
+            byte[] accountName = "JOSM".getBytes("UTF-8");
+            // Keychain Access seems to expect UTF-8, so do not use Utils.chars2Bytes:
+            byte[] data = new String(password).getBytes("UTF-8");
+            Pointer[] itemRef = new Pointer[1];
+            error("find (for save)", SecurityLibrary.LIBRARY.SecKeychainFindGenericPassword(null, serviceName.length, serviceName,
+                    accountName.length, accountName, null, null, itemRef));
+            if (itemRef[0] != null) {
+                error("save (update)", SecurityLibrary.LIBRARY.SecKeychainItemModifyContent(itemRef[0], null, data.length, data));
+                SecurityLibrary.LIBRARY.CFRelease(itemRef[0]);
+            } else {
+                error("save (new)", SecurityLibrary.LIBRARY.SecKeychainAddGenericPassword(null, serviceName.length, serviceName,
+                        accountName.length, accountName, data.length, data, null));
+            }
+        } catch (UnsupportedEncodingException x) {
+            LOG.log(Level.WARNING, null, x);
+        }
+        // XXX use description somehow... better to use SecItemAdd with kSecAttrDescription
+    }
+
+    @Override
+    public void delete(String key) {
+        try {
+            byte[] serviceName = key.getBytes("UTF-8");
+            byte[] accountName = "JOSM".getBytes("UTF-8");
+            Pointer[] itemRef = new Pointer[1];
+            error("find (for delete)", SecurityLibrary.LIBRARY.SecKeychainFindGenericPassword(null, serviceName.length, serviceName,
+                    accountName.length, accountName, null, null, itemRef));
+            if (itemRef[0] != null) {
+                error("delete", SecurityLibrary.LIBRARY.SecKeychainItemDelete(itemRef[0]));
+                SecurityLibrary.LIBRARY.CFRelease(itemRef[0]);
+            }
+        } catch (UnsupportedEncodingException x) {
+            LOG.log(Level.WARNING, null, x);
+        }
+    }
+
+    private static void error(String msg, int code) {
+        if (code != 0 && code != /* errSecItemNotFound, always returned from find it seems */-25300) {
+            Pointer translated = SecurityLibrary.LIBRARY.SecCopyErrorMessageString(code, null);
+            String str;
+            if (translated == null) {
+                str = String.valueOf(code);
+            } else {
+                char[] buf = new char[(int) SecurityLibrary.LIBRARY.CFStringGetLength(translated)];
+                for (int i = 0; i < buf.length; i++) {
+                    buf[i] = SecurityLibrary.LIBRARY.CFStringGetCharacterAtIndex(translated, i);
+                }
+                SecurityLibrary.LIBRARY.CFRelease(translated);
+                str = new String(buf) + " (" + code + ")";
+            }
+            LOG.log(Level.WARNING, "{0}: {1}", new Object[] {msg, str});
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/mac/SecurityLibrary.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/mac/SecurityLibrary.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/mac/SecurityLibrary.java	(revision 36424)
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.mac;
+
+import com.sun.jna.Library; // NOSONAR
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+
+/**
+ * @see <a href="http://developer.apple.com/mac/library/DOCUMENTATION/Security/Reference/keychainservices/Reference/reference.html">Security Framework Reference</a>
+ */
+public interface SecurityLibrary extends Library {
+
+    SecurityLibrary LIBRARY = Native.load("Security", SecurityLibrary.class);
+
+    int SecKeychainAddGenericPassword(
+            Pointer keychain,
+            int serviceNameLength,
+            byte[] serviceName,
+            int accountNameLength,
+            byte[] accountName,
+            int passwordLength,
+            byte[] passwordData,
+            Pointer itemRef
+            );
+
+    int SecKeychainItemModifyContent(
+            Pointer/*SecKeychainItemRef*/ itemRef,
+            Pointer/*SecKeychainAttributeList**/ attrList,
+            int length,
+            byte[] data
+    );
+
+    int SecKeychainFindGenericPassword(
+            Pointer keychainOrArray,
+            int serviceNameLength,
+            byte[] serviceName,
+            int accountNameLength,
+            byte[] accountName,
+            int[] passwordLength,
+            Pointer[] passwordData,
+            Pointer/*SecKeychainItemRef*/[] itemRef
+            );
+
+    int SecKeychainItemDelete(
+            Pointer itemRef
+            );
+
+    Pointer/*CFString*/ SecCopyErrorMessageString(
+            int status,
+            Pointer reserved
+            );
+
+    // http://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFStringRef/Reference/reference.html
+
+    long/*CFIndex*/ CFStringGetLength(
+            Pointer/*CFStringRef*/ theString
+    );
+
+    char/*UniChar*/ CFStringGetCharacterAtIndex(
+            Pointer/*CFStringRef*/ theString,
+            long/*CFIndex*/ idx
+    );
+
+    void CFRelease(
+            Pointer/*CFTypeRef*/ cf
+    );
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/spi/EncryptionProvider.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/spi/EncryptionProvider.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/spi/EncryptionProvider.java	(revision 36424)
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.spi;
+
+import java.util.concurrent.Callable;
+import org.netbeans.spi.keyring.KeyringProvider;
+
+/**
+ * A weaker version of {@link KeyringProvider} which can only encrypt passwords securely.
+ * Rather than managing the complete storage of the keyring, a NetBeans-specific keyring
+ * is used, but this provider can encrypt the sensitive contents.
+ * The encryption is assumed to be symmetric but the encryption key should be secured.
+ * If the NetBeans {@link KeyringProvider} is used, the first encryption provider to be found
+ * in global lookup which claims to be enabled will be used;
+ * a standard implementation exists (at position 1000) which uses a simple master password.
+ */
+public interface EncryptionProvider {
+
+    /**
+     * Check whether this provider can be used in the current JVM session.
+     * If integrating a native library, this should attempt to load it.
+     * This method will be called at most once per JVM session,
+     * prior to any other methods in this interface being called.
+     * @return true if this provider should be used, false if not
+     */
+    boolean enabled();
+
+    /**
+     * Define a unique ID for this encryption provider, so that if the same userdir
+     * is reused on machines of different architecture the encrypted passwords will not conflict.
+     * @return an arbitrary ID specific to the algorithm
+     */
+    String id();
+
+    /**
+     * Encrypt a password or other sensitive data so that only the current user can decrypt it.
+     * @param cleartext some data (may be nulled out after this call)
+     * @return encrypted data
+     * @throws Exception if anything goes wrong
+     */
+    byte[] encrypt(char[] cleartext) throws Exception;
+
+    /**
+     * Decrypt a password or other sensitive data.
+     * @param ciphertext encrypted data
+     * @return cleartext (may be nulled out after this call)
+     * @throws Exception if anything goes wrong
+     */
+    char[] decrypt(byte[] ciphertext) throws Exception;
+
+    /**
+     * Called if {@link #decrypt} produced incorrect results on a sample key.
+     * The provider can react by prompting again for a master password, for example.
+     * <p>Implementations which do not support dynamic changes to the encryption
+     * key or method should return false from this method.
+     * @return true if an attempt was made to correct the encryption, false if nothing has changed
+     */
+    boolean decryptionFailed();
+
+    /**
+     * Offers a callback in case the encryption needs to change.
+     * For example, this may be employed if the user asks to change a master password.
+     * During the callback, the provider will be asked to decrypt existing secrets
+     * using the old encryption key; then {@link #encryptionChanged}
+     * will be called; finally the secrets will be reencrypted using the new encryption key.
+     * <p>Implementations which do not support dynamic changes to the encryption
+     * key or method may ignore this method.
+     * @param callback a callback which the provider may store and later call
+     */
+    void encryptionChangingCallback(Callable<Void> callback);
+
+    /**
+     * See {@link #encryptionChangingCallback} for description.
+     * <p>Implementations which do not support dynamic changes to the encryption
+     * key or method may ignore this method.
+     */
+    void encryptionChanged();
+
+    /**
+     * Tells the provider whether this is a new, empty keyring.
+     * @param fresh true if this is a new keyring, false if it has been used before
+     */
+    void freshKeyring(boolean fresh);
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/utils/Utils.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/utils/Utils.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/utils/Utils.java	(revision 36424)
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.utils;
+
+public class Utils {
+
+    private Utils() {}
+
+    public static byte[] chars2Bytes(char[] chars) {
+        byte[] bytes = new byte[chars.length * 2];
+        for (int i = 0; i < chars.length; i++) {
+            bytes[i * 2] = (byte) ((int)chars[i] / 256);
+            bytes[i * 2 + 1] = (byte) (chars[i] % 256);
+        }
+        return bytes;
+    }
+
+    public static char[] bytes2Chars(byte[] bytes) {
+        char[] result = new char[bytes.length / 2];
+        for (int i = 0; i < result.length; i++) {
+            result[i] = (char) (((bytes[i * 2] & 0x00ff) * 256) + (bytes[i * 2 + 1] & 0x00ff));
+        }
+        return result;
+    }
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/win32/Win32Protect.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/win32/Win32Protect.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/modules/keyring/win32/Win32Protect.java	(revision 36424)
@@ -0,0 +1,176 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.modules.keyring.win32;
+
+import com.sun.jna.Memory; // NOSONAR
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.Structure;
+import com.sun.jna.WString;
+import com.sun.jna.win32.StdCallLibrary;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.netbeans.modules.keyring.utils.Utils;
+import org.netbeans.modules.keyring.spi.EncryptionProvider;
+
+/**
+ * Data protection utility for Microsoft Windows.
+ * XXX org.tmatesoft.svn.core.internal.util.jna.SVNWinCrypt is a possibly more robust implementation
+ * (though it seems to set CRYPTPROTECT_UI_FORBIDDEN which we do not necessarily want).
+ */
+public class Win32Protect implements EncryptionProvider {
+
+    private static final Logger LOG = Logger.getLogger(Win32Protect.class.getName());
+    
+    public @Override boolean enabled() {
+        // asssume, we have windows os
+        try {
+            if (CryptLib.INSTANCE == null) {
+                LOG.fine("loadLibrary -> null");
+                return false;
+            }
+            return true;
+        } catch (Throwable t) {
+            LOG.log(Level.FINE, null, t);
+            return false;
+        }
+    }
+
+    public @Override String id() {
+        return "win32"; // NOI18N
+    }
+
+    public @Override byte[] encrypt(char[] cleartext) throws Exception {
+        byte[] cleartextB = Utils.chars2Bytes(cleartext);
+        CryptIntegerBlob input = new CryptIntegerBlob();
+        input.store(cleartextB);
+        Arrays.fill(cleartextB, (byte) 0);
+        CryptIntegerBlob output = new CryptIntegerBlob();
+        if (!CryptLib.INSTANCE.CryptProtectData(input, null, null, null, null, 0, output)) {
+            throw new Exception("CryptProtectData failed: " + Native.getLastError());
+        }
+        input.zero();
+        return output.load();
+    }
+
+    public @Override char[] decrypt(byte[] ciphertext) throws Exception {
+        CryptIntegerBlob input = new CryptIntegerBlob();
+        input.store(ciphertext);
+        CryptIntegerBlob output = new CryptIntegerBlob();
+        if (!CryptLib.INSTANCE.CryptUnprotectData(input, null, null, null, null, 0, output)) {
+            throw new Exception("CryptUnprotectData failed: " + Native.getLastError());
+        }
+        byte[] result = output.load();
+        // XXX gives CCE because not a Memory: output.zero();
+        char[] cleartext = Utils.bytes2Chars(result);
+        Arrays.fill(result, (byte) 0);
+        return cleartext;
+    }
+
+    public @Override boolean decryptionFailed() {
+        return false; // not much to do about it
+    }
+
+    public @Override void encryptionChangingCallback(Callable<Void> callback) {}
+
+    public @Override void encryptionChanged() {
+        assert false;
+    }
+
+    public @Override void freshKeyring(boolean fresh) {}
+
+    public interface CryptLib extends StdCallLibrary {
+        CryptLib INSTANCE = Native.load("Crypt32", CryptLib.class); // NOI18N
+        /** @see <a href="http://msdn.microsoft.com/en-us/library/aa380261(VS.85,printer).aspx">Reference</a> */
+        boolean CryptProtectData(
+                CryptIntegerBlob pDataIn,
+                WString szDataDescr,
+                CryptIntegerBlob pOptionalEntropy,
+                Pointer pvReserved,
+                Pointer pPromptStruct,
+                int dwFlags,
+                CryptIntegerBlob pDataOut
+        )/* throws LastErrorException*/;
+        /** @see <a href="http://msdn.microsoft.com/en-us/library/aa380882(VS.85,printer).aspx">Reference</a> */
+        boolean CryptUnprotectData(
+                CryptIntegerBlob pDataIn,
+                WString[] ppszDataDescr,
+                CryptIntegerBlob pOptionalEntropy,
+                Pointer pvReserved,
+                Pointer pPromptStruct,
+                int dwFlags,
+                CryptIntegerBlob pDataOut
+        )/* throws LastErrorException*/;
+    }
+    
+    public static class CryptIntegerBlob extends Structure {
+        public int cbData;
+        public /*byte[]*/Pointer pbData;
+        byte[] load() {
+            return pbData.getByteArray(0, cbData);
+            // XXX how to free pbData? [Kernel32]LocalFree?
+        }
+        void store(byte[] data) {
+            cbData = data.length;
+            pbData = new Memory(data.length);
+            pbData.write(0, data, 0, cbData);
+        }
+        void zero() {
+            ((Memory) pbData).clear();
+        }
+
+        @Override
+        protected List<String> getFieldOrder() {
+            return Arrays.asList(
+                "cbData",
+                "pbData"
+            );
+        }
+    }
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/spi/keyring/KeyringProvider.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/spi/keyring/KeyringProvider.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/netbeans/spi/keyring/KeyringProvider.java	(revision 36424)
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.spi.keyring;
+
+/**
+ * Provider for a keyring.
+ * Should be registered in global lookup.
+ * Providers will be searched in the order in which they are encountered
+ * until one which is {@link #enabled} is found.
+ * There is a default platform-independent implementation at position 1000
+ * which should always be enabled.
+ * <p>All SPI calls are made from one thread at a time, so providers need not be synchronized.
+ */
+public interface KeyringProvider {
+
+    /**
+     * Check whether this provider can be used in the current JVM session.
+     * If integrating a native keyring, this should attempt to load related
+     * libraries and check whether they can be found.
+     * This method will be called at most once per JVM session,
+     * prior to any other methods in this interface being called.
+     * @return true if this provider should be used, false if not
+     */
+    boolean enabled();
+
+    /**
+     * Read a key from the ring.
+     * @param key the identifier of the key
+     * @return its value if found (elements may be later nulled out), else null if not present
+     */
+    char[] read(String key);
+
+    /**
+     * Save a key to the ring.
+     * If it could not be saved, do nothing.
+     * If the key already existed, overwrite the password.
+     * @param key a key identifier
+     * @param password the password or other sensitive information associated with the key
+     *                 (elements will be later nulled out)
+     * @param description a user-visible description of the key (may be null)
+     */
+    void save(String key, char[] password, String description);
+
+    /**
+     * Delete a key from the ring.
+     * If the key was not in the ring to begin with, do nothing.
+     * @param key a key identifier
+     */
+    void delete(String key);
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/DatatypeConverter.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/DatatypeConverter.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/DatatypeConverter.java	(revision 36424)
@@ -0,0 +1,211 @@
+package org.openstreetmap.josm.plugins.npm;
+
+/**
+ * Some methods copied from JAXB DatatypeConverterImpl
+ */
+public class DatatypeConverter {
+
+    private static final byte[] decodeMap = initDecodeMap();
+    private static final byte PADDING = 127;
+
+    private static byte[] initDecodeMap() {
+        byte[] map = new byte[128];
+        int i;
+        for (i = 0; i < 128; i++) {
+            map[i] = -1;
+        }
+
+        for (i = 'A'; i <= 'Z'; i++) {
+            map[i] = (byte) (i - 'A');
+        }
+        for (i = 'a'; i <= 'z'; i++) {
+            map[i] = (byte) (i - 'a' + 26);
+        }
+        for (i = '0'; i <= '9'; i++) {
+            map[i] = (byte) (i - '0' + 52);
+        }
+        map['+'] = 62;
+        map['/'] = 63;
+        map['='] = PADDING;
+
+        return map;
+    }
+
+    /**
+     * computes the length of binary data speculatively.
+     *
+     * <p>
+     * Our requirement is to create byte[] of the exact length to store the binary data.
+     * If we do this in a straight-forward way, it takes two passes over the data.
+     * Experiments show that this is a non-trivial overhead (35% or so is spent on
+     * the first pass in calculating the length.)
+     *
+     * <p>
+     * So the approach here is that we compute the length speculatively, without looking
+     * at the whole contents. The obtained speculative value is never less than the
+     * actual length of the binary data, but it may be bigger. So if the speculation
+     * goes wrong, we'll pay the cost of reallocation and buffer copying.
+     *
+     * <p>
+     * If the base64 text is tightly packed with no indentation nor illegal char
+     * (like what most web services produce), then the speculation of this method
+     * will be correct, so we get the performance benefit.
+     */
+    private static int guessLength(String text) {
+        final int len = text.length();
+
+        // compute the tail '=' chars
+        int j = len - 1;
+        for (; j >= 0; j--) {
+            byte code = decodeMap[text.charAt(j)];
+            if (code == PADDING) {
+                continue;
+            }
+            if (code == -1) // most likely this base64 text is indented. go with the upper bound
+            {
+                return text.length() / 4 * 3;
+            }
+            break;
+        }
+
+        j++;    // text.charAt(j) is now at some base64 char, so +1 to make it the size
+        int padSize = len - j;
+        if (padSize > 2) // something is wrong with base64. be safe and go with the upper bound
+        {
+            return text.length() / 4 * 3;
+        }
+
+        // so far this base64 looks like it's unindented tightly packed base64.
+        // take a chance and create an array with the expected size
+        return text.length() / 4 * 3 - padSize;
+    }
+    
+    /**
+     * @param text
+     *      base64Binary data is likely to be long, and decoding requires
+     *      each character to be accessed twice (once for counting length, another
+     *      for decoding.)
+     *
+     *      A benchmark showed that taking {@link String} is faster, presumably
+     *      because JIT can inline a lot of string access (with data of 1K chars, it was twice as fast)
+     */
+    public static byte[] _parseBase64Binary(String text) {
+        final int buflen = guessLength(text);
+        final byte[] out = new byte[buflen];
+        int o = 0;
+
+        final int len = text.length();
+        int i;
+
+        final byte[] quadruplet = new byte[4];
+        int q = 0;
+
+        // convert each quadruplet to three bytes.
+        for (i = 0; i < len; i++) {
+            char ch = text.charAt(i);
+            byte v = decodeMap[ch];
+
+            if (v != -1) {
+                quadruplet[q++] = v;
+            }
+
+            if (q == 4) {
+                // quadruplet is now filled.
+                out[o++] = (byte) ((quadruplet[0] << 2) | (quadruplet[1] >> 4));
+                if (quadruplet[2] != PADDING) {
+                    out[o++] = (byte) ((quadruplet[1] << 4) | (quadruplet[2] >> 2));
+                }
+                if (quadruplet[3] != PADDING) {
+                    out[o++] = (byte) ((quadruplet[2] << 6) | quadruplet[3]);
+                }
+                q = 0;
+            }
+        }
+
+        if (buflen == o) // speculation worked out to be OK
+        {
+            return out;
+        }
+
+        // we overestimated, so need to create a new buffer
+        byte[] nb = new byte[o];
+        System.arraycopy(out, 0, nb, 0, o);
+        return nb;
+    }
+
+    private static final char[] encodeMap = initEncodeMap();
+
+    private static char[] initEncodeMap() {
+        char[] map = new char[64];
+        int i;
+        for (i = 0; i < 26; i++) {
+            map[i] = (char) ('A' + i);
+        }
+        for (i = 26; i < 52; i++) {
+            map[i] = (char) ('a' + (i - 26));
+        }
+        for (i = 52; i < 62; i++) {
+            map[i] = (char) ('0' + (i - 52));
+        }
+        map[62] = '+';
+        map[63] = '/';
+
+        return map;
+    }
+    
+    public static char encode(int i) {
+        return encodeMap[i & 0x3F];
+    }
+        
+    public static String _printBase64Binary(byte[] input) {
+        return _printBase64Binary(input, 0, input.length);
+    }
+    
+    public static String _printBase64Binary(byte[] input, int offset, int len) {
+        char[] buf = new char[((len + 2) / 3) * 4];
+        int ptr = _printBase64Binary(input, offset, len, buf, 0);
+        assert ptr == buf.length;
+        return new String(buf);
+    }
+
+    /**
+     * Encodes a byte array into a char array by doing base64 encoding.
+     *
+     * The caller must supply a big enough buffer.
+     *
+     * @return
+     *      the value of {@code ptr+((len+2)/3)*4}, which is the new offset
+     *      in the output buffer where the further bytes should be placed.
+     */
+    public static int _printBase64Binary(byte[] input, int offset, int len, char[] buf, int ptr) {
+        // encode elements until only 1 or 2 elements are left to encode
+        int remaining = len;
+        int i;
+        for (i = offset;remaining >= 3; remaining -= 3, i += 3) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode(
+                    ((input[i] & 0x3) << 4)
+                    | ((input[i + 1] >> 4) & 0xF));
+            buf[ptr++] = encode(
+                    ((input[i + 1] & 0xF) << 2)
+                    | ((input[i + 2] >> 6) & 0x3));
+            buf[ptr++] = encode(input[i + 2] & 0x3F);
+        }
+        // encode when exactly 1 element (left) to encode
+        if (remaining == 1) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode((input[i] & 0x3) << 4);
+            buf[ptr++] = '=';
+            buf[ptr++] = '=';
+        }
+        // encode when exactly 2 elements (left) to encode
+        if (remaining == 2) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode(((input[i] & 0x3) << 4)
+                    | ((input[i + 1] >> 4) & 0xF));
+            buf[ptr++] = encode((input[i + 1] & 0xF) << 2);
+            buf[ptr++] = '=';
+        }
+        return ptr;
+    }
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/InitializationWizard.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/InitializationWizard.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/InitializationWizard.java	(revision 36424)
@@ -0,0 +1,533 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.npm;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.net.Authenticator.RequestorType;
+import java.net.PasswordAuthentication;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.ButtonGroup;
+import javax.swing.GroupLayout;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JSeparator;
+import javax.swing.KeyStroke;
+import javax.swing.SwingConstants;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.EtchedBorder;
+
+import org.netbeans.spi.keyring.KeyringProvider;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
+import org.openstreetmap.josm.gui.widgets.HtmlPanel;
+import org.openstreetmap.josm.io.DefaultProxySelector;
+import org.openstreetmap.josm.io.auth.CredentialsAgentException;
+import org.openstreetmap.josm.io.auth.CredentialsManager;
+import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.PlatformManager;
+
+public class InitializationWizard extends JDialog {
+
+    protected boolean canceled;
+    protected JButton btnCancel, btnBack, btnNext;
+    protected Action nextAction, finishAction;
+    protected JPanel cardPanel;
+    
+    List<WizardPanel> panels = new ArrayList<>();
+    int panelIndex;
+    
+    private CardLayout cardLayout;
+    
+    public InitializationWizard() {
+        super(JOptionPane.getFrameForComponent(MainApplication.getMainFrame()),
+                tr("Native password manager plugin"), ModalityType.DOCUMENT_MODAL);
+        build();
+        NPMType npm = detectNativePasswordManager();
+        WizardPanel firstPanel;
+        if (npm == null) {
+            firstPanel = new NothingFoundPanel();
+        } else {
+            firstPanel = new SelectionPanel(npm, this);
+        }
+        panelIndex = 0;
+        panels.add(firstPanel);
+        cardPanel.add(firstPanel.getPanel(), firstPanel.getId());
+        
+        updateButtons();
+    }
+    
+    private void build() {
+        Container c = getContentPane();
+        c.setLayout(new BorderLayout());
+        addWindowListener(new WindowEventHandler());
+
+        getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel");
+        getRootPane().getActionMap().put("cancel", new CancelAction());
+
+        cardLayout = new CardLayout();
+        cardPanel = new JPanel(cardLayout);
+        cardPanel.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10)));
+        c.add(cardPanel, BorderLayout.CENTER);
+        
+        nextAction = new NextAction();
+        finishAction = new FinishAction();
+        btnCancel = new JButton(new CancelAction());
+        btnBack = new JButton(new BackAction());
+        btnNext = new JButton(nextAction);
+        
+        Box buttonsBox = new Box(BoxLayout.X_AXIS);
+        buttonsBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10)));
+        buttonsBox.add(btnCancel);
+        buttonsBox.add(Box.createHorizontalStrut(30));
+        buttonsBox.add(btnBack);
+        buttonsBox.add(Box.createHorizontalStrut(10));
+        buttonsBox.add(btnNext);
+        
+        JPanel buttonsPanel = new JPanel(new BorderLayout());
+        buttonsPanel.add(new JSeparator(), BorderLayout.NORTH);
+        buttonsPanel.add(buttonsBox, BorderLayout.EAST);
+        c.add(buttonsPanel, BorderLayout.SOUTH);
+    }
+        
+    private void updateButtons() {
+        btnBack.setEnabled(panelIndex > 0);
+        if (panels.get(panelIndex).isLast()) {
+            btnNext.setAction(finishAction);
+        } else {
+            btnNext.setAction(nextAction);
+        }
+    }
+    
+    /**
+     * A WizardPanel represents one page in the wizard dialog.
+     * The user usually proceeds from one panel to the next, but can go back as well.
+     */
+    public interface WizardPanel {
+        /* unique id */
+        String getId();
+        
+        /* get the Panel Compoment */
+        JPanel getPanel();
+        
+        /* return true if this page is the last and the 'next' button should change into 'finish' */
+        boolean isLast();
+        
+        /* Provide the next WizardPanel. 
+         * Not called when isLast() returns true. */
+        WizardPanel provideNext();
+        
+        /* The action to execute, when the user finall hits 'OK' and not 'Cancel' */
+        void onOkAction();
+    }
+
+    private abstract static class AbstractWizardPanel implements WizardPanel {
+        
+        /**
+         * Put a logo to the left, as is customary for wizard dialogs
+         */
+        @Override
+        public JPanel getPanel() {
+            JPanel p = new JPanel(new BorderLayout());
+            JLabel image = new JLabel(ImageProvider.get("lock-large"));
+            image.setBorder(
+                    BorderFactory.createCompoundBorder(
+                        BorderFactory.createEtchedBorder(EtchedBorder.RAISED),
+                        BorderFactory.createEmptyBorder(10, 10, 10, 10)));
+            image.setVerticalAlignment(SwingConstants.TOP);
+            p.add(image, BorderLayout.WEST);
+            
+            JPanel content = getContentPanel();
+            content.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+            p.add(content, BorderLayout.CENTER);
+            
+            return p;
+        }
+        
+        @Override
+        public String getId() {
+            return getClass().getCanonicalName();
+        }
+
+        protected abstract JPanel getContentPanel();
+    }
+    
+    private static class NothingFoundPanel extends AbstractWizardPanel {
+
+        JCheckBox cbDoNotShowAgain;
+        
+        @Override
+        public boolean isLast() {
+            return true;
+        }
+        
+        @Override
+        public WizardPanel provideNext() {
+            return null;
+        }
+
+        @Override
+        public void onOkAction() {
+            if (cbDoNotShowAgain.isSelected()) {
+                NPMPlugin.turnOffPermanently();
+            }
+        }
+
+        @Override
+        protected JPanel getContentPanel() {
+            JPanel p = new JPanel();
+            GroupLayout layout = new GroupLayout(p);
+            p.setLayout(layout);
+
+            HtmlPanel intro = new HtmlPanel("<html>"+
+                    tr("No native password manager could be found!")+"<br>"+
+                    tr("Depending on your Operating System / Distribution, you may have to create a default keyring / wallet first.")+
+                    "</html>");
+
+            cbDoNotShowAgain = new JCheckBox("Do not show this wizard again on next start");
+            layout.setHorizontalGroup(
+                layout.createParallelGroup()
+                    .addComponent(intro)
+                    .addComponent(cbDoNotShowAgain)
+            );
+
+            layout.setVerticalGroup(
+                layout.createSequentialGroup()
+                    .addComponent(intro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                    .addComponent(cbDoNotShowAgain)
+            );
+            
+            return p;
+        }
+    }
+    
+    private static class SelectionPanel extends AbstractWizardPanel implements ActionListener {
+        
+        private final NPMType type;
+        private final InitializationWizard wizard;
+        
+        private JRadioButton rbManage, rbPlain;
+                
+        public SelectionPanel(NPMType type, InitializationWizard wizard) {
+            this.type = type;
+            this.wizard = wizard;
+        }
+        
+        @Override
+        public boolean isLast() {
+            return (rbPlain != null && rbPlain.isSelected()) || !hasUnprotectedCedentials();
+        }
+
+        @Override
+        public WizardPanel provideNext() {
+            return new DeleteOldCredentialsPanel();
+        }
+        
+        @Override
+        protected JPanel getContentPanel() {
+            JPanel p = new JPanel();
+            GroupLayout layout = new GroupLayout(p);
+            p.setLayout(layout);
+
+            HtmlPanel intro = new HtmlPanel("<html><b>"+type.getIntroText()+"</b></html>");
+            rbManage = new JRadioButton("<html>"+type.getSelectionText()+"</html>");
+            rbPlain = new JRadioButton("<html>"+tr("No thanks, use JOSM''s plain text preferences storage")+"</html>");
+            rbManage.addActionListener(this);
+            rbPlain.addActionListener(this);
+            
+            rbManage.setSelected(true);
+            ButtonGroup group = new ButtonGroup();
+            group.add(rbManage);
+            group.add(rbPlain);
+
+            layout.setHorizontalGroup(
+                layout.createParallelGroup()
+                    .addComponent(intro)
+                    .addComponent(rbManage)
+                    .addComponent(rbPlain)
+            );
+
+            layout.setVerticalGroup(
+                layout.createSequentialGroup()
+                    .addComponent(intro, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                    .addComponent(rbManage)
+                    .addComponent(rbPlain)
+            );
+            
+            return p;
+        }
+        
+        @Override
+        public void onOkAction() {
+            if (rbManage.isSelected()) {
+                NPMPlugin.selectAndSave(type);
+            } else {
+                wizard.setCanceled(true);
+                NPMPlugin.turnOffPermanently();
+            }
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            wizard.updateButtons();
+        }
+    }
+
+    private static class DeleteOldCredentialsPanel extends AbstractWizardPanel {
+        
+        private JRadioButton rbClear, rbKeep;
+        
+        @Override
+        public boolean isLast() {
+            return true;
+        }
+
+        @Override
+        public WizardPanel provideNext() {
+            return null;
+        }
+
+        @Override
+        public JPanel getContentPanel() {
+            JPanel p = new JPanel();
+            GroupLayout layout = new GroupLayout(p);
+            p.setLayout(layout);
+
+            HtmlPanel l = new HtmlPanel();
+            l.setText("<html><b>"+tr("Found sensitive data that is still saved"
+                    + " in JOSM''s preference file (plain text).")+"<b></html>");
+            rbClear = new JRadioButton("<html>"+tr("Transfer to password manager and remove from preference file")+"</html>");
+            rbKeep = new JRadioButton("<html>"+tr("No, just keep it")+"</html>");
+            rbClear.setSelected(true);
+            ButtonGroup group = new ButtonGroup();
+            group.add(rbClear);
+            group.add(rbKeep);
+
+            layout.setHorizontalGroup(
+                layout.createParallelGroup()
+                    .addComponent(l)
+                    .addComponent(rbClear)
+                    .addComponent(rbKeep)
+            );
+
+            layout.setVerticalGroup(
+                layout.createSequentialGroup()
+                    .addComponent(l, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+                    .addComponent(rbClear)
+                    .addComponent(rbKeep)
+            );
+            
+            return p;
+        }
+
+        @Override
+        public void onOkAction() {
+            
+            CredentialsManager cm = CredentialsManager.getInstance();
+
+            String proxyUsername = Config.getPref().get(DefaultProxySelector.PROXY_USER, null);
+            String proxyPassword = Config.getPref().get(DefaultProxySelector.PROXY_PASS, null);
+            String proxyHost = Config.getPref().get(DefaultProxySelector.PROXY_HTTP_HOST, null);
+            if (proxyUsername != null || proxyPassword != null) {
+                try {
+                    cm.store(RequestorType.PROXY, proxyHost, new PasswordAuthentication(string(proxyUsername), toCharArray(proxyPassword)));
+                    if (rbClear.isSelected()) {
+                        Config.getPref().put(DefaultProxySelector.PROXY_USER, null);
+                        Config.getPref().put(DefaultProxySelector.PROXY_PASS, null);
+                    }
+                } catch (CredentialsAgentException ex) {
+                    Logging.error(ex);
+                }
+            }
+        }
+    }
+
+    private static final String NPM = "Native Password Manager Plugin: ";
+
+    private static NPMType detectNativePasswordManager() {
+        NPMType[] potentialManagers;
+        if (PlatformManager.isPlatformWindows()) {
+            potentialManagers = new NPMType[] { NPMType.CRYPT32 };
+        } else if (PlatformManager.isPlatformOsx()) {
+            potentialManagers = new NPMType[] { NPMType.KEYCHAIN };
+        } else if (PlatformManager.isPlatformUnixoid()) {
+            potentialManagers = new NPMType[] { NPMType.GNOME_KEYRING, NPMType.KWALLET };
+        } else
+            throw new AssertionError();
+
+        for (NPMType manager : potentialManagers) {
+            Logging.info(NPM + "Looking for " + manager.getName());
+            KeyringProvider provider = manager.getProvider();
+            if (provider.enabled()) {
+                Logging.info(NPM + "Found " + manager.getName());
+                return manager;
+            }
+        }
+        return null;
+    }
+    
+    private static boolean hasUnprotectedCedentials() {
+        return 
+            Config.getPref().get("osm-server.username", null) != null ||
+            Config.getPref().get("osm-server.password", null) != null ||
+            Config.getPref().get(DefaultProxySelector.PROXY_USER, null) != null ||
+            Config.getPref().get(DefaultProxySelector.PROXY_PASS, null) != null ||
+            Config.getPref().get("oauth.access-token.key", null) != null ||
+            Config.getPref().get("oauth.access-token.secret", null) != null;
+    }
+    
+    public void showDialog() {
+        pack();
+        setVisible(true);
+    }
+    
+    @Override
+    public void setVisible(boolean visible) {
+        if (visible) {
+            new WindowGeometry(
+                    getClass().getName() + ".geometry",
+                    WindowGeometry.centerInWindow(
+                            getParent(),
+                            new Dimension(600,400)
+                    )
+            ).applySafe(this);
+        } else if (isShowing()){
+            new WindowGeometry(this).remember(getClass().getName() + ".geometry");
+        }
+        super.setVisible(visible);
+    }
+    
+    public boolean isCanceled() {
+        return canceled;
+    }
+
+    protected void setCanceled(boolean canceled) {
+        this.canceled = canceled;
+    }
+
+    /**
+     * Close the dialog and discard all changes.
+     */
+    class CancelAction extends AbstractAction {
+        public CancelAction() {
+            putValue(NAME, tr("Cancel"));
+            putValue(SMALL_ICON, ImageProvider.get("cancel"));
+            putValue(SHORT_DESCRIPTION, tr("Close the dialog and discard all changes"));
+        }
+
+        public void cancel() {
+            setCanceled(true);
+            setVisible(false);
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent evt) {
+            cancel();
+        }
+    }
+
+    /**
+     * Go to the previous page.
+     */
+    class BackAction extends AbstractAction {
+        public BackAction() {
+            putValue(NAME, tr("Back"));
+            putValue(SMALL_ICON, ImageProvider.get("dialogs", "previous"));
+            putValue(SHORT_DESCRIPTION, tr("Go to the previous page"));
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent evt) {
+            if (panelIndex <= 0)
+                // Java 9 will let us pass the panelIndex by itself
+                throw new IndexOutOfBoundsException("Index out of range: " + panelIndex);
+            panelIndex--;
+            cardLayout.show(cardPanel, panels.get(panelIndex).getId());
+            updateButtons();
+        }
+    }
+    
+    class NextAction extends AbstractAction {
+        public NextAction() {
+            putValue(NAME, tr("Next"));
+            putValue(SMALL_ICON, ImageProvider.get("dialogs", "next"));
+            putValue(SHORT_DESCRIPTION, tr("Proceed and go to the next page"));
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent evt) {
+            if (panelIndex == panels.size() - 1) {
+                WizardPanel next = panels.get(panelIndex).provideNext();
+                cardPanel.add(next.getPanel(), next.getId());
+                panels.add(next);
+            }
+            panelIndex++;
+            cardLayout.show(cardPanel, panels.get(panelIndex).getId());
+            updateButtons();
+        }
+    }
+
+    class FinishAction extends AbstractAction {
+        public FinishAction() {
+            putValue(NAME, tr("Finish"));
+            putValue(SMALL_ICON, ImageProvider.get("ok"));
+            putValue(SHORT_DESCRIPTION, tr("Confirm the setup and close this dialog"));
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent evt) {
+            for (int i=0; i<=panelIndex; ++i) {
+                if (isCanceled()) {
+                    break;
+                }
+                panels.get(i).onOkAction();
+            }
+            setVisible(false);
+        }
+    }
+
+    class WindowEventHandler extends WindowAdapter {
+        @Override
+        public void windowClosing(WindowEvent arg0) {
+            new CancelAction().cancel();
+        }
+    }
+
+    public static char[] toCharArray(String s) {
+        if (s == null)
+            return new char[0];
+        else
+            return s.toCharArray();
+    }
+    
+    public static String string(String s) {
+        if (s == null)
+            return "";
+        else
+            return s;
+    }
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgent.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgent.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgent.java	(revision 36424)
@@ -0,0 +1,287 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.npm;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Component;
+import java.net.Authenticator.RequestorType;
+import java.net.PasswordAuthentication;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.EnumMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.zip.CRC32;
+
+import javax.swing.text.html.HTMLEditorKit;
+
+import org.netbeans.spi.keyring.KeyringProvider;
+import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.data.oauth.IOAuthToken;
+import org.openstreetmap.josm.data.oauth.OAuth20Exception;
+import org.openstreetmap.josm.data.oauth.OAuth20Parameters;
+import org.openstreetmap.josm.data.oauth.OAuth20Token;
+import org.openstreetmap.josm.data.oauth.OAuthVersion;
+import org.openstreetmap.josm.gui.widgets.HtmlPanel;
+import org.openstreetmap.josm.io.DefaultProxySelector;
+import org.openstreetmap.josm.io.OsmApi;
+import org.openstreetmap.josm.io.auth.AbstractCredentialsAgent;
+import org.openstreetmap.josm.io.auth.CredentialsAgentException;
+import org.openstreetmap.josm.spi.preferences.Config;
+
+/**
+ * The native password manager credentials agent
+ */
+public class NPMCredentialsAgent extends AbstractCredentialsAgent {
+
+    private KeyringProvider provider;
+    private final NPMType type;
+    
+    /**
+     * Cache the results since there might be pop-ups and password prompts from
+     * the native manager. This can get annoying, if it shows too often.
+     * <br>
+     * Yes, there is another cache in AbstractCredentialsAgent. It is used
+     * to avoid prompting the user for login multiple times in one session,
+     * when they decide not to save the credentials.
+     * In contrast, this cache avoids read request the backend in general.
+     */
+    private final Map<RequestorType, PasswordAuthentication> credentialsCache = new EnumMap<>(RequestorType.class);
+
+
+    /**
+     * Create a new {@link NPMCredentialsAgent}
+     * @param type The backend storage type
+     */
+    public NPMCredentialsAgent(NPMType type) {
+        this.type = type;
+    }
+    
+    private KeyringProvider getProvider() {
+        if (provider == null) {
+            provider = type.getProvider();
+        }
+        return provider;
+    }
+    
+    protected String getServerDescriptor() {
+        String pref = Preferences.main().getPreferenceFile().getAbsolutePath();
+        
+        String url =  Config.getPref().get("osm-server.url", null);
+        if (url == null) {
+            url = Config.getUrls().getDefaultOsmApiUrl();
+        }
+        
+        CRC32 id = new CRC32();
+        id.update((pref+"/"+url).getBytes(StandardCharsets.UTF_8));
+        
+        String hash = Integer.toHexString((int)id.getValue());
+
+        return "JOSM.native-password-manager-plugin.api."+hash;
+    }
+    
+    protected String getProxyDescriptor() {
+        String pref = Preferences.main().getPreferenceFile().getAbsolutePath();
+        String host = Config.getPref().get(DefaultProxySelector.PROXY_HTTP_HOST, "");
+        String port = Config.getPref().get(DefaultProxySelector.PROXY_HTTP_PORT, "");
+        
+        CRC32 id = new CRC32();
+        id.update((pref+"/"+host+"/"+port).getBytes(StandardCharsets.UTF_8));
+
+        String hash = Integer.toHexString((int)id.getValue());
+
+        return "JOSM.native-password-manager-plugin.proxy."+hash;
+    }
+    
+    protected String getOAuthDescriptor() {
+        String pref = Preferences.main().getPreferenceFile().getAbsolutePath();
+        // TODO: put more identifying data here
+        
+        CRC32 id = new CRC32();
+        id.update(pref.getBytes(StandardCharsets.UTF_8));
+
+        String hash = Integer.toHexString((int)id.getValue());
+
+        return "JOSM.native-password-manager-plugin.oauth."+hash;
+    }
+    
+    @Override
+    public PasswordAuthentication lookup(RequestorType rt, String host) {
+        PasswordAuthentication cache = credentialsCache.get(rt);
+        if (cache != null) 
+            return cache;
+        String user;
+        char[] password;
+        PasswordAuthentication auth;
+        switch(rt) {
+            case SERVER:
+                if(OsmApi.getOsmApi().getHost().equals(host)) {
+                    user = stringNotNull(getProvider().read(getServerDescriptor()+".username"));
+                    password = getProvider().read(getServerDescriptor()+".password");
+                } else {
+                    user = stringNotNull(getProvider().read(host+".username"));
+                    password = getProvider().read(host+".password");
+                }
+                auth = new PasswordAuthentication(user, password == null ? new char[0] : password);
+                break;
+            case PROXY:
+                user = stringNotNull(getProvider().read(getProxyDescriptor()+".username"));
+                password = getProvider().read(getProxyDescriptor()+".password");
+                auth = new PasswordAuthentication(user, password == null ? new char[0] : password);
+                break;
+            default: throw new IllegalStateException();
+        }
+        credentialsCache.put(rt, auth);
+        return auth;
+    }
+
+    @Override
+    public void store(RequestorType rt, String host, PasswordAuthentication credentials) {
+        char[] username, password;
+        if (credentials == null) {
+            username = null;
+            password = null;
+        } else {
+            username = credentials.getUserName() == null ? null : credentials.getUserName().toCharArray();
+            password = credentials.getPassword();
+        }
+        if (username != null && username.length == 0) {
+            username = null;
+        }
+        // password could be empty string in theory, so don't set to null if empty
+        String prefix, usernameDescription, passwordDescription;
+        switch(rt) {
+            case SERVER:
+                if(OsmApi.getOsmApi().getHost().equals(host)) {
+                    prefix = getServerDescriptor();
+                    usernameDescription = tr("JOSM/OSM API/Username");
+                    passwordDescription = tr("JOSM/OSM API/Password");
+                } else {
+                    prefix = host;
+                    usernameDescription = tr("{0}/Username", host);
+                    passwordDescription = tr("{0}/Password", host);
+                }
+                break;
+            case PROXY:
+                prefix = getProxyDescriptor();
+                usernameDescription = tr("JOSM/Proxy/Username");
+                passwordDescription = tr("JOSM/Proxy/Password");
+                break;
+            default: throw new IllegalStateException();
+        }
+        if (username == null) {
+            getProvider().delete(prefix+".username");
+            getProvider().delete(prefix+".password");
+            credentialsCache.remove(rt);
+        } else {
+            getProvider().save(prefix+".username", username, usernameDescription);
+            if (password == null) {
+                getProvider().delete(prefix+".password");
+            } else {
+                getProvider().save(prefix+".password", password, passwordDescription);
+            }
+            credentialsCache.put(rt, new PasswordAuthentication(stringNotNull(username), password != null ? password : new char[0]));
+        }
+    }
+
+    @Override
+    public IOAuthToken lookupOAuthAccessToken(String host) throws CredentialsAgentException {
+        String prolog = getOAuthDescriptor();
+        OAuthVersion[] versions = OAuthVersion.values();
+        // Prefer newer OAuth protocols
+        for (int i = versions.length - 1; i >= 0; i--) {
+            OAuthVersion version = versions[i];
+            char[] tokenObject = getProvider().read(prolog + ".object." + version + "." + host);
+            char[] parametersObject = getProvider().read(prolog + ".parameters." + version + "." + host);
+            if (version == OAuthVersion.OAuth20 // There is currently only an OAuth 2.0 path
+                    && tokenObject != null && tokenObject.length > 0
+                    && parametersObject != null && parametersObject.length > 0) {
+                OAuth20Parameters oAuth20Parameters = new OAuth20Parameters(stringNotNull(parametersObject));
+                try {
+                    return new OAuth20Token(oAuth20Parameters, stringNotNull(tokenObject));
+                } catch (OAuth20Exception e) {
+                    throw new CredentialsAgentException(e);
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public void storeOAuthAccessToken(String host, IOAuthToken accessToken) {
+        String prolog = getOAuthDescriptor();
+        if (accessToken == null) {
+            // Assume all oauth tokens must be removed
+            for (OAuthVersion version : OAuthVersion.values()) {
+                getProvider().delete(prolog + ".object." + version + "." + host);
+                getProvider().delete(prolog + ".parameters." + version + "." + host);
+            }
+        } else {
+            OAuthVersion oauthType = accessToken.getOAuthType();
+            getProvider().save(prolog + ".object." + oauthType + "." + host,
+                    accessToken.toPreferencesString().toCharArray(),
+                    tr("JOSM/OAuth/{0}/Token", URI.create(host).getHost()));
+            getProvider().save(prolog + ".parameters." + oauthType + "." + host,
+                    accessToken.getParameters().toPreferencesString().toCharArray(),
+                    tr("JOSM/OAuth/{0}/Parameters", URI.create(host).getHost()));
+        }
+    }
+
+    private static String stringNotNull(char[] charData) {
+        if (charData == null)
+            return "";
+        return String.valueOf(charData);
+    }
+
+    @Override
+    public Component getPreferencesDecorationPanel() {
+        HtmlPanel pnlMessage = new HtmlPanel();
+        HTMLEditorKit kit = (HTMLEditorKit)pnlMessage.getEditorPane().getEditorKit();
+        kit.getStyleSheet().addRule(".warning-body {background-color:rgb(253,255,221);padding: 10pt;" +
+                "border-color:rgb(128,128,128);border-style: solid;border-width: 1px;}");
+        StringBuilder text = new StringBuilder();
+        text.append("<html><body><p class=\"warning-body\"><strong>")
+                .append(tr("Native Password Manager Plugin"))
+                .append("</strong><br>")
+                .append(tr("The username and password is protected by {0}.", type.getName()));
+        List<String> sensitive = new ArrayList<>();
+        if (Config.getPref().get("osm-server.username", null) != null) {
+            sensitive.add(tr("username"));
+        }
+        if (Config.getPref().get("osm-server.password", null) != null) {
+            sensitive.add(tr("password"));
+        }
+        if (Config.getPref().get(DefaultProxySelector.PROXY_USER, null) != null) {
+            sensitive.add(tr("proxy username"));
+        }
+        if (Config.getPref().get(DefaultProxySelector.PROXY_PASS, null) != null) {
+            sensitive.add(tr("proxy password"));
+        }
+        if (Config.getPref().get("oauth.access-token.key", null) != null) {
+            sensitive.add(tr("oauth key"));
+        }
+        if (Config.getPref().get("oauth.access-token.secret", null) != null) {
+            sensitive.add(tr("oauth secret"));
+        }
+        List<String> otherKeys = Config.getPref().getSensitive().stream().sorted().collect(Collectors.toList());
+        // Remove keys for which we have specific translated texts
+        otherKeys.removeAll(Arrays.asList("osm-server.username", "osm-server.password",
+                DefaultProxySelector.PROXY_USER, DefaultProxySelector.PROXY_PASS,
+                "oauth.access-token.key", "oauth.access-token.secret"));
+        sensitive.addAll(otherKeys);
+        if (!sensitive.isEmpty()) {
+            text.append(tr("<br><strong>Warning:</strong> There may be sensitive data left in your preference file. ({0})",
+                    String.join(", ", sensitive)));
+        }
+        pnlMessage.setText(text.toString());
+        return pnlMessage;
+    }
+    
+    @Override
+    public String getSaveUsernameAndPasswordCheckboxText() {
+        return tr("Save user and password ({0})", type.getName());
+    }
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgentFactory.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgentFactory.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgentFactory.java	(revision 36424)
@@ -0,0 +1,24 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.npm;
+
+import org.openstreetmap.josm.io.auth.CredentialsAgent;
+import org.openstreetmap.josm.io.auth.CredentialsManager.CredentialsAgentFactory;
+
+public class NPMCredentialsAgentFactory implements CredentialsAgentFactory {
+    private CredentialsAgent instance;
+        
+    private NPMType type;
+
+    public NPMCredentialsAgentFactory(NPMType type) {
+        this.type = type;
+    }
+
+    @Override
+    public CredentialsAgent getCredentialsAgent() {
+        if (instance == null) {
+            instance = new NPMCredentialsAgent(type);
+        }
+        return instance;
+    }
+
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMPlugin.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMPlugin.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMPlugin.java	(revision 36424)
@@ -0,0 +1,51 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.npm;
+
+import java.awt.GraphicsEnvironment;
+
+import javax.swing.SwingUtilities;
+
+import org.openstreetmap.josm.io.auth.CredentialsManager;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginInformation;
+import org.openstreetmap.josm.spi.preferences.Config;
+
+public class NPMPlugin extends Plugin {
+    
+    public final static String NPMPLUGIN_KEY = "plugins.native-password-manager.";
+    
+    public NPMPlugin(PluginInformation info) {
+        super(info);
+        initialize();
+    }
+    
+    private void initialize() {
+        String pref = Config.getPref().get(NPMPLUGIN_KEY+"agent", null);
+        if ("off".equals(pref)) return;
+        NPMType sel = NPMType.fromPrefString(pref);
+        if (sel != null) {
+            CredentialsManager.registerCredentialsAgentFactory(
+                    new NPMCredentialsAgentFactory(sel)
+            );
+        } else if (!GraphicsEnvironment.isHeadless()) {
+            SwingUtilities.invokeLater(new Runnable() {
+                @Override
+                public void run() {
+                        final InitializationWizard wizard = new InitializationWizard();
+                        wizard.showDialog();
+                }
+            });
+        }
+    }
+
+    public static void selectAndSave(NPMType type) {
+        CredentialsManager.registerCredentialsAgentFactory(
+                new NPMCredentialsAgentFactory(type)
+        );
+        Config.getPref().put(NPMPLUGIN_KEY+"agent", type.toPrefString());
+    }
+    
+    public static void turnOffPermanently() {
+        Config.getPref().put(NPMPLUGIN_KEY+"agent", "off");
+    }
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMType.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMType.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/NPMType.java	(revision 36424)
@@ -0,0 +1,98 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.npm;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.Objects;
+
+import org.netbeans.modules.keyring.gnome.GnomeProvider;
+import org.netbeans.modules.keyring.kde.KWalletProvider;
+import org.netbeans.modules.keyring.mac.MacProvider;
+import org.netbeans.spi.keyring.KeyringProvider;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
+
+public enum NPMType {
+    PLAIN(
+            "josm-standard",
+            null,
+            "default",
+            tr("Plain text, JOSM default")
+    ),
+    GNOME_KEYRING(
+            "gnome-keyring",
+            GnomeProvider.class,
+            "gnome-keyring",
+            tr("Use {0}", "gnome-keyring")
+    ),
+    KWALLET(
+            "kwallet",
+            KWalletProvider.class,
+            "KWallet",
+            tr("Use {0}", "KWallet")),
+    KEYCHAIN(
+            "keychain",
+            MacProvider.class,
+            "Apple Keychain",
+            tr("Use {0}", "Mac OS X Keychain")),
+    CRYPT32(
+            "crypt32", 
+            Win32Provider.class,
+            "Windows data encryption",
+            tr("Encrypt data with Windows logon credentials")
+    );
+
+    private static String genericIntro(String name) {
+        return tr("The native password manager plugin detected {0} on your system.", name);
+    }
+
+    private final String prefString;
+    private final String name;
+    private final KeyringProvider provider;
+    private final String introText;
+    private final String selectionText;
+
+    NPMType(String prefString, Class<? extends KeyringProvider> providerClass, String name, String selectionText) {
+        this.prefString = prefString;
+        if (providerClass != null) {
+            try {
+                this.provider = providerClass.getDeclaredConstructor().newInstance();
+            } catch (IllegalArgumentException | ReflectiveOperationException | SecurityException ex) {
+                throw new JosmRuntimeException(ex);
+            }
+        } else {
+            this.provider = null;
+        }
+        this.name = name;
+        this.introText = genericIntro(name);
+        this.selectionText = selectionText;
+    }
+
+    public static NPMType fromPrefString(String pref) {
+        for (NPMType t : NPMType.values()) {
+            if (Objects.equals(pref, t.prefString)) {
+                return t;
+            }
+        }
+        return null;
+    }
+
+    public String toPrefString() {
+        return prefString;
+    }
+
+    public String getSelectionText() {
+        return selectionText;
+    }
+
+    public String getIntroText() {
+        return introText;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public KeyringProvider getProvider() {
+        return provider;
+    }
+}
Index: /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/Win32Provider.java
===================================================================
--- /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/Win32Provider.java	(revision 36424)
+++ /applications/editors/josm/plugins/native_password_manager/src/org/openstreetmap/josm/plugins/npm/Win32Provider.java	(revision 36424)
@@ -0,0 +1,29 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.npm;
+
+import org.netbeans.modules.keyring.fallback.FallbackProvider;
+import org.netbeans.modules.keyring.win32.Win32Protect;
+import org.openstreetmap.josm.spi.preferences.Config;
+
+public class Win32Provider extends FallbackProvider {
+    
+    private static class JOSMPreferences implements IPreferences {
+    
+        @Override public byte[] getByteArray(String key, byte[] def) {
+            String p = Config.getPref().get(key, null);
+            return p == null ? def : DatatypeConverter._parseBase64Binary(p);
+        }
+
+        @Override public void putByteArray(String key, byte[] val) {
+            Config.getPref().put(key, val == null ? null : DatatypeConverter._printBase64Binary(val));
+        }
+
+        @Override public void remove(String key) {
+            Config.getPref().put(key, null);
+        }
+    }
+    
+    public Win32Provider() {
+        super(new Win32Protect(), new JOSMPreferences());
+    }
+}
Index: /applications/editors/josm/plugins/pom.xml
===================================================================
--- /applications/editors/josm/plugins/pom.xml	(revision 36423)
+++ /applications/editors/josm/plugins/pom.xml	(revision 36424)
@@ -81,5 +81,5 @@
   <modules>
     <module>../core/nodist/pom.xml</module>
-    <module>addrinterpolation</module>
+    <module>AddrInterpolation</module>
     <module>alignways</module>
     <module>apache-commons</module>
@@ -116,9 +116,9 @@
     <module>imagery_cachexport</module>
     <module>imagery_offset_db</module>
-    <module>imagewaypoint</module>
+    <module>ImageWayPoint</module>
     <module>ImportImagePlugin</module>
     <module>importvec</module>
     <module>indoor_sweepline</module>
-    <module>infomode</module>
+    <module>InfoMode</module>
     <module>jackson</module>
     <module>jaxb</module>
@@ -150,12 +150,12 @@
     <module>reltoolbox</module>
     <module>reverter</module>
-    <module>roadsigns</module>
+    <module>RoadSigns</module>
     <module>routes</module>
     <module>routing</module>
     <module>SaudiNationalAddress</module>
     <module>sds</module>
-    <module>seachart</module>
+    <module>SeaChart</module>
     <module>seachartedit</module>
-    <module>simplifyarea</module>
+    <module>SimplifyArea</module>
     <module>smed</module>
     <module>splinex</module>
@@ -165,6 +165,6 @@
     <module>terracer</module>
     <module>touchscreenhelper</module>
-    <module>tracer</module>
-    <module>tracer2</module>
+    <module>Tracer</module>
+    <module>Tracer2</module>
     <module>turnlanes</module>
     <module>turnrestrictions</module>
@@ -486,5 +486,5 @@
       <modules>
         <module>javafx</module>
-        <module>imageio</module>
+        <module>ImageIo</module>
         <module>pmtiles</module>
       </modules>
